端口转发思路
前面我们设置的小鸡网段是172.16.1.1 到 172.16.1.254。
那么基础规则是 172.16.1.D 的内网 IP(此例子 D 最多是 3 位数)
SSH 端口是 61D(D 不足 3 为前面补 0)
可用端口是 1D1 – 1D9(D 不足 3 为前面补 0)
如,我们这次创建的 nat vps 内网 IP: 172.16.1.2,则:
SSH 端口是 61002 可用端口是 10021 – 10029
那么能用的脚本就是:
# 内网 IP 范围,从 172.16.1.2 开始
for D in {2..254}; do
# 计算 SSH 端口(61D),如果 D 不足三位补0
SSH_PORT=$(printf "61%03d" "$D")
# 可用端口范围(1D1 - 1D9),如果 D 不足三位补0
START_PORT=$(printf "1%03d1" "$D")
END_PORT=$(printf "1%03d9" "$D")
# 内网 IP
INTERNAL_IP="172.16.1.$D"
# 设置 DNAT 规则,将外部 SSH 端口转发到对应的内网 IP
iptables -t nat -A PREROUTING -p tcp --dport $SSH_PORT -j DNAT --to-destination $INTERNAL_IP:22
# 设置 DNAT 规则,将外部可用端口范围转发到对应的内网 IP
iptables -t nat -A PREROUTING -p tcp --dport $START_PORT:$END_PORT -j DNAT --to-destination $INTERNAL_IP
# 设置 SNAT 规则,将内网返回的流量伪装为外部接口的 IP
iptables -t nat -A POSTROUTING -s $INTERNAL_IP -j MASQUERADE
done
版权声明:
作者:咸鱼
链接:https://xy.sd/archives/439
文章版权归作者所有,未经允许请勿转载。
THE END