利用 iptables 实现中继(中转/端口转发)加速

老兄 发布于 2019-12-14


利用 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