我有一台带有 Zentyal 3.03 (Ubuntu 12.04) LTS 的服务器。它有3个网络设备:
- eth0 - dhcp 快速互联网(我付费)
- eth1 - 静态慢速互联网(学校免费)
- eth2-局域网
我可以通过 SSH 访问服务器,但无法从外部访问 LAN 服务器。我已经为端口 80 设置了端口转发,但没有任何意义。
我用了:
sudo iptables -A FORWARD -p tcp -i eth1 --sport 8888 -o eth2 -d 192.168.1.90 -dport 8888 -j ALLOW
我不知道什么可以帮助您,请询问向您展示什么。
请帮助我,不要将我带到另一个 stackexchange 网站。 (这已经是第四次了)
答案1
你的思考方向是正确的,但使用了一些错误的规则。
$ iptables -t nat -A PREROUTING -p tcp -d your_static_ip_of_eth1 \
--dport 8888 -j DNAT --to-destination 192.168.1.90:8888
此规则将把到达您的服务器的目标端口 8888 和其 eth1 接口的目标 IP 的所有流量转发到您的内部 Web 服务器。如果您希望更改它以便您的服务器在端口上响应,80
请替换该选项的端口号--dport
。如果您想更改网络服务器的端口,请更改--to-destination
选项的端口。
我假设您使用正确的 iptables 规则集来保护您的系统,但为了完整起见,还请考虑以下规则:
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth2 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -o eth0 -j ACCEPT
-A FORWARD -o eth1 -j ACCEPT
-A FORWARD -i eth2 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
此外,您还需要启用 ipv4 路由,因此编辑 /etc/ufw/sysctl.conf 并取消注释:
net/ipv4/ip_forward=1