我在 Ubuntu 12.04 下遇到静态 IP 问题。
使用 DHCP 我没有问题,但是当我设置(在/etc/network/interfaces
)静态地址、网关、子网掩码和 dns-nameservers 时,我发现服务器无法连接到外部世界。
它只能连接到本地 IP 主机。
我试图在其中插入名称服务器,/etc/resolv.conf
但每次我重新启动机器时,更改都会被取消。
可能是什么问题呢?
Ubuntu 12.04 使用 resolvconf(一组脚本和挂钩)而不是 resolv.conf 来管理 DNS 服务器。对用户来说最显着的区别是任何手动对 /etc/resolv.conf 所做的更改都将丢失,因为下次触发 resolvconf 时它会被覆盖。
要在 resolv.conf 文件中添加静态 dns 条目,请编辑/etc/resolvconf/resolv.conf.d/base
:
添加这些行(下面的示例是 OpenDNS 的公共名称服务器):
nameserver 208.67.222.222
nameserver 208.67.220.220
运行此命令以刷新 resolvconf 设置:
sudo service resolvconf restart
要查看您的 DNS 服务器地址,请使用以下命令:
cat /etc/resolv.conf
首先:检查您是否有正确的配置: - 尝试 ping 您的网关,是否有效?如果没有,请检查您的网关 IP。- 尝试 ping 8.8.8.8(Google 的 DNS) - 可以吗?如果不是,请使用以下之一检查您的路由:
mtr 8.8.8.8
或者
tracepath -n 8.8.8.8
并检查路由在哪一跳停止。
关于 DNS 名称:请添加到 /etc/network/interfaces 行:
dns-nameservers Your_DNS_IP_address
I dunno about you, but I don't like using the resolv.conf
file. I prefer to set the nameserver to read my routers and typically I'll use Google's 8.8.8.8 or 8.8.4.4 name servers.
Here's a small guide I found if anyone is interested.
尝试这个:
sudo vim /etc/NetworkManager/NetworkManager.conf
并评论该dns=dnsmasq
行,然后执行:
sudo restart network-manager
这个问题有一个线程在这里:
https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/989900
各种进程会覆盖 /etc/resolv.conf(dhcpd、networkmanager 等)。我怀疑这是你看到的问题。我建议几个选项:
不要将名称服务器添加到“/etc/resolv.conf”,而是将它们添加到“/etc/resolv.conf.head”。“/etc/resolv.conf.head”的内容将自动添加到自动生成的内容之前。根据您的选项,您可能希望使用“/etc/resolv.conf.tail”在文件末尾添加您的设置。无论哪种方式,这都应该用您的固定设置覆盖任何自动生成的设置。
写保护 /etc/resolv.conf 以防止您的更改被另一个守护程序覆盖(在您进行更改之后):
$ sudo chattr +i /etc/resolv.conf
很可能是 dhcpd 正在修改 /etc/resolv.conf,而您忘记禁用它。删除(或禁用)dhcpd,使其不会修改 /etc/resolv.conf。去除:
$ sudo apt-get remove isc-dhcp-client
使用 auditd 确定哪个守护进程正在修改 /etc/resolv.conf:
$ sudo auditctl -w /etc/resolv.conf -p w
日志位于 /var/log/audit/audit.log 中。您可以看到文件被修改的日期/时间以及修改它的程序(采取纠正措施)。
我们在旧的 HP 终端和 Ubuntu 12.04 上遇到了同样的问题,要使用静态 IP,我们必须在 /etc/network/interfaces 中使用“手动”标志并模拟 ifconfig-input。
auto eth1
iface eth1 inet manual
up ifconfig eth1 <IP> netmask <IP> broadcast <IP> up
up route add default gw <IP>
一个奇怪的解决方案,但使用最少的巫毒来解决这个问题。