为什么我不能为我的 Linux 机器设置静态 IP 地址?

为什么我不能为我的 Linux 机器设置静态 IP 地址?

我正在尝试为我的 Linux 计算机设置一个静态本地 IP 地址,以用于端口转发。根据有关此主题的每份指南,我已相应地编辑了我的/etc/network/interfaces/etc/resolv.conf文件。但是,重新启动后,我所做的任何更改都resolv.conf将被删除,文件为空白(除了警告我这一点的评论)。

结果,我无法解析主机名(ping google.com例如,失败)。事实上,我甚至无法 ping 有效的 IP 地址(“目标主机无法访问”)。

虽然ifconfig似乎反映了我输入的所有设置/etc/network/interfaces,但我无法访问任何互联网,也无法从另一台机器使用 SSH 或 FTP 访问该机器。

这是我的/etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.0.64
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    dns-nameservers 192.168.0.1 8.8.8.8

以下是ifconfig我得到的信息:

eth0      Link encap:Ethernet  HWaddr 00:25:90:57:7c:65
          inet addr:192.168.0.64  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:20 Memory:fba00000-fba20000

eth1      Link encap:Ethernet  HWaddr 00:25:90:57:7c:64
          inet addr:192.168.0.10  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::225:90ff:fe57:7c64/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:252 errors:0 dropped:0 overruns:0 frame:0
          TX packets:106 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:54010 (54.0 KB)  TX bytes:15731 (15.7 KB)
          Interrupt:16 Memory:fb900000-fb920000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:94 errors:0 dropped:0 overruns:0 frame:0
          TX packets:94 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:8088 (8.0 KB)  TX bytes:8088 (8.0 KB)

为什么会发生这种情况?我该如何解决?

答案1

如果你正在使用安装了图形网络管理工具的 Ubuntu 桌面版,那么你应该不是在 /etc/network/interfaces 文件中定义连接。

相反,通过桌面上的 nm-applet 打开连接(或通过nm-connection-editor从终端调用),导航到选项卡,并使用下拉选择框IPv4 settings将连接模式设置为。然后在提供的框中添加所需的 IP 和 DNS 设置。Manual

然后,您应该恢复对 /etc/network/interfaces 文件的所有编辑(以便它只包含lo定义行)并重新启动networkingnetwork-manager服务或重新启动机器。

您还应确保所选的静态 IP 地址不在路由器分配的 DHCP 池中 - 事实上,您可能会发现在计算机上保留 DHCP 配置更简单,并且预订如果路由器支持,则在路由器上为其分配一个特定 IPDHCP 地址保留

如果你确实想保留 GUI network-manager,但通过 /etc/network/interfaces 定义你的接口,那么你可以尝试编辑 /etc/NetworkManager/NetworkManager.conf,更改

[ifupdown]
managed=false

[ifupdown]
managed=true

然后确保 /etc/NetworkManager/system-connections/ 目录中没有定义其他竞争连接(其中“竞争”表示“使用相同的接口”)。这样您就可以在 GUI 网络管理器小程序下查看和控制 /etc/network/interfaces 中的连接。

或者,您可以完全删除网络管理器包。

答案2

您需要直接在 /etc/network/interfaces 上添加您的 DNS 配置:

auto eth0
iface eth0 inet static
    address 192.168.0.64
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    dns-nameservers 192.168.0.1 8.8.8.8

相关内容