我正在尝试配置一个 ubuntu 服务器,以将互联网访问从 eth0 共享到 eth1 上的客户端系统,但我只想允许端口 1688 上的访问,并解析主机名,同时阻止所有其他进出流量。我不确定实现此目的需要哪些 IPTable 规则,希望得到任何帮助。
[外部] <--- 端口 1688 上的流量 ---> {eth0}[Ubuntu 11.10 服务器]{eth1} <-----> [客户端系统]
答案1
为了正确执行此操作,您确实需要学习 iptables,以便能够解决可能出现的任何问题。否则,iptables 可能会成为您的“黑匣子”,因为您不了解如何使用它,并向自己证明问题不是使用 iptables。不过不要气馁,学习 iptables 的基础知识其实并不难,如果您感兴趣,有很多不同的教程、操作方法和手册,介绍您可以用 iptables 在您的控制下完成的奇妙事情(谷歌搜索“颠倒互联网”是一个有趣的例子)。
您要做的事情只需 3 个简单的步骤。
1) 向链中附加/插入一条规则FORWARD
以接受 TCP 端口 1688。如果您也需要 UDP 访问,请添加类似的规则,但针对 UDP。
2)附加/插入规则以将 TCP 和 UDP 端口 53 接受到FORWARD
链中。
3)将链上的默认策略设置FORWARD
为DROP。
在完成了 iptables 的基础速成课程之后,这应该相当容易,不要被潜在的复杂性所吓倒,因为你不需要了解任何内容,这都是基础知识。
答案2
您需要将您的服务器设置为这两个网络之间的路由器和防火墙。
FORWARD
因此,请在服务器中设置防火墙规则,以仅允许1688/tcp
和通过路由器中的防火墙。并为 或 设置默认策略53/udp
。尝试使用类似53/tcp
FORWARD
DROP
DENY
联邦快递或者岸墙设置防火墙。这比iptables
直接使用要容易得多。
无论如何,如果您iptables
直接使用,则必须手动更改/etc/sysctl.conf
文件中的内容(或在中添加新文件/etc/sysctl.conf.d/
),以便您的计算机开始在两个网络之间路由 IP 消息。查找以net.ipv4.ip_forward=1
解决该问题。
可以在 Ubuntu wiki 中找到很好的说明。