ubuntu 18.04网络问题汇总
准备工作
安装好系统之后,检查gcc和make是否已经安装
shell
$ which gcc
/usr/bin/gcc
$ which make
/usr/bin/make
如果未安装,则安装gcc和make
shell
$ apt install gcc
$ apt install make
安装openssh-server
shell
$ apt install openssh-server
安装网络工具和防火墙
shell
$ apt install net-tools
$ apt install ufw
开通端口
shell
$ ufw allow 22
一、有线网卡不可用
准备设置静态IP时,发现没有有线网卡,无法正常插网线进行联网。
执行ipconfig 查看网卡配置是否有ethxx
或者enxx
,也没有,则说明有线网卡的驱动需要更新。
前往Intel官网下载驱动 , 选择3.8.4版本下载, 然后将下载的软件e1000e-3.8.4.tar.gz通过U盘拷贝到服务器。
解压e1000e-3.8.4.tar.gz安装包文件
shell
$ tar -zxvf e1000e-3.8.4.tar.gz
或者
shell
$ gunzip e1000e-3.8.4.tar.gz
$ tar xvf e1000e-3.8.4.ta
编译有线网卡驱动
shell
$ cd e1000e-3.8.4/src
$ sudo make
*** disabled for this build.
make[1]: Entering directory '/usr/src/linux-headers-4.15.0-142-generic'
Building modules, stage 2.
MODPOST 1 modules
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-142-generic'
安装有线网卡驱动
shell
$ sudo make install
*** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but
*** the signing key cannot be found. Module signing has been
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-142-generic'
Running depmod...
启用有线网卡启动,如果没有报错,正常情况下可以看到有线网卡已经正常可用了。
shell
$ sudo modprobe e1000e
如果遇到modprobe: ERROR: could not insert 'e1000e': Required key not available
,这是因为从内核4.4.0-20
开始启用EFI_SECURE_BOOT_SIG_ENFORCE
编译选项,如果启用UEFI Secure Boot
,将禁止加载未签名的第三方驱动。
重启电脑,按ESC进Blos-->secuity-->secure boot-->enabled
,重新进入系统,以太网正常连接。
二、无法访问外网
服务器上部署了docker镜像后,调用接口提示无法访问外网,去服务器上查看,确实无法ping通百度。
shell
$ ping www.baidu.com
ping: www.baidu.com: 未知的名称或服务
修改并应用网口信息,并重启网络
shell
$ vim /etc/network/interfaces
$ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eno1
iface eno1 inet static
address 192.168.248.142
gateway 192.168.248.254
netmask 255.255.255.0
dns-nameserver 192.168.42.161
dns-nameserver 8.8.8.8
$ netplan apply
$ systemctl restart networking
再次ping百度还是不同
shell
$ ping www.baidu.com
ping: www.baidu.com: 未知的名称或服务
查看域名解析配置文件,发现里面的nameserver和我们的dns配置不一致。
shell
$ cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver 127.0.0.53
options edns0
修改域名解析配置文件如下,保存并退出
shell
$ vim /etc/resolv.conf
nameserver 192.168.42.161
options eno1
再次ping百度,成功。
shell
$ ping www.baidu.com
PING www.a.shifen.com (183.2.172.42) 56(84) bytes of data.
64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=1 ttl=51 time=7.02 ms
64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=2 ttl=51 time=7.06 ms
^C
--- www.a.shifen.com ping statistics ---
9 packets transmitted, 9 received, 0% packet loss, time 9079ms
rtt min/avg/max/mdev = 6.393/7.012/8.473/0.798 ms
如果你的docker镜像启动的时候network_mode
选择的是host
,则还需要重启一次容器,否则程序还是不能访问到外网。