VPN技术 · 2023年11月10日 0

TCP和UDP端口转发配置方法

TCP与UDP端口转发配置指南

IPTABLES TCP与UDP端口转发(网络加速)

使用IPTABLES进行端口转发具有较低的系统资源消耗和高并发速度的优点,有效改善网络连接质量问题。

优点:TCP与UDP端口转发

IPTABLES安装

在CentOS上:

yum install iptables -y

在Ubuntu/Debian上:

apt install iptables -y

配置IPV4转发

vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

配置iptables在启动时加载

对于CentOS:

service iptables save
chkconfig --level 2345 iptables on

对于Debian/Ubuntu:

iptables-save > /etc/iptables.up.rules
echo -e #!/bin/bashn/sbin/iptables-restore < /etc/iptables.up.rules > /etc/network/if-pre-up.d/iptables
chmod +x /etc/network/if-pre-up.d/iptables

检查本地机器上网络卡绑定的IP

ifconfig

例如,我的服务器eth0网络卡绑定的IP是172.27.0.5(内部IP)

单端口转发

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]

例如,假设您的外部服务器(中转服务器)是1.1.1.1,SS端口是10000,而您当前操作的VPS(中转服务器)的主网络卡绑定IP是2.2.2.2。

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000 -j DNAT --to-destination 1.1.1.1:10000
iptables -t nat -A PREROUTING -p udp -m udp --dport 10000 -j DNAT --to-destination 1.1.1.1:10000
iptables -t nat -A POSTROUTING -d 1.1.1.1 -p tcp -m tcp --dport 10000 -j SNAT --to-source 2.2.2.2
iptables -t nat -A POSTROUTING -d 1.1.1.1 -p udp -m udp --dport 10000 -j SNAT --to-source 2.2.2.2

不同端口转发

将本地服务器的10000端口(中转服务器2.2.2.2)转发至目标IP的30000端口(中转服务器1.1.1.1)

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000 -j DNAT --to-destination 1.1.1.1:30000
iptables -t nat -A PREROUTING -p udp -m udp --dport 10000 -j DNAT --to-destination 1.1.1.1:30000
iptables -t nat -A POSTROUTING -d 1.1.1.1 -p tcp -m tcp --dport 30000 -j SNAT --to-source 2.2.2.2
iptables -t nat -A POSTROUTING -d 1.1.1.1 -p udp -m udp --dport 30000 -j SNAT --to-source 2.2.2.2

在这种情况下,当在客户端填写Shadowsocks信息时,应填写端口10000而不是30000。

多端口转发

1. 相同端口转发

将本地服务器的10000~30000端口(中转服务器2.2.2.2)转发至目标IP的10000~30000端口(中转服务器1.1.1.1)

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000:30000 -j DNAT --to-destination 1.1.1.1:10000-30000
iptables -t nat -A PREROUTING -p udp -m udp --dport 10000:30000 -j DNAT --to-destination 1.1.1.1:10000-30000
iptables -t nat -A POSTROUTING -d 1.1.1.1 -p tcp -m tcp --dport 10000:30000 -j SNAT --to-source 2.2.2.2
iptables -t nat -A POSTROUTING -d 1.1.1.1 -p udp -m udp --dport 10000:30000 -j SNAT --to-source 2.2.2.2

在这种情况下,当在客户端填写Shadowsocks信息时,账户配置和端口应保持不变,只需更改IP为中转服务器IP。

不同端口转发

将本地服务器的10000~20000端口(中转服务器2.2.2.2)转发至目标IP的30000~40000端口(中转服务器1.1.1.1)

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000:20000 -j DNAT --to-destination 1.1.1.1:30000-40000
iptables -t nat -A PREROUTING -p udp -m udp --dport 10000:20000 -j DNAT --to-destination 1.1.1.1:30000-40000
iptables -t nat -A POSTROUTING -d 1.1.1.1 -p tcp -m tcp --dport 30000:40000 -j SNAT --to-source 2.2.2.2
iptables -t nat -A POSTROUTING -d 1.1.1.1 -p udp -m udp --dport 30000:40000 -j SNAT --to-source 2.2.2.2

在这种情况下,当在客户端填写Shadowsocks信息时,端口应填写为10000~20000而不是30000~40000。

保存iptables配置

修改后请记得保存iptables配置,以免重启后丢失。

在CentOS上:

service iptables save

在Debian/Ubuntu上:

iptables-save > /etc/iptables.up.rules

查看NAT规则

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

删除NAT规则

在使用“查看NAT规则”命令检查规则后,确定要删除规则的顺序,可使用以下命令删除首条规则。

iptables -t nat -D POSTROUTING 1
iptables -t nat -D PREROUTING 1

以下是一键脚本:

请使用“ifconfig”命令检查本地VPS上绑定的IP。某些可能具有内部IP,而其他可能具有外部IP。

TCP和UDP端口转发配置方法
TCP和UDP端口转发配置方法

一键脚本命令如下:

wget -N --no-check-certificate https://raw.githubusercontent.com/xiaohouzivpn/script/master/iptables-pf.sh && chmod +x iptables-pf.sh && bash iptables-pf.sh