端口转发的实际使用场景很多,比如说load balance,比如说流量中转
所谓的端口转发,是发生在网络协议的第四层,TCP/UDP层,也就是IP层面
所以一般来说有这么几个解决方案:
iptables: 系统原生底层的解决方案,配置比较麻烦。但是如果使用CSF来配置iptables,这是非常简单的
HAproxy: 性能比iptables高,配置简单,但是只支持TCP,不支持UDP. 但是如果不玩游戏的话,TCP的端口转发就足够了。
因此这篇文章主要讲述如何使用HAProxy来做流量中转.
底层操作系统是CentOS 7,系统的repo自带haproxy,版本比较老(1.5.18)但是足够用了
安装haproxy:
yum install haproxy
systemctl enable hapoxy
配置haproxy:
cd /etc/haproxy mv haproxy.cfg haproxy.cfg.bak vi haproxy.cfg
然后输入下面的配置:
global ulimit-n 51200 log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy pidfile /var/run/haproxy.pid user haproxy group haproxy daemon defaults log global mode tcp option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 maxconn 20480 frontend v2 bind *:443 default_backend v2 backend v2 server v1 A.A.A.A maxconn 20480 frontend rdp bind *:3389 default_backend rdp backend rdp server r1 B.B.B.B maxconn 20480
上图表示把把这台服务器的443端口的流量转到A.A.A.A的443端口上,把这台服务器的3389端口流量转到B.B.B.B的443端口上
配置好以后,下面只需要开启haproxy服务就好了
systemctl start haproxy