网络转发方案总结

180 阅读1分钟

由于无法直接连通目标服务器和端口,我们需要找一台机器进行网络转发间接达到网络访问的目的,本文将介绍多种实现方案。

方案1:使用socat工具进行转发

参考腾讯文档: cloud.tencent.com/developer/a…

lsof -i:30000
nohup /usr/bin/socat TCP4-LISTEN:30000,reuseaddr,fork TCP4:xxx.xxx.xxx.xxx:3306 &
lsof -i:30000
echo '/usr/bin/socat TCP4-LISTEN:30000,reuseaddr,fork TCP4:xxx.xxx.xxx.xxx:3306 &' >> /etc/rc.d/rc.local

nohup启动进程,关闭shell端口后,程序会继续运行。

socat端口转发,出现转发进程会无故消失的问题,如果你也遇到请使用方案2.

方案2:iptables配置linux内核网络转发

具体操作步骤如下:

  1. 查看现有iptables规则
iptables -nL -t nat

iptables -t nat -nvL --line 

  1. 配置Linux系统的ip转发功能

首先保证硬件连通,然后打开系统的转发功能

less /proc/sys/net/ipv4/ip_forward,该文件内容为0,表示禁止数据包转发,1表示允许,将其修改为1。可使用命令echo "1" > /proc/sys/net/ipv4/ip_forward 修改文件内容,重启网络服务或主机后效果不再。若要其自动执行,可将命令echo "1" > /proc/sys/net/ipv4/ip_forward 写入脚本/etc/rc.d/rc.local 或者 在 /etc/sysconfig/network脚本中添加 FORWARD_IPV4="YES"

sed -i 's/net.ipv4.ip_forward =.*/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
echo 1 > /proc/sys/net/ipv4/ip_forward

  1. 添加iptables路由规则
iptables -t nat -A PREROUTING --dst <代理服务器IP> -p tcp --dport <代理端口> -j DNAT --to-destination <目标IP>:<目标端口>

iptables -t nat -A POSTROUTING --dst <目标IP> -p tcp --dport <目标端口> -j SNAT --to-source <代理服务器IP>

如果配置错误,可通过如下命令删除

iptables -t nat -nvL --line 
iptables -t nat -D PREROUTING 1
iptables -t nat -D POSTROUTING 1
  1. 安装iptables, 并使能
yum install iptables-services 
iptables-save > /etc/sysconfig/iptables 
systemctl enable iptables.service