我正在尝试将 Ubuntu 12.04 设置为路由器,以便可以隔离 IP 子网。对于隔离的子网,仅允许通过端口转发进行连接。除此之外,不允许入站或出站连接。(如果重要的话,我打算使用 Shorewall,而不是自己处理 netfilter 和 iptables。)
昨天我在 /etc/network/interfaces 中尝试了多种可能性,甚至无法让机器在启动过程中不暂停,更不用说工作了。我承认我确实在内核中启用了转发,但我并不认为这会破坏这一点。
以下是我尝试过的:
auto lo
iface lo inet loopback
#net - Internet and normal CS network
#netmask 255.255.0.0
#explicitly listing this slowed down boot?
auto eth0
iface eth0 inet
#loc - this is the security class network (sandbox)
#For simplicity we set it up as full 172.16.0.0/12
#Took out auto because might be causing delay on boot; restore when fast.
#iface eth1 static
# address 172.16.1.1
# netmask 255.240.0.0
# broadcast 172.31.255.255
注释行显示了我最初尝试的选项,但当机器在没有整整一分钟的网络暂停的情况下仍然无法启动时,我放弃了这些选项。我检查了 kern.log,它基本上说网络进程以状态 1 终止,这没什么帮助。
我应该禁用网络管理器吗?我的文件中应该包含什么?除了默认文件之外,我还需要这个文件中的其他内容吗?还是它仅适用于 ifup/ifdown?
附上了我的网络图。抱歉,图有些乱;它本来是供我自己使用的,随着时间的推移而发展起来的。我的 Ubuntu 机器是网络之间的“fw”(防火墙)机器,它在每个网络上都有一个单独的 NIC。我现在正在从头开始设置一台新机器,以防万一。
答案1
好的,我认为我的主要错误是遗漏了第二个适配器上的“inet”。新机器重新启动得很顺利。我认为原来的机器肯定还有另一个问题,它不喜欢上面的缩减文件。
此外,用于测试此文件的一个非常有用的命令(目前?)是:
sudo bash /etc/init.d/networking restart
这已被弃用;从技术上讲,我认为您现在应该对每个接口执行 ifdown 和 ifup。
这是我的 /etc/network/interfaces:
auto lo
iface lo inet loopback
#net
auto eth0
iface eth0 inet dhcp
#loc
auto eth1
iface eth1 inet static
address 172.16.1.1
netmask 255.240.0.0
broadcast 172.31.255.255
network 172.16.1.1
我仍然不知道这个文件是否真的需要,特别是在我设置了shorewall之后。