前言
为什么不使用GUI界面配置呢?因为我的系统设置窗口又双叒叕被我玩没了。这次不想把它找回来了。
一 安装工具包
好在我的虚拟机默认就是配置dhcp的,要不然就得下载源码包了。
sudo apt install ifupdown
$ ifdown ens33
ifdown: failed to open lockfile /run/network/ifstate.ens33: No such file or directory
报错:怎么解决?
需要管理员权限,要先up,然后再down,然后再up
$ sudo ifup ens33
$ sudo ifdown ens33
$ sudo ifup ens33
二 设置静态IP
ubuntu21中的/etc/network/interfaces默认是没有的,所以要创建
sudo touch /etc/network/interfaces
在/etc/network/创建文件interfaces
网卡名字默认是ens33
auto ens33 #其中ens33是ubuntu默认的网卡名字
iface eth0 inet static
address x.x.x.x #x.x.x.x为设置的静态ip地址
netmask 255.255.255.0 #此处设置子网掩码
gateway x.x.x.x #此处设置网关
dns-nameservers 8.8.8.8 #此处设置dns服务器
按照说明修改配置,将下面的内容写入/etc/network/interfaces文件
auto ens33
iface ens33 inet static
address 192.168.0.16
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8
然后执行以下三步操作
$ sudo ifup ens33
$ sudo ifdown ens33
$ sudo ifup ens33
然后查看ip地址
ifconfig ens33
$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.16 netmask 255.255.255.0 broadcast 192.168.0.255
ether 00:0c:29:7e:f7:69 txqueuelen 1000 (以太网)
RX packets 126276 bytes 59013705 (59.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 23467 bytes 3752407 (3.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
OK配置成功。
三 配置动态IP
要确认电脑连接到了虚拟或者实体dhcp服务器。首先,备份原来的interfaces文件
sudo cp interfaces interfaces_staic
按照说明修改配置,将下面的内容写入/etc/network/interfaces文件
auto ens33
iface ens33 inet dhcp
然后执行以下三步操作
$ sudo ifup ens33
$ sudo ifdown ens33
$ sudo ifup ens33
然后查看ip地址
ifconfig ens33
$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.31.35 netmask 255.255.255.0 broadcast 192.168.31.255
ether 00:0c:29:7e:f7:69 txqueuelen 1000 (以太网)
RX packets 126311 bytes 59022760 (59.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 23534 bytes 3762148 (3.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
OK配置成功。
最后把这个文件也备份一下
$ sudo cp interfaces interfaces_dhcp
四 配置双网卡
首先要设置两个网卡,第二个网卡桥接到无线网卡,用于上网。
此时通过ifconfig命令,可以看到多了ens38
lkmao@ubuntu:~$ ifconfig
ens33 Link encap:以太网 硬件地址 00:0c:29:8c:05:15
inet 地址:192.168.0.11 广播:192.168.0.255 掩码:255.255.255.0
inet6 地址: fe80::874:4760:1e43:8e9b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:172855 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:162303 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:112141747 (112.1 MB) 发送字节:61201703 (61.2 MB)
ens38 Link encap:以太网 硬件地址 00:0c:29:8c:05:1f
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:10 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:0 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:600 (600.0 B) 发送字节:0 (0.0 B)
lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 跃点数:1
接收数据包:36520 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:36520 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:878963511 (878.9 MB) 发送字节:878963511 (878.9 MB)
lkmao@ubuntu:~$
修改/etc/network/interfaces文件,使得ens38通过dhcp获取ip地址,修改后的文件如下所示:
从内容可知,ens33设置了静态ip地址192.168.0.11。ens38设置了自动获取IP地址。
# interfaces(5) file used by ifup(8) and ifdown(8)
auto ens33
iface ens33 inet static
address 192.168.0.11
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8auto ens38
iface ens38 inet dhcpauto lo
iface lo inet loopback
执行命令ifup使配置生效。
sudo ifup ens38
lkmao@ubuntu:~$ sudo ifup ens38
Internet Systems Consortium DHCP Client 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/ens38/00:0c:29:8c:05:1f
Sending on LPF/ens38/00:0c:29:8c:05:1f
Sending on Socket/fallback
DHCPDISCOVER on ens38 to 255.255.255.255 port 67 interval 3 (xid=0x1205ad66)
DHCPREQUEST of 192.168.31.72 on ens38 to 255.255.255.255 port 67 (xid=0x66ad0512)
DHCPOFFER of 192.168.31.72 from 192.168.31.1
DHCPACK of 192.168.31.72 from 192.168.31.1
bound to 192.168.31.72 -- renewal in 16735 seconds.
lkmao@ubuntu:~$
通过ifconfig查看当前的IP地址
lkmao@ubuntu:~$ ifconfig
ens33 Link encap:以太网 硬件地址 00:0c:29:8c:05:15
inet 地址:192.168.0.11 广播:192.168.0.255 掩码:255.255.255.0
inet6 地址: fe80::874:4760:1e43:8e9b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:173849 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:163844 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:112210420 (112.2 MB) 发送字节:61380986 (61.3 MB)
ens38 Link encap:以太网 硬件地址 00:0c:29:8c:05:1f
inet 地址:192.168.31.72 广播:192.168.31.255 掩码:255.255.255.0
inet6 地址: fe80::20c:29ff:fe8c:51f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:22 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:35 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:7625 (7.6 KB) 发送字节:6937 (6.9 KB)
lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 跃点数:1
接收数据包:36684 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:36684 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:878973515 (878.9 MB) 发送字节:878973515 (878.9 MB)
lkmao@ubuntu:~$
配置成功了。
不过当前还不能上网。首先要将ens33断开,然后
sudo ifdown ens38
sudo ifup ens38
这是可以上网了。
然后
从主机也可以ping通ens33.
重启以后也可以,(⊙o⊙)…,貌似哪里不对劲啊。他们应该是优先级的吧,linux怎么知道优先使用谁来访问互联网呢?
五(补充内容):解决上网问题的尝试
后来系统设置窗口,经过修修补补又弄好了,也忘记怎么弄的了。
这种方法,比较粗糙。缺乏理论支撑,以后要补齐理论支撑。
如下图所示:刚开始的时候,每次都要切换,后来无意中发现,只要先打开上网的ens38,然后再打开ens33,就可以又上网,又使用本地局域网链接。
那么,为什么以前没有发现这个做法呢?应该不是,应该是被什么东西干扰了。而这个方法也可能并非万能。而且,当时也觉得切换一下,总比重新配置省力,还要啥自行车呢。
虽然此时,能ping通百度了:也能ping本地网络,但是sudo apt install xxx,安装软件的时候会失败。这就没啥用了,咱虚拟机访问互联网主要就是为了安装软件的
lkmao@ubuntu:~$ ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=12 ttl=55 time=15.2 ms
总结
不干不知道,世界真奇妙。