我已经按照以下步骤将我的 Ubuntu 服务器设置为路由器和 Web 服务器答案在这里给出。我的面向 ISP 的接口eth0
有一个私有 172.16.xx/30 IP,而我的lo
接口有一个公共 IP,如上面链接问题的答案中所述。设置运行良好。我遇到的唯一障碍是我无法找到一种方法来阻止接口上公共 IP 公开的端口lo
。我试过这样做iptables -A INPUT -i eth0 -j DROP
,但我的服务器失去了与公共网络(互联网)的连接。我无法 ping 任何公共 IP。我想要的是一种方法来阻止接口上公共 IP 公开的端口lo
。此外,我还需要可以将端口(如80
或 openvpn 端口)公开到公共网络的 iptables 规则。
答案1
环回接口永远不应该有除 127.0.0.0/8 之外的任何地址。很可能,为您的设置构建映像的人(可能是 ec2?)将其放入那里是为了方便。环回接口不太可能看到任何公共流量。它可能通过您的 172 地址与您进行网络地址转换……因此,应该将防火墙规则应用于该接口。
答案2
如果我理解您的设置,您的流量将通过 eth0 接口传输并转发到 lo 接口。
您是否尝试过使用 FORWARD 规则代替 INPUT 规则?