相信有很多人在用流量转发,比如哪个25元100G的IEPL转发,那么怎么自己实现这种转发呢?用一台服务器转发到另一台服务器。
其实很简单,几行命令搞定,这次俺们用iptables来演示一下。
客户端 --> GFW --> A服务器 --> B服务器(落地) --> YouTube --> 返回客户端
A服务器
以下都在A服务器上操作,也就是转发服务器,白话就是线路好的服务器
首先在服务器上开启tcp转发:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
使其生效:
sysctl -p
好像Debian11以上就弃用了iptables,来安装一下:
apt install iptables -y
假设要把本机A服务器 10010 端口流量转发到B服务器IP 1.2.3.4 的 10086 端口上
在PREROUTING上修改目的地址:
iptables -t nat -A PREROUTING -p tcp --dport 10010 -j DNAT --to-destination 1.2.3.4:10086
在POSTROUTING上修改源地址,以下两条命令二选一:
# 6.7.8.9 是A服务器IP,也就是转发服务器IP
iptables -t nat -A POSTROUTING -d 1.2.3.4 -p tcp --dport 10086 -j SNAT --to 6.7.8.9
# 或者直接用MASQUERADE自动获取源IP,两条命令二选一
iptables -t nat -A POSTROUTING -d 1.2.3.4 -p tcp --dport 10086 -j MASQUERADE
其实上面两条命令就可以用了,为了防止在FORWARD上面被丢弃,添加两条规则允许通过:
iptables -I FORWARD -d 1.2.3.4 -p tcp --dport 10086 -j ACCEPT
iptables -I FORWARD -s 1.2.3.4 -p tcp --sport 10086 -j ACCEPT
补 UDP转发
命令和上面tcp转发稍有不同:
iptables -t nat -A PREROUTING -p udp --dport 10010 -j DNAT --to-destination 1.2.3.4:10086
iptables -t nat -A POSTROUTING -s 1.2.3.4 -p udp --dport 10086 -j MASQUERADE
最后,为了使规则永久生效,不至于重启服务器后丢失,安装个iptables-persistent
apt install iptables-persistent
安装完成后写入规则,这样就不会丢了:
iptables-save > /etc/iptables/rules.v4
上面就是转发服务器上的操作,下面落地服务器就简单了。用法就同大多卖流量转发的一样了。
B服务器
B服务器也就是落地服务器,在B服务器上安装个Shadowsocks就好了,注意端口使用上面转发的10086端口。
安装SS可使用姥爷的一键脚本:
https://github.com/yeahwu/v2ray-wss
客户端
本来B服务器上安装的SS的IP和端口是,IP 1.2.3.4,端口 10086
既然使用了转发,那么客户端只要把IP和端口换成A服务器IP,和转发端口10010,就可以使用了。
后记,删除
删除A服务器上的转发规则,首先查看iptables上nat转发规则:
iptables -t nat -L -n --line-number
记住前面列表编号1或者2,然后删除规则:
iptables -t nat -D POSTROUTING 1
iptables -t nat -D PREROUTING 1
最后删除规则存储文件:
> /etc/iptables/rules.v4