我的 Linux 机器当前有一个网络接口,允许我连接到不同子网上的网络。我通过在网络接口启动时修改路由表来实现这一点。 “远程”网络还有一个 DNS 服务器,因此我想在启用接口时将其添加到我的 /etc/resolv.conf 文件中。
我的/etc/network/interfaces
文件目前有以下内容:
# Secondary network interface (using NAT)
allow-hotplug eth1
iface eth1 inet dhcp
post-up route add -net 172.16.0.0 netmask 255.255.255.0 gw 10.0.3.2
post-up echo 'Up and running...' >> /home/sysadmin/net-result.txt; date >> /home/sysadmin/net-result.txt
post-up sed -i '1inameserver 172.16.0.1' /etc/resolv.conf
post-down sed -i '/^nameserver 172.16.0.1/d' /etc/resolv.conf
(该行post-up echo...
只是为了证明命令正在运行并且它们可以访问文件系统。)
当我使用命令行来控制界面时,它工作正常。该行ifup eth1
按预期出现(和消失) 。ifdown eth1
nameserver 172.16.0.1
/etc/resolv.conf
但是,由于某种原因,它在系统启动时不起作用。命令route
是正在执行(因为我可以看到路由表中的修改)并且文件/home/sysadmin/net-status.txt
也按预期进行修改,但/etc/resolv.conf
没有更改。
我不知道问题出在哪里。有没有人有什么建议?
(Linux 盒子实际上是一个虚拟机,远程网络是通过 VPN 访问的,但我认为这些细节都与此上下文中的问题无关。)