Linux我们当做代理服务器的时候通常需要配置中转访问设置,iptables可以帮助我们完成这项工作,并且同时支持TCP与UDP。


iptable配置

开启防火墙的IPV4转发

echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

相同端口的转发

iptables -t nat -A PREROUTING  -p tcp                      --dport ${port} -j DNAT --to-destination ${target_ip}
iptables -t nat -A PREROUTING  -p udp                      --dport ${port} -j DNAT --to-destination ${target_ip}
iptables -t nat -A POSTROUTING -p tcp -d ${target_ip} --dport ${port} -j SNAT --to-source ${current_ip}
iptables -t nat -A POSTROUTING -p udp -d ${target_ip} --dport ${port} -j SNAT --to-source ${current_ip}

其中target_ip要替换成目标服务器的IP,也就是本服务器流量转发的目的服务器的IP。 current_ip处就是填写本服务器的IP,port为转发的端口号。只需要本机添加配置即可。


对于不同端口的转发

iptables -t nat -A PREROUTING  -p tcp -m tcp                      --dport ${current_port}      -j DNAT --to-destination ${target_ip}:${target_port}
iptables -t nat -A PREROUTING  -p udp -m udp                      --dport ${current_port}      -j DNAT --to-destination ${target_ip}:${target_port}
iptables -t nat -A POSTROUTING -p tcp -m tcp -d ${target_ip} --dport ${target_port} -j SNAT --to-source ${current_ip}
iptables -t nat -A POSTROUTING -p udp -m udp -d ${target_ip} --dport ${target_port} -j SNAT --to-source ${current_ip}

其中current_iptarget_ip与上面情况意义相同,current_port代表本机转发端口,target_port代表转发流量的目的主机的端口号。


保存iptables设置

service iptables save

查看与删除NAT规则

查看

iptables -t nat -vnL POSTROUTING
iptables -t nat -vnL PREROUTING

通过上面的查看规则命令,查看规则后,确定你要删除的规则的顺序,下面的命令是删除 第一个 规则。

iptables -t nat -D POSTROUTING 1
iptables -t nat -D PREROUTING 1
Last modification:April 9th, 2022 at 08:25 pm