在这个答案中,如何使用 (g)ufw 在 ubuntu 中打开一系列端口,给出了打开一系列端口的简单命令。
例如,使用此命令我可以非常轻松地为本地机器上的防火墙打开端口 1000-1999。
但是,现在我想在本地机器上设置端口转发,以便:
- 端口 1001 转发到端口 1
- 端口 1002 转发到端口 2
- 端口 1003 转发到端口 3
- ... ETC -
有人有一个简单的 bash 脚本可以做到这一点吗?
我必须为本地网络上的多台机器执行此操作。路由器的限制使这变得比实际更困难。
因此,对于机器 A,路由器上的端口 1000-1999 将打开以链接到机器 A。在机器 A 上,它们将被转发到传统端口。对于机器 B,将使用路由器上的端口 2000-2999(本地映射到适当的端口)。等等
答案1
[大部分内容来自互联网]
启用 IP 转发:
sysctl net.ipv4.ip_forward=1
使用“nat”表转发流量:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination X.X.X.X:80
不要忘记 HTTPS:
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination X.X.X.X:443
要求 iptables 进行伪装:
iptables -t nat -A POSTROUTING -j MASQUERADE
....如果您希望对某个范围内的每个端口都进行此操作,我建议做类似的事情:
#!/bin/bash
y=0; //first port to map to = 1, but y++ happens before mapping, so 0
for i in {2000..2999}
do
((y++));
echo "forwarding port $i to port $y";
iptables -t nat -A PREROUTING -p tcp --dport $i -j DNAT --to-destination X.X.X.X:$y;
done
笔记:
- 系统端口 1-1000 是保留的,因此上述脚本不是一个好主意;)
- 当然,用 localhost 或任何你想要 na-forward 的地方替换 XXXX