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_ip
与target_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
iptables -t nat -D POSTROUTING 1
iptables -t nat -D PREROUTING 1
最后一个没换行