如何在Ubuntu中设置静态IP?


56

我是Linux的新手,在Windows服务器/桌面方面有多年经验,并且在设置静态IP时遇到问题。我正在使用一种用于早期版本的Ubuntu的方法,该方法似乎不适用于16.04

我已经使用了命令sudo nano /etc/network/interface并添加了以下内容

iface enp0s25 inet static
address 10.10.8.2
netmask 255.255.0.0
gateway 10.10.1.1
dns-nameservers 8.8.8.8 8.8.4.4

我重新启动了系统,以太网几乎已死,ping根本不起作用。我已尝试修改/etc/NetworkManager/NetworkManager.conf并进行了以下更改

#dns=dnsmasq (comment out the dnsmasq)
[ifupdown]
managed=true (changed from false)

这样,我就可以使以太网偶尔工作,但是最终失败了。

我已经在另外两台计算机以及虚拟机上尝试了此配置,并且所有结果都相同。当我在任何这些计算机上安装Windows时,我可以确认这些设置可以正常工作。同样,当我让DHCP自动配置时,一切正常,没有问题。

我认为我在这里遗漏了一些东西,设置静态IP一点也不难。


我唯一注意到的是,这里可能只是拼写错误,但我将更Dns-nameservers改为dns-nameservers可能不采取任何措施来解决此问题,但可能会阻止其他问题的发生
John Orion

1
Dns-nameservers在语法上是可以接受的,因此这不是问题。当它与DHCP一起使用时,您是运行an ifconfig来检查接口名称还是假设它是enp0s25?auto enp0s25在配置文件的顶部也有一个?如果您不太可能,接口只是在启动时无法启动。
安德鲁

请编辑您的问题,并发布/etc/network/interfaces文件的确切内容。在编辑消息时,突出显示此文件的文本,然后单击{}消息编辑器顶部的代码链接,以便它可以正确设置文本格式,使我们更容易阅读内容。还要执行此命令ip address并执行相同的步骤以{}(代码格式)该输出。
LD詹姆斯

Answers:


83

我有同样的问题,这是我的解决方案:

sudo nano /etc/network/interfaces

并将其粘贴(更改为您的网络)在以下位置# The primary network interface

auto enp0s25
iface enp0s25 inet static
address 192.168.0.16
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.4.4 8.8.8.8

您可以ifconfig -a在Ubuntu 16.04或ip address18.04+ 上使用Terminal命令获取正确的接口名称

关闭您的虚拟机,然后!!!转到网络设置,然后单击刷新MAC地址按钮几次:)

在此处输入图片说明

并启动您的VM,您应该可以上网!

更新20.02.2019

对于Ubuntu 18.04+,您需要编辑此文件

/etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        enp0s3:
            addresses: [192.168.0.55/24]
            gateway4: 192.168.0.1
            dhcp4: no
            nameservers:
              addresses: [1.1.1.1,8.8.8.8]
            optional: true
    version: 2

2
非常感谢,我很感激。现在看来可以正常工作了。现在非常牢固!
TeeStar '16

除了此dns-nameservers修复程序外,我还必须使用此修复程序:askubuntu.com/questions/574569/…我的ISP是monkeybrains.net。
BSalita '16

56

在上面接受的答案中按照上面的方法设置静态IP地址是可行的,但是必须清除旧的IP地址设置,然后重新启动network.service:

sudo ip addr flush enp0s25
sudo systemctl restart networking.service

然后验证它是正确的:

ip add

2
必须进行刷新才能避免接口上存在旧地址(基于ip addr)。该systemctl重启工作过,但ifdownifup界面上会工作更有选择性。
RichVel

2
thx @格兰特。加入冲洗使这个工作
帕维尔马德伊

3
在Ubuntu 16.04和更高版本中,刷新是必要的!
迭戈·迪阿尔特

5

sudo vim /etc/network/interfaces

    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet static
    address 192.168.1.10
    gateway 192.168.1.1
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8

sudo ifdown eth0 && sudo ifup eth0


9
@ lanni654321,您好,也许您应该编辑答案并添加一些单词,简要解释您的工作以及原因?我认为这将使您的答案更加有用,您认为呢?
Tshilidzi Mudau

5
# interfaces(5) file used by ifup(8) and ifdown(8)
# auto lo
# iface lo inet loopback
auto enp2s0 
iface enp2s0 inet static
    address 172.16.9.124
    netmask 255.255.240.0
    gateway 172.16.0.9
dns-nameservers 8.8.8.8

1
ifcace应该在第5行上是iface
twoleggedhorse

@twoleggedhorse:修正了答案的错字,但我不得不#在第一行中添加一些内容,因为如果没有至少6个非空格的更改字符,您将无法进行编辑
AndreiRînea17年

3

我遇到了同样的问题,至少对我来说,解决方案“很简单”。

auto ens160
iface ens160 inet static
address 172.31.0.164/22
netmask 255.255.252.0
gateway 172.31.0.2
network 172.31.0.0
broadcast 172.31.3.255
dns-nameservers 172.31.0.21 172.31.0.18

#Add internal route
up route add -net 172.16.168.0/21 gw 172.31.0.20 dev ens160

并且,在以下位置使用网络接口名称创建一个空文件:

~$ touch /etc/network/interfaces.d/ens160

有用...


2

我遇到了同样的问题,这是我的解决方案:删除文件末尾的所有空行/etc/network/interface


0

我曾经在Ubuntu计算机上设置静态IP,然后发现我可以使用路由器分配IP地址。这可能是最简单的解决方案。只需登录到路由器,找到连接的设备,然后在此处分配IP地址即可。


0

如果您的服务器显示的是旧IP以及新分配的IP,只需重新启动服务器即可。它将自动刷新旧IP并保留新IP。
而且,如果您不想重新启动服务器,请使用以下命令:


sudo ip addr flush <your-interface-here>


0

运行此简单命令,以查看机器启动/重新启动时是否设置了网络接口。

grep "auto" /etc/network/interfaces

如果没有行打印到标准输出,请/etc/network/interfaces使用文本编辑器(vi,nano,sed)打开,希望您会看到类似于下图的内容。

默认的/ etc / network / interfaces文件

显然,如果grep没有将任何行返回到终端窗口,则/ etc / network / interfaces的格式根本不可能非常相似。:-)但是,请遵循自动行的格式。

auto lo
(Loopback configuration follows)
.
.
.

auto enp0s3
(primary interface configuration follows)
.
.
.

====================

现在,在您的机器上

auto yourInteraceNameHere
(your interface configuration follows)
.
.
.

不知道哪些接口名称可用?运行此命令。

ifconfig -a

以下命令将仅返回网络接口的名称。

ifconfig -a | grep encap | awk {'print $1'}

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.