利用 iptables 实现中继(中转/端口转发)加速
iptables配置
CentOS安装并启用iptables
yum install -y iptables iptables-services
systemctl enable iptables
systemctl restart iptables
开启防火墙的ipv4转发
echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.confsysctl -p
sysctl -p
配置iptables开机加载
首先我们设置一下iptables 防火墙的开机启动自动载入规则功能。
CentOS 系统:
service iptables savechkconfig --level 2345 iptables on
Debian/Ubuntu 系统:
iptables-save > /etc/iptables.up.rules
echo -e '#!/bin/bash\n/sbin/iptables-restore < /etc/iptables.up.rules' > /etc/network/if-pre-up.d/iptables
chmod +x /etc/network/if-pre-up.d/iptables
单端口 端口转发
同端口 端口转发
iptables -t nat -A PREROUTING -p tcp --dport [本地端口] -j DNAT --to-destination [目标IP:目标端口]
iptables -t nat -A PREROUTING -p udp --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 POSTROUTING -p udp -d [目标IP] --dport [目标端口] -j SNAT --to-source [本地服务器主网卡绑定IP]
多端口 端口转发
iptables -t nat -A PREROUTING -p tcp -m tcp --dport [本地端口范围] -j DNAT --to-destination [目标IP]:[目标端口范围]
iptables -t nat -A PREROUTING -p udp -m udp --dport [本地端口] -j DNAT --to-destination [目标IP]:[目标端口]
iptables -t nat -A POSTROUTING -d [目标IP]-p tcp -m tcp --dport 10000:30000 -j SNAT --to-source [本地服务器主网卡绑定IP]
iptables -t nat -A POSTROUTING -d [目标IP]-p udp -m udp --dport 10000:30000 -j SNAT --to-source [本地服务器主网卡绑定IP]
端口范围:开始端口:结束端口 列如 100:200
保存iptables配置
修改后记得保存 iptables配置,免得重启后没了。
CentOS 系统:
service iptables save
Debian/Ubuntu 系统:
iptables-save > /etc/iptables.up.rules
查看NAT规则
iptables -t nat -vnL POSTROUTINGiptables -t nat -vnL PREROUTING
删除NAT规则
通过上面的查看规则命令,查看规则后,确定你要删除的规则的顺序,下面的命令是删除 第一个 规则。
iptables -t nat -D POSTROUTING 1iptables -t nat -D PREROUTING 1
如果不是IP,是域名的话,也是可以用iptables吗?
您可以看看这个项目:
https://github.com/arloor/iptablesUtils