当前位置: 代码迷 >> 综合 >> 【Linux】【Ubuntu 】Ubuntu16.04 网络管理(未完待续)
  详细解决方案

【Linux】【Ubuntu 】Ubuntu16.04 网络管理(未完待续)

热度:17   发布时间:2023-12-06 13:40:47.0

逐步实验完善ing…

文章目录

  • 1. 网络配置文件
    • 1.1 /etc/network/interfaces 配置文件
    • 1.2 /etc/hostname
    • 1.3 /etc/hosts 配置文件
    • 1.4 /etc/services
    • 1.5 /etc/host.conf 配置文件
    • 1.6 /etc/nsswitch.conf
    • 1.7 /etc/resolv.conf 配置文件
    • 1.8 /etc/init.d/networking
    • 1.9 /etc/udev/rules.d/70-persistent-net.rules 配置文件
    • 1.10 /etc/xinetd.conf 配置文件
    • 1.11 /etc/networks
    • 1.12 /etc/protocols
  • 2. Ubuntu网络配置常见问题
    • 2.1 Ubuntu网络配置中,图形界面配置和文本命令行配置的区别
    • 2.2 关于 Ubuntu 配置 DNS 的说明
  • 3. Ubuntu常用的网络指令

1. 网络配置文件

在Ubuntu发行版的Linux系统里,与网络相关的主要设置文件如下:

/etc/network/interfaces 用于设置网络基本信息(IP地址,子网掩码,网关IP等). 最主要的网络配置文件.

/etc/hostname 设置主机名.

/etc/hosts 设置IP地址和主机名的映射.

/etc/services 设置服务和端口的映射.

/etc/host.conf 用于域名解析. 由版本 5 的 libc 库使用.

/etc/nsswitch.conf 用于域名解析. 由版本 6 的 glibc 库使用.

/etc/resolv.conf 域名服务客户端的配置文件,指定域名服务器的IP地址

/etc/init.d/networking 用于管理网络服务

/etc/udev/rules.d/70-persistent-net.rules 记录主机中所有网卡的MAC地址

/etc/xinetd.conf 定义了由进程守护程序xinetd所守护的网络服务

/etc/networks 实现域名与网络地址的映射

/etc/protocols 设定主机使用的协议及各个协议的协议号(协议ID)

1.1 /etc/network/interfaces 配置文件

配置文件 /etc/network/interfaces 用于 ifupifdown 命令管理网络接口配置信息. 只有将名称写入 /etc/network/interfaces 文件的网络接口才能被 ifupifdown 命令管理.

更多说明参看 Ubuntu Manpage: Trusty Interfaces 或者 Debian Reference Manual - Chapter 5. Network setup.

Ubuntu 16.04 使用了 Predictable Names 的命名方式.

列出所有网络接口名称:

ls /sys/class/net

默认的 /etc/network/interfaces 如下所示:

# interfaces(5) file used by ifup(8) and ifdown(8)source /etc/network/interfaces.d/*# The loopback network interface
auto lo
iface lo inet loopback
  • 可以将某个网络接口的配置信息单独写入配置文件放入 /etc/network/interfaces.d/ 下.
  • auto 表示在在系统启动时自动开启该网络接口,注释掉该行则该网络接口不随系统自启动.
  • lo 表示回环接口,也就是 127.0.0.1 本机地址绑定的接口.

iface 开头的行表示开始定义网络接口,语法如下:

iface  <interface>  <address_family>  <method>
  • <interface> :表示网络接口名称
  • <address_family>inetipxinet6can. 常用的 inet 表示 IPv4,inet6表示 IPv6.
  • <method>:不同 address_family 的网络接口具有不同的 method,详见 manpage.

?
设置网卡 ens33 热插拔模式,并自动获取 IP 地址:

# The loopback network interface
auto lo
iface lo inet loopback# The ens33 network interface
auto ens33
allow-hotplug ens33
iface ens33 inet dhcp
  • allow-hotplug 表示热插拔模式. atuo-hotplug 只有当内核从该接口检测到热插拔事件后才启动该接口. 如果系统开机时该接口没有插入网线,则系统不会启动该接口;如果插入网线,系统会自动启动该接口. 而 auto 在系统启动的时候就启动网络接口,无论此时有没有插入网线.
  • 如果该接口配置了 DHCP,则无论是否插入网线,atuo 下系统都会去执行 DHCP,而 auto-hotplug 下系统在检测到插入网线后才会执行 DHCP.

如果使用 IPv6,则配置语句为:

iface ens33 inet6 dhcp

另外,IPv6 可以通过无状态地址(stateless address)或是 SLAAC 来自动配置:

iface ens33 inet6 auto
  • 此处的 auto 与前述的 auto 不同. 此处的 auto 属于 inet6 的 <method>字段.

?
设置 ens33 使用固定 IP 地址:

# interfaces(5) file used by ifup(8) and ifdown(8)source /etc/network/interfaces.d/*# The loopback network interface
auto lo
iface lo inet loopback# The ens33 network interface
auto ens33
iface ens33 inet staticaddress 192.168.2.165network 192.168.2.0netmask 255.255.255.0broadcast 192.168.2.255gateway 192.168.2.1
  • 12行~16行依次设置 IP 地址、网络号、子网掩码、广播地址、网关.

?
设置 DNS

# The ens33 network interface
auto ens33
iface ens33 inet staticaddress 192.168.2.165network 192.168.2.0netmask 255.255.255.0broadcast 192.168.2.255gateway 192.168.2.1dns-nameserver 114.114.114.114dns-nameservers 8.8.8.8 8.8.4.4
  • dns-nameserver:指定一条DNS地址,如果需要指定多个DNS则需要使用添加多行.
  • dns-nameservers:指定多个DNS地址,用空格隔开.
auto ens33
iface ens33 inet6 dhcpdns-nameserver 114.114.114.114
  • DHCP 也可以指定 dns.

1.2 /etc/hostname

1.3 /etc/hosts 配置文件

/etc/hosts文件的默认内容如下(不同主机,IP映射的主机名不同):

127.0.0.1 butbueatiful  localhost.localdomain  localhost
::1 localhost6.localdomain6  localhost6

可见,默认的情况是本机ip和本机一些主机名的对应关系,第一行是ipv4信息,第二行是ipv6信息,如果用不上ipv6本机解析,一般把该行注释掉。
第一行的解析效果是,butbueatiful localhost.localdomain localhost三者都会被解析成127.0.0.1,我们可以用ping试试。

[root@butbueatiful ~]# ping -c 3 butbueatiful
PING butbueatiful (127.0.0.1) 56(84) bytes ofdata.
64 bytes from butbueatiful (127.0.0.1):icmp_seq=1 ttl=64 time=0.061 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=2 ttl=64 time=0.052 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=3 ttl=64 time=0.051 ms--- butbueatiful ping statistics ---
3 packets transmitted, 3 received, 0% packetloss, time 1999ms
rtt min/avg/max/mdev = 0.051/0.054/0.061/0.009ms[root@butbueatiful ~]# ping -c 3localhost.localdomain
PING butbueatiful (127.0.0.1) 56(84) bytes ofdata.
64 bytes from butbueatiful (127.0.0.1):icmp_seq=1 ttl=64 time=0.055 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=2 ttl=64 time=0.035 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=3 ttl=64 time=0.050 ms--- butbueatiful ping statistics ---3 packets transmitted, 3 received, 0% packet loss,time 1999msrtt min/avg/max/mdev = 0.035/0.046/0.055/0.011 ms

看到上面的结果,你可能会问为什么ping localhost.localdomain的时候,下面显示的是却是butbueatiful,这是因为第一个主机名butbueatiful后面的那些主机名其实都是butbueatiful的主机别名。

如果我们要追加新的本地解析,比如我们希望在我们的机器里把yyyy.com和www.yyyy.com都解析成192.168.0.100,那么就追加如下一句即可:

192.168.0.100  yyyy.com  www.yyyy.com

同样,在这里,www.yyyy.com是yyyy.com的主机别名。

如果你仔细一想,会发现,其实这个文件是很危险的,如果有人恶意修改了你这个文件,比如把淘宝的网站域名解析到了他的钓鱼网站,那你就要中招了。

1.4 /etc/services

1.5 /etc/host.conf 配置文件

/etc/host.conf文件的默认内容如下:

# The"order" line is only used by old versions of the C library.
order hosts,bind  # 指定主机名的解析顺序,即本地解析,DNS域名解析multi on  # 允许主机拥有多个IP地址

这个文件一般不需要我们修改,默认的解析顺序是本地解析,DNS服务器解析。也就是说在本系统里对于一个主机名首先进行本地解析,如果本地解析没有,然后进行DNS服务器解析。

1.6 /etc/nsswitch.conf

1.7 /etc/resolv.conf 配置文件

该文件用来指定DNS域名解析服务器的IP信息,其配置参数一般有以下四个:

nameserver        #指定DNS服务器的IP地址
domain            #定义本地域名信息
search            #定义域名的搜索列表
sortlist          #对gethostbyname返回的地址进行排序

但是最常用的配置参数是nameserver,其他的可以不设置,这个参数指定了DNS服务器的IP地址,如果设置不正确,就无法进行正常的域名解析。

一般来说,推荐设置2个DNS服务器,比如我们用google的免费DNS服务器,那么该文件的设置内容如下:

nameserver 8.8.8.8nameserver 8.8.4.4

同样,这个文件也是危险的,如果被人恶意改成了他自己的DNS服务器,他就可以为所欲为的控制你通过域名访问的每个目的地了,这就是常说的DNS劫持。

1.8 /etc/init.d/networking

1.9 /etc/udev/rules.d/70-persistent-net.rules 配置文件

该文件属于主机的一个记录文件,其主要作用就是记录主机识别到的网卡信息。每当识别到一个新的网络接口配置信息,就会自动追加到该文件,用户也可以自己添加网络接口信息。主机识别网卡信息主要依据就是通过MAC地址。

1.10 /etc/xinetd.conf 配置文件

该文件就是简单的用include命令指定了xinetd守护进程可以读取的配置文件,所有xinetd可读取的配置文件其实都放在/etc/xinted.d目录下面。xinetd守护进程通过读取不同的服务进程的配置文件,启动并配置相应的服务进程。

1.11 /etc/networks

1.12 /etc/protocols

2. Ubuntu网络配置常见问题

2.1 Ubuntu网络配置中,图形界面配置和文本命令行配置的区别

Ubuntu在Desktop版本中,提供了两种方法来进行网络参数配置。即图形界面和文本命令行配置。文本命令行方式是通过修改/etc/network/interfaces来进行配置的。而图形界面配置是通过network-manager进行配置,通过启动Ubuntu桌面的SystemàPreferencesàNetwork Connections即可进行图形化配置。network-manager的配置和直观,按照提示一步一步操作即可,读者可以自行查阅相关的配置方法。

但如果修改了interfaces配置文件,又配置了network-manager(以下简称nm),就会出现一些莫名其妙的问题:

  1. interfacesnm中的网络设置不一样,系统实际的IP是哪个?

  2. 有时候莫名其妙的,界面右上角的网络连接图标就丢失了。

  3. 明明在nm中配置了正确的网络设置,为什么就上不了网呢?

其实,只要弄清楚 interfacesnm之间的关系,这些问题就不难解释了。

首先,当系统内没有第三方网络管理工具(比如nm)时,系统默认使用nterfaces文件内的参数进行网络配置。

接着,当系统内安装了 nm之后,nm默认接管了系统的网络配置,使用nm自己的网络配置参数来进行配置。

但是,如果用户在安装nm之后(Desktop版本默认安装了nm),自己手动修改了interfaces 文件,那nm 就自动停止对系统网络的管理,系统改使用interfaces 文件内的参数进行网络配置。

此时,再去修改nm 内的参数,不影响系统实际的网络配置。若要让nm 内的配置生效,必须重新启用nm 接管系统的网络配置。

现在知道了两者之间的工作关系,再看上面的三个问题:

  1. 要看nm是否接管,如果没有接管,系统实际的IP设置以interfaces 中的为准。反之,以nm 中的为准。

  2. nm 停止接管的时候,网络连接图标就丢失了。

  3. 同样是接管的问题。

如果用户希望在Desktop版本中,直接使用interfaces 进行网络配置,那么可以通过以下指令来关闭network-manager

/etc/init.d/network-manager stop    # 手动关闭network-manager

之后通过查看/etc/NetworkManager/nm-system-settings.conf 文件来确定nm是否停止网络配置工作。即只需要确保/etc/NetworkManager/nm-system-settings.conf内的managed=false

之后就可以通过文件命令行方式进行网络参数配置。

vi/etc/network/interfaces    # 手动修改interfaces配置文件/etc/init.d/networkingrestart    # 配置完成后,重启网络服务

如果希望能继续使用nm 来进行网络配置,则需要进行如下操作:

sudo service network-manager stop    # 停止nm服务sudo rm /var/lib/NetworkManager/NetworkManager.state    # 移除nm 的状态文件sudo gedit /etc/NetworkManager/nm-system-settings.conf    # 打开nm 的配置文件

修改文件里面这一行:managed=false,将false修改成true,然后重启nm程序,指令如下:

sudo servicenetwork-manager start    # 由nm程序重新接管网络配置工作

注意】如果手工改过/etc/network/interfaces,`nm会自己把这行改成:managed=false(这里应该默认就是false)

2.2 关于 Ubuntu 配置 DNS 的说明

目前我所掌握的 Ubuntu 下通过配置文件设置DNS的方式有两种:interfaces 和 resolvconf.

(1) interfaces 方式

修改/etc/network/interfaces配置DNS需要在该文件中加入

dns-nameserver xx.xx.xx.xx
dns-nameserver xxx.xxx.xx.xx
dns-nameservers xxx.xxx.xxx.xxx xxx.xxx.xx.xxx
  • dns-nameserver: 指定一条DNS地址,如果需要指定多个DNS则需要使用添加多行。
  • dns-nameservers: 指定多个DNS地址,用空格隔开。

备注: 这种方式修改DNS后需要重启电脑方可生效(我没有找到其它使其生效的方式,重启网络并不能更新cat /etc/resolv.conf。

(2) resolvconf 方式

resolv.conf方式修改DNS则是通过修改/etc/resolvconf/resolv.conf.d/head文件实现,当需要添加DNS记录时,在文件中加入下面内容:

nameserver xxx.xxx.xx.xxx
nameserver xx.xx.xx.xx
  • nameserver: 指定DNS地址,当有多个DNS记录时每个DNS记录占一行。

修改成功后,运行sudo resolvconf -u更新/etc/resolv.conf文件即可。这种方式不需要重启电脑。

备注: 看到网上说可以修改/etc/resolvconf/resolv.conf.d/base文件同样能配置DNS,但经我测试,不能正确配置,不知道是什么原因。

3. Ubuntu常用的网络指令

ifconfig                        # 查看网络信息ifconfig ethx 10.8.210.150      # 临时设置ethx网卡的IP地址为10.8.210.150 (重启后失效)

例如:

ifconfig eth0 10.8.210.150
ifconfig ethx:y 192.168.1.125            # 临时创建ethx网卡的虚拟网卡(重启后失效)

例如:

ifconfig     eth0:0 192.168.1.125        # 创建eth0的第一张虚拟网卡,并设置IP地址ifconfig      eth0:1 192.168.3.250       # 创建eth0的第二张虚拟网卡,并设置IP地址
ifconfig ethx:y down                     # 临时删除ethx网卡的虚拟网卡(重启后失效)

虚拟网卡的永久配置方式需要修改配置文件,参见本文第二章节第二点。

ifup ethx                         # 启用网卡ethx (x=0,1,2,3……),需要root权限ifdown ethx                       # 禁用网卡ethx,需要root权限ifconfig ethx up                  # 启用网卡ethx(x=0,1,2,3……),需要root权限ifconfig ethx down                # 禁用网卡ethx,需要root权限

两种启动/禁止网卡设备方法的区别参见一下文章:

http://blog.csdn.net/gdutlyp/article/details/50498202

/etc/init.d/networking start                # 启动网络服务/etc/init.d/networking stop                 # 关闭网络服务/etc/init.d/networking restart              # 重启网络服务/etc/init.d/networking force-reload         # 强制重载网络配置

reference:
https://blog.csdn.net/GDUTLYP/article/details/73087476
https://blog.csdn.net/japinli/article/details/54897264