如何在Ubuntu Server的Virtual Box中为网络管理器设置静态IP


12

嗨,有人熟悉ubuntus网络管理器的非GUI版本吗?

我想在virtualbox中用它设置一个静态IP而不接触文件/etc/network/interfaces

  • IP:192.168.56.101
  • 网关:102.168.1.1
  • 网路遮罩:255.255.255.0

另外,我想用动态IP设置第二个网络接口,以便通过Vbox连接到Internet。

Answers:


6

您需要从命令行使用Network Manger,这是nmcli

首先,您可以使用以下列表列出网络管理器已知的可用连接,这对于查找名称很重要,因为未使用设备ID:

# nmcli con show

这将为您提供以下信息:

NAME                UUID                                  TYPE            DEVICE 
Wired connection 1  7a3b674a-f346-3cfb-8b30-ff70e6db1b60  802-3-ethernet  enp0s3

然后可以使用以下命令修改连接:

nmcli con mod "Wired connection 1"
  ipv4.addresses "HOST_IP_ADDRESS/IP_NETMASK_BIT_COUNT"
  ipv4.gateway "IP_GATEWAY"
  ipv4.dns "PRIMARY_IP_DNS,SECONDARY_IP_DNS"
  ipv4.dns-search "DOMAIN_NAME"
  ipv4.method "manual"

当您输入以上使用一行时,我只是将其分成几行以使其更加清晰。

如果要将连接设置为使用DHCP,则可以使用以下命令:

nmcli con mod "Wired connection 1"
  ipv4.addresses ""
  ipv4.gateway ""
  ipv4.dns ""
  ipv4.dns-search ""
  ipv4.method "auto"

您需要所有空引号,因为它们会删除以前具有的任何设置。

要添加网络,请使用:

nmcli con add ...

具有相似的参数。

要激活设置,请重新启动。(我尝试重新启动Network Manager,但这似乎并没有激活更改,但是重新启动确实可以。)


类型标志对我来说并不明显。我eth1使用静态IP 设置为内部网络接口。sudo nmcli con add type "ethernet" ifname "eth1" con-name "intnet" autoconnect "yes" ip4 "192.168.0.1/24" gw4 "192.168.0.2"
Jack Miner Ewes

6

对于那些想要使用NetworkManager方法的人,我按照建议的方法进行了介绍。在Debian Wiki上有一些信息,并且在GNOME开发人员站点上有关于这些选项的完整文档。(从RHEL7文档看来,它们的版本确实nmcli增加了支持,因此希望可以加入。)

动态IP非常简单(请注意,只是进行网络配置,而不是VBox端):

[802-3-ethernet]
auto-negotiate=true
mac-address=XX:XX:XX:XX:XX:XX

[connection]
id=Wired connection 1
uuid=xxx-xxxxxx-xxxxxx-xxxxxx-xxx
type=802-3-ethernet
timestamp=0

[ipv6]
method=disabled

[ipv4]
method=auto

使用uuidgen(package uuid-runtime)制作uuid,当然可以正确填充MAC地址。(这样做通常比指定设备名称更好。)

对于静态IP(请注意DNS阵列上的分号!):

[802-3-ethernet]
auto-negotiate=true
mac-address=XX:XX:XX:XX:XX:XX

[connection]
id=Wired connection 2
uuid=xxx-xxxxxx-xxxxxx-xxxxxx-xxx
type=802-3-ethernet
timestamp=0

[ipv6]
method=ignore

[ipv4]
method=manual
dns=8.8.8.8;8.8.4.4;
address1=192.168.56.101/24,192.168.1.1

1
这是文件所在的目录,上面显示/etc/NetworkManager/system-connections/
Aaron Lelevier

3

通常,我编辑文件/etc/network/interfaces并将信息修改为以下形式:

iface eth0 inet static
address 192.168.56.101
netmask 255.255.255.0
gateway 192.168.56.1 (u had 102.168.1.1. So, I guessed it was a mistake)

5
OP说,他不想触摸/ etc / network / interfaces
guntbert

您是对的,我想通过网络经理来做。但是由于缺少相关文档,所以可以使用interfaces文件。
2013年

2

由于问题是关于NetworkManager的,因此:我从未从cli配置NM连接,并且该nmcli工具似乎没有创建连接的选项。但是,当您将连接声明为系统连接时,您可能想看看GUI的功能。它在其中创建文件,/etc/NetworkManager/system-connections但是我不知道文件格式是否在任何地方都有记录。

您应该能够通过启用这些连接之一nmcli con up $name


2

编辑:

要在Vbox中添加另一个可以访问Internet的界面,请使用设置菜单的网络标签。然后启用一个附加接口并将其设置为NAT(因为这是访问互联网的最简单方法)。而在wirtual机添加另一个接口与DHCP像这样: allow-hotplug eth1和断行后,iface eth1 inet dhcp

(由于某种原因,我的格式变坏了。)

通过这种方式,您可以使用主机OS的连接访问网络。


与在Linux(以及大多数其他unix)下管理接口的标准方法相比,网络管理器的命令行“客户端”令人困惑,几乎没有用。通常,您首先需要关闭已启用的网络接口(如果已启用){运行ifconfig来找出}:

ifconfig eth0 down #note: I assume you want to configure eth0, replace it if not

之后,编辑/ etc / network / interfaces文件(我更喜欢使用nano):

sudo nano /etc/network/interfaces

并添加以下内容:

allow-hotplug eth0
iface eth0 inet static
address 192.168.56.101
netmask 255.255.255.0
gateway 192.168.56.1

另外请注意,您需要从文件中删除所有其他存在的eth0,否则系统将无法正确解析文件并且您将没有网络连接。最后,您需要重新启用该界面:

ifup eth0

并且这将使您的Ubuntu在检测到“电缆已连接”时自动使用所需的参数设置接口。

另外,如果您确实要避免编辑interfaces文件,则可以使用:

ifconfig eth0 192.168.56.101 netmask 255.255.255.0 gateway 192.168.56.1 up

认为这样的更改不会是永久的(您将在重新启动之间丢失它们,等等),但是我自己并未对此进行测试。


您可能已经听说过该命令ip- ifconfig正在下降。
guntbert

2

当前,Ubuntu版本已启用网络管理器。

您可以使用以下命令获取连接名称:

nmcli con show

您可以从命令行修改静态IP地址:

sudo nmcli con mod "Connection name" ipv4.addresses xxx.xxx.xxx.xxx/24

注意:/ 24将网络掩码定义为255.255.255.0

/ect/network/interfaces如果您具有属性managed=false,则文件将被忽略/etc/NetworkManager/NetworkManager.conf

[ifupdown]
managed=**false**

0

假设您的意思是192.168.1.1而不是102.168.1.1。192.168.56.101和192.168.1.1位于不同的网络上,没有帮助就无法通话。您需要的是:

iface eth0 inet static
address 192.168.56.101
netmask 255.255.255.0
gateway 192.168.56.1

假设您有一个IP地址为192.168.56.1的盒子(路由器/第3层交换机等)来回答。

使用/ 24(255.255.255.0),您需要在主机和默认网关192.168.56.X或192.168.1.X上使前三个八位位组匹配。


1
OP表示,他不想触摸/ etc / network / interfaces。
guntbert

那就对了。我说过 同时,我需要一个netplan解决方案。使用netplan时,下面的nmcli命令是否也起作用?
Josh

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.