在Ubuntu服务器12.04上设置静态IP会导致外部连接丢失

在Ubuntu服务器12.04上设置静态IP会导致外部连接丢失,ubuntu,static,ip,Ubuntu,Static,Ip,我在Ubuntu 12.04下遇到了一个静态IP问题 使用DHCP我没有问题,但当我设置(在/etc/network/interfaces下)静态地址、网关、子网掩码和dns名称服务器时,我发现服务器无法连接到外部世界 它只能连接到本地IP主机 我曾尝试在/etc/resolv.conf中插入名称服务器,但每次重新启动计算机时,更改都被取消 可能是什么问题?首先:检查配置是否正确: -尝试ping你的网关,它工作吗?如果没有,请检查网关IP。 -尝试ping 8.8.8.8(谷歌的DNS)——它

我在Ubuntu 12.04下遇到了一个静态IP问题

使用DHCP我没有问题,但当我设置(在
/etc/network/interfaces
下)静态地址、网关、子网掩码和dns名称服务器时,我发现服务器无法连接到外部世界

它只能连接到本地IP主机

我曾尝试在
/etc/resolv.conf
中插入名称服务器,但每次重新启动计算机时,更改都被取消


可能是什么问题?

首先:检查配置是否正确: -尝试ping你的网关,它工作吗?如果没有,请检查网关IP。 -尝试ping 8.8.8.8(谷歌的DNS)——它能工作吗?如果没有,请使用以下选项之一检查路由:

mtr 8.8.8.8

并检查路由在哪个跃点停止

关于DNS名称:请添加到/etc/network/interfaces行:

dns-nameservers Your_DNS_IP_address

我们在旧的HP终端和Ubuntu12.04上遇到了同样的问题,为了使用静态IP,我们必须使用/etc/network/interfaces.中的“manual”标志并模拟ifconfig输入

auto eth1
iface eth1 inet manual
 up ifconfig eth1 <IP> netmask <IP> broadcast <IP> up
 up route add default gw <IP>
autoeth1
iface eth1 inet手册
向上ifconfig eth1网络掩码广播向上
向上布线添加默认gw

这是一个奇怪的解决方案,但使用了最少的巫毒来解决这个问题。

各种进程覆盖/etc/resolv.conf(dhcpd、networkmanager等)。我想这就是你看到的问题。我想提出几个选择:

  • 与其将名称服务器添加到“/etc/resolv.conf”,不如将它们添加到“/etc/resolv.conf.head”。“/etc/resolv.conf.head”的内容将自动添加到自动生成的内容之前。根据您的选项,您可能希望使用“/etc/resolv.conf.tail”在文件末尾添加设置。无论哪种方式,这都应该用您的固定设置覆盖任何自动生成的设置

  • 编写protect/etc/resolv.conf以防止更改被另一个守护进程覆盖(在您进行更改之后):

    $sudo chattr+i/etc/resolv.conf

  • 很可能是dhcpd正在修改/etc/resolv.conf,而您忘记了禁用它。删除(或禁用)dhcpd,使其不会修改/etc/resolv.conf。删除:

    $sudo apt get remove isc dhcp客户端

  • 使用auditd确定哪个守护进程正在修改/etc/resolv.conf:

    $sudo auditctl-w/etc/resolv.conf-p w


  • 日志位于/var/log/audit/audit.log中。您可以看到文件被修改的日期/时间以及是什么程序修改了它(以采取纠正措施)。

    我不知道您的情况,但我不喜欢使用
    resolv.conf
    文件。我更喜欢设置名称服务器来读取我的路由器,通常我会使用Google的8.8.8.8或8.8.4.4名称服务器

    如果有人感兴趣,我会找到一本小指南

    试试这个:

    sudo vim /etc/NetworkManager/NetworkManager.conf
    
    并注释
    dns=dnsmasq
    行,然后执行以下操作:

    sudo restart network-manager
    
    这里有一个关于这个问题的线索:


    Ubuntu 12.04使用resolvconf(一组脚本和挂钩)而不是resolv.conf来管理DNS服务器。对于用户来说,最显著的区别是,任何手动对/etc/resolv.conf所做的更改都将丢失,因为下次有东西触发resolvconf时,这些更改将被覆盖

    要在resolv.conf文件中添加静态dns条目,请编辑
    /etc/resolvconf/resolv.conf.d/base

    添加以下行(下面的示例是OpenDNS的公共名称服务器):

    运行此命令以刷新resolvconf设置:

    sudo service resolvconf restart
    
    要查看DNS服务器地址,请使用以下命令:

    cat /etc/resolv.conf
    

    哎呀,我把尾巴/头的路径弄错了。它是“/etc/resolvconf/resolv.conf.d/head”或“/etc/resolvconf/resolv.conf.d/tail”。在大多数情况下,您将创建一个“/etc/resolvconf/resolv.conf.d/tail”文件,并在其中添加“nameserver”设置
    sudo service resolvconf restart
    
    cat /etc/resolv.conf