在系统启动时启动网络接口时修改 resolv.conf

在系统启动时启动网络接口时修改 resolv.conf

我的 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 eth1nameserver 172.16.0.1/etc/resolv.conf

但是,由于某种原因,它在系统启动时不起作用。命令route正在执行(因为我可以看到路由表中的修改)并且文件/home/sysadmin/net-status.txt也按预期进行修改,但/etc/resolv.conf没有更改。

我不知道问题出在哪里。有没有人有什么建议?

(Linux 盒子实际上是一个虚拟机,远程网络是通过 VPN 访问的,但我认为这些细节都与此上下文中的问题无关。)

相关内容