Linux端口转发
方案一:iptables[支持TCP][支持UDP]
1、修改/etc/sysctl.conf 中 net.ipv4.ip_forward=1
2、sysctl -p
3、配置转发
1 2 3 4 |
iptables -t nat -A PREROUTING -p tcp --dport [端口号] -j DNAT --to-destination [目标IP] iptables -t nat -A POSTROUTING -p tcp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP] iptables -t nat -A PREROUTING -p udp --dport [端口号] -j DNAT --to-destination [目标IP] iptables -t nat -A POSTROUTING -p udp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP] |
4、重启生效
1 2 |
service iptables save service iptables restart |
方案二:haproxy[支持TCP][支持7层协议: http][负载均衡]
1、安装
1 2 |
yum install haproxy apt install haproxy |
2、配置转发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# vim /etc/haproxy/haproxy.cfg global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon # turn on stats unix socket stats socket /var/lib/haproxy/stats defaults # 转发模式:tcp or http # haproxy默认配置文件为http负载均衡的样例 # 这里介绍TCP转发模式 mode tcp log global option dontlognull option http-server-close option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 frontend mongo-in xxx.xxx.xxx.xxx:3717 default_backend mongo-out backend mongo-out balance roundrobin server mongo1 xxx.xxx.xxx.xxx:3717 check |
方案三:socat[支持TCP][支持UDP]
1、安装
1 2 |
yum install socat apt install socat |
2、配置转发
1 2 |
nohup socat LOCAL-TCP4-LISTEN:30000,reuseaddr,fork REMOTE-TCP4:1.1.1.1:30000 >> socat.log 2>&1 & nohup socat -T 600 LOCAL-UDP4-LISTEN:10000,reuseaddr,fork REMOTE-UDP4:1.1.1.1:10000 >> socat.log 2>&1 & |
说明:
实际端口方案还有多种,例如:rinetd,然而测试的时候rinetd经常性任务死掉。这里推荐使用iptables(更适用于NAT转发)和haproxy进行转发。
端口转发,by: cplusplus.me
2 Replies to “Linux端口转发”
微信公众号收到通知,“经用户投诉,发现此公众号涉嫌违法行为,违反《微信公众平台运营规范》, 违规消息“通过Windows实现端口转发”已删除处理,请遵守规范,让我们共创健康绿色的运营环境。” 这么一篇简单而中性的软件技术文章也被删,腾讯这孙子真是全身都是G点啊。
唉没办法呀。景德镇