Linux 网络设置

1.1 查看及测试网络

1.1.1 查看网络配置

1.查看网络接口地址

主机的网络接口卡(网卡)通常称为网络接口。在 Linux 操作系统中,使用 ifconfig 命 令可以查看网络接口的地址配置信息(Interface Configuration)。

(1)查看活动的网络接口设备

若采用 mini 版 CentOS 7 安装的系统,默认是没有 ifconfig 命令的,需要先通过yum 方式安装net-tools 软件包,才有 ifconfig 命令。在不带任何选项和参数执行 ifconfig 命令时, 将显示当前主机中已启用(活动)的网络接口信息。

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.4.11 netmask 255.255.255.0 broadcast 192.168.4.255 …… //省略部分内容
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0 …… //省略部分内容

在上述输出结果中,ens33 对应为第一块物理网卡,lo 对应为虚拟的回环接口。

  • ens33:第一块以太网卡的名称。“ens33”中的“en”是“EtherNet”的缩写,表示网卡 类型为以太网,“s”表示热插拔插槽上的设备(hot-plug Slot),数字“33”表示插槽 编号。由此可以得知,从CentOS 7 开始,使用基于固件、硬件拓扑和设备位置信 息分配的一致网络设备命名(Consistent Network Naming)。因为一致的网络设 备名是基于系统硬件的,所以在不同的操作系统上,网络接口名称可能不同。
  • lo:“回环”网络接口,“lo”是“loopback”的缩写,它不代表真正的网络接口,而是一 个虚拟的网络接口,其 IP 地址默认是“127.0.0.1”。回环地址通常仅用于对本 机的网络测试。
(2)查看指定的网络接口信息

当只需要查看其中某一个网络接口的信息时,可以使用网络接口的名称作为 ifconfig 命 令的参数(不论该网络接口是否处于激活状态)

[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.4.11 netmask 255.255.255.0 broadcast 192.168.4.255
inet6 fe80::9106:d38b:670d:1a89 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:3a:81:cc txqueuelen 1000 (Ethernet)
RX packets 4625 bytes 428860 (418.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2302 bytes 344920 (336.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

从上述命令显示的结果中,可以获知 ens33 网卡的一些基本信息,如下所述。

  • inet:表示网络接口的 IP 地址,如“192.168.4.11”。
  • netmask:表示网络接口的子网掩码,如“255.255.255.0”。
  • broadcast:表示网络接口所在网络的广播地址,如“192.168.4.255”。
  • ether:表示网络接口的物理地址(MAC 地址),如“00:0c:29:3a:81:cc”。网络接 口的物理地址通常不能更改,是网卡在生产时确定的全球唯一的硬件地址。

 2.查看主机名称

在 Linux 操作系统中,相当一部分网络服务都会通过主机名来识别主机,如果主机名配 置不当,可能会导致程序功能出现故障。使用 hostname 命令可以查看当前主机的主机名, 不用添加任何选项或参数。

[root@localhost ~]# hostname
localhost.localdomain

3.查看路由表条目

Linux 操作系统中的路由表决定着从本机向其他主机、其他网络发送数据的去向,是排 除网络故障的关键信息。直接执行“route”命令可以查看当前主机中的路由表信息,在输出结 果中Destination 列对应目标网段的地址,Gateway 列对应下一跳路由器的地址,Iface 列 对应发送数据的网络接口。

[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 ens33
192.168.4.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33

 当目标网段为“default”时,表示此行是默认网关记录;当下一跳为“gateway”时,表 示目标网段是与本机直接相连的。但是,直接执行“route”命令无法直接看出默认网关地址。

 若结合“-n”选项使用,可以将路由记录中的地址显示为数字形式,这可以跳过解析主机 名的过程,在路由表条目较多的情况下能够加快执行速度。

[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.4.1 0.0.0.0 UG 100 0 0 ens33
192.168.4.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33

4.查看网络连接情况

通过 netstat 命令可以查看当前操作系统的网络连接状态、路由表、接口统计等信息, 它是了解网络状态及排除网络服务故障的有效工具。以下是 netstat 命令常用的几个选项。

  • -a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
  • -n:以数字的形式显示相关的主机地址、端口等信息。
  • -r:显示路由表信息。
  • -l:显示处于监听(Listening)状态的网络连接及端口信息。
  • -t:查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息。
  • -u:显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息。
  • -p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)。

通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的 TCP 连接信息,同时显 示对应的进程信息。结合管道命令使用“grep”命令,还可以在结果中过滤出所需要的特定记录。

[root@localhost ~]# netstat -anpt | grep ":80"
tcp60 0 :::80 :::* LISTEN 20563/httpd

除了 netstat,ss 命令也可以查看网络连接情况,它是 Socket Statistics 的缩写,主要 用于获取 socket 统计信息,它可以显示和 netstat 命令类似的输出内容。但 ss 的优势在于 它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快速更高效。要想 使用 ss 命令,首先确保 iproute 程序包已被安装,可以通过 yum 方式进行安装。

以下是 ss 命令常用的几个选项。

  • -h:--help 通过该选项获取更多的使用帮助。
  • -V:--version 显示软件的版本号。
  • -t:--tcp 显示 TCP 协议的 sockets。
  • -u:--udp 显示 UDP 协议的 sockets。
  • -n:--numeric 不解析服务的名称,如 "22" 端口不会显示成 "ssh"。
  • -l:--listening 只显示处于监听状态的端口。
  • -p:--processes 显示监听端口的进程。
  • -a: --all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接。
  • -r: --resolve 把 IP 解释为域名,把端口号解释为协议名称。

ss 命令的输出结果,可以提供 TCP 和 UDP 的 socket 信息,以及各种服务建立的持久 连结,熟悉这个命令有助于更好的发现与解决系统性能问题。

[root@localhost ~]# ss -t state established
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 96 192.168.8.10:ssh 192.168.8.1:55213

1.1.2 测试网络连接

1.测试网络连通性

使用 ping 命令可以向目标主机持续地发送测试数据包,并显示反馈结果,直到按 Ctrl +C 组合键后中止测试,并显示最终统计结果。

[root@localhost ~]# ping 192.168.4.110
PING 192.168.4.110 (192.168.4.110) 56(84) bytes of data. 64 bytes from 192.168.4.110: icmp_seq=1 ttl=64 time=0.313 ms
64 bytes from 192.168.4.110: icmp_seq=2 ttl=64 time=0.213 ms
^C //按 Ctrl+C 组合键中止执行
--- 192.168.4.110 ping statistics --- 8 packets transmitted, 8 received, 0% packet loss, time 8085ms
rtt min/avg/max/mdev = 0.213/0.236/0.313/0.035 ms

执行 ping 测试命令时,若不能获得从目标主机发回的反馈数据包,则表示在本机到目 标主机之间存在网络连通性故障。例如,若看到“Destination Host Unreachable”的反馈信息, 则表示目的主机不可达,可能目标地址不存在或者主机已经关闭;若看到“Network is unreachable”的反馈信息,则表示没有可用的路由记录(如默认网关),无法达到目标主机 所在的网络。

[root@localhost ~]# ping 192.168.4.123
PING 192.168.4.123 (192.168.4.123) 56(84) bytes of data.
From 192.168.4.11 icmp_seq=2 Destination Host Unreachable
From 192.168.4.11 icmp_seq=3 Destination Host Unreachable
…… //省略部分内容

2.跟踪数据包的路由途径

若服务器上没有 traceroute 命令,可通过 yum 方式安装 traceroute 软件包。traceroute 命令可以用于测试从当前主机到目的主机之间经过了哪些网络结点,并显示各中间结点的连 接状态(响应时间)。对于无法响应的结点,连接状态将显示为“*”。

[root@localhost ~]# traceroute 192.168.7.7
traceroute to 192.168.7.7 (192.168.7.7), 30 hops max, 40 byte packets
1 (192.168.4.1) 7.740 ms 15.581 ms 15.881 ms
2 (192.168.7.7) 19.652 ms 19.995 ms 19.942 ms

traceroute 命令能够比 ping 命令更加准确地定位网络连接的故障点(中断点),因此 执行速度会比 ping 命令稍慢。在网络测试与排错过程中,通常会先使用 ping 命令测试与目 的主机的网络连接,如果发现网络连接有故障,再使用 traceroute 命令跟踪查看是在哪个中 间结点存在故障。

3.测试 DNS 域名解析

当域名解析出现异常时,将无法使用域名的形式访问网络中的 Web 站点、电子邮件系 统等服务。nslookup 命令是用来测试域名解析的专用工具,使用时只要指定要解析的目标 域名作为参数即可。若在执行过程中提示无法找到nslookup命令,可通过yum安装bind-utils 程序包的方式来解决。

[root@localhost ~]# nslookup www.google.com
Server: 202.106.0.20 //所使用的 DNS 服务器
Address: 202.106.0.20#53
Non-authoritative answer: //以下为 DNS 解析的反馈结果
Name: www.l.google.com
Address: 173.194.127.51 …… //省略部分内容

若能够成功反馈要查询域名的 IP 地址,则表示域名解析没有问题,否则需要根据实际 反馈情况来判断故障原因。

[root@localhost ~]# nslookup www.google.com
;; connection timed out; trying next origin
;; connection timed out; no servers could be reached

此外还有 dig 命令也可以用来测试域名解析,相对于 nslookup 命令,dig 可以得到更多 的域名信息。dig 的全称是(domain information groper),它是一个用于查询 DNS 域名服务 器的灵活的工具。大多数系统管理员都是利用 dig 作为 DNS 问题的故障诊断工具,因为它 具有灵活性好、易用、输出清晰等特点。dig 命令最典型的用法就是查询单个主机的信息。

[root@localhost ~]# dig baidu.com
; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.2 <<>> baidu.com // dig 的版本及输入参数
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51884
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
//以上显示服务器返回的信息,status 为 NOERROR 状态说明查询成功
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;baidu.com. IN A //显示通过 A 记录要查询的域名
;; ANSWER SECTION:
baidu.com. 585 IN A 220.181.38.148
baidu.com. 585 IN A 39.156.69.79
//经 DNS 返回后的查询结果
;; Query time: 13 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Sun Sep 08 19:06:46 CST 2019
;; MSG SIZE rcvd: 70
//查询后的一些统计信息,比如用了 13 毫秒,查询 DNS 服务器的 IP 地址,查询的时间等等

dig 在查询过程中,还可以指定特点的 DNS 服务器。如果不指定 DNS 服务器,默认会 使用/etc/resolve.conf 里面的地址作为 DNS 服务器。

[root@localhost ~]# dig @202.106.0.20 baidu.com //使用指定的 DNS 服务器来解析
; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.2 <<>> @202.106.0.20 baidu.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48077
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 5, ADDITIONAL: 6
//省略后续输出

1.2 设置网络地址参数

临时配置:通过命令行直接修改当前正在使用的网络地址,修改后立即可以生效。 这种方式操作简单快速、执行效率高,一般在调试网络的过程中使用。但由于所做 的修改并没有固定地存放在静态的文件中,因此当重启 network 服务或重启主机后 将会失效。

固定配置:通过配置文件来存放固定的各种网络地址,需要重启 network 服务或重 启主机后才会生效。这种方式操作上相对要复杂一些,但相当于“永久配置”,一般 在需要为服务器设置固定的网络地址时使用。

1.2.1 使用网络配置命令

1.修改网卡的地址、状态

ifconfig 命令不仅可以用于查看网卡配置,还可以修改网卡的 IP 地址、子网掩码,也可 以绑定虚拟网络接口、激活或禁用网络接口。

(1)修改网卡的 IP 地址、子网掩码 需要设置网卡的地址时。
ifconfig 网络接口名称 IP 地址 [ netmask 子网掩码 ]

或者

ifconfig 网络接口名称 IP 地址[/子网掩码长度]

通常后一种方式用得更多一些。当不指定子网掩码时,将使用 IP 地址所在分类的默认 子网掩码。指定新的 IP 地址和子网掩码以后,原有的地址将会失效。

[root@localhost ~]# ifconfig ens33 192.168.168.1/24

或者

[root@localhost ~]# ifconfig ens33 192.168.168.1 netmask 255.255.255.0
(2)禁用、激活网络接口

需要临时禁用或者重新激活指定的网络接口时,需要结合“down”和“up”开关选项。网络 接口被禁用以后,将无法使用该网络接口与其他主机进行连接。

[root@localhost ~]# ifconfig ens37 down
(3)为网卡绑定虚拟接口

在对服务器网络进行调试的过程中,有时候需要临时在同一个网卡上使用一个新的 IP 地址,但是又不能覆盖原有 IP 地址而导致服务程序不可用。这时可以为网卡绑定一个虚拟 的网络接口,然后为虚拟接口设置新的 IP 地址(相当于一块网卡配多个 IP 地址)。

[root@localhost ~]# ifconfig ens33:0 172.17.17.17
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.4.11 netmask 255.255.255.0 broadcast 192.168.12.255
inet6 fe80::9106:d38b:670d:1a89 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:3a:81:cc txqueuelen 1000 (Ethernet)
RX packets 8791 bytes 811759 (792.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4459 bytes 584948 (571.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.17.17 netmask 255.255.0.0 broadcast 172.17.255.255
ether 00:0c:29:3a:81:cc txqueuelen 1000 (Ethernet)

2.添加、删除静态路由记录

(1)添加、删除到指定网段的路由记录

通过“route add”操作可以添加路由记录,结合“-net”选项指定目标网段的地址,结合“gw” 选项指定下一跳路由器的IP 地址。

[root@www ~]# route add -net 192.168.3.0/24 gw 192.168.4.254 //添加静态路由
[root@www ~]# route -n //确认添加的路由条目
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.4.1 0.0.0.0 UG 100 0 0 ens33
192.168.3.0 192.168.4.254 55.255.255.0 UG 0 0 0 ens33
192.168.4.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33

通过“route del”操作可以删除路由记录,只要结合“-net”选项指定对应路由记录中目标网 段的地址即可。

[root@www ~]# route del -net 192.168.3.0/24
[root@www ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.4.1 0.0.0.0 UG 100 0 0 ens33
192.168.4.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
(2)添加、删除默认网关记录

添加、删除默认网关记录时,与添加、删除静态路由记录的命令格式类似,但指定目标 网段时只需简单地使用“default”表示即可,无须再使用“-net”选项指明网段地址。

[root@www ~]# route -n | grep "192.168.4.1" //查看原路由表中的默认网关记录
0.0.0.0 192.168.4.1 0.0.0.0 UG 100 0 0 ens33
[root@www ~]# route del default gw 192.168.4.1 //删除默认网关记录 192.168.4.1
[root@www ~]# route -n | grep "192.168.4.1" //确认删除结果(检索时无输出)
[root@www ~]# route add default gw 192.168.4.254 //添加新的默认网关记录 192.168.4.254
[root@www ~]# route -n | grep "192.168.4.254" //确认新的默认网关记录
0.0.0.0 192.168.4.254 0.0.0.0 UG 100 0 0 ens33
3.修改主机的名称

hostname 命令不仅可以用于显示当前主机的名称,还可以修改当前主机的名称。在新 登录的用户会话(Shell 环境)中,命令提示符中的主机名部分也会出现相应的变化。

[root@localhost ~]# hostname //查看原来的主机名
localhost.localdomain
[root@localhost ~]# hostname www.bdqn.com //设置新的主机名
[root@localhost ~]# hostname //确认新的主机名
www.bdqn.com
[root@localhost ~]# bash //启用新的 Shell 会话,查看变化
[root@www ~]#hostname
www.bdqn.com

1.2.2 修改网络配置文件

1.网络接口配置文件

网络接口的配置文件默认位于目录/etc/sysconfig/network-scripts/中,文件名格式为 “ifcfg-XXX”,其中“XXX”是网络接口的名称。例如,网卡 ens33 的配置文件是“ifcfg- ens33”, 回环接口 lo 的配置文件是“ifcfg-lo”。

[root@localhost ~]# ls /etc/sysconfig/network-scripts/ifcfg-*
/etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts/ifcfg-lo

在网卡的配置文件 ifcfg- ens33 中,可以看到设置静态 IP 地址的部分内容如下

TYPE=Ethernet
BOOTPROTO=static
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.4.11
NETMASK=255.255.255.0
GATEWAY=192.168.4.1
  • TYPE:设置网卡类型,“Ethernet”表示以太网。
  • BOOTPROTO:设置网络接口的配置方式,值为“static”时表示使用静态指定的 IP 地址,为“dhcp”时表示通过 DHCP 的方式动态获取地址。
  • DEVICE:设置网络接口的名称。
  • ONBOOT:设置网络接口是否在 Linux 操作系统启动时激活。
  • IPADDR:设置网络接口的 IP 地址。
  • NETMASK:设置网络接口的子网掩码。
  • GATEWAY:设置网络接口的默认网关地址。

2.启用、禁用网络接口配置

在 CentOS 7 操作系统中,当修改了网络接口的配置文件以后,若要使新的配置生效, 可以重新启动 network 服务或者重启主机。

[root@localhost ~]# systemctl restart network

如果只是禁用、启用某一个网络接口(而不是所有接口),可分别使用两个接口控制脚 本 ifdown、ifup。

[root@localhost ~]# ifdown ens33
[root@localhost ~]# ifup ens33

3.主机名称配置文件

若要修改 Linux 操作系统的主机名,可以修改配置文件/etc/hostname。将要设置的主 机名写入此文件内,如果文件内输入了多行内容,此时系统仅识别第一行的内容为系统主机 名。

[root@localhost ~]# vi /etc/hostname
www.bdqn.com

通过修改/etc/hostname 来更改的主机名,如果要让其生效,需重启 Linux 系统。 此外,还可以通过 hostnamectl 命令来修改主机名。

[root@localhost ~]# hostnamectl set-hostname www.bdqn.com //设置新的主机名
[root@localhost ~]# bash //启用新的 Shell 会话,查看变化
[root@www ~]#hostname
www.bdqn.com

4.域名解析配置文件

(1)指定为本机提供 DNS 解析的服务器地址

/etc/resolv.conf 文件中记录了本机默认使用的 DNS 服务器的地址信息,对该文件所做 的修改将会立刻生效。

[root@localhost ~]# vi /etc/resolv.conf
search localdomain
nameserver 202.106.0.20
nameserver 202.106.148.1

resolv.conf 文件中的“search localdomain”行用来设置默认的搜索域(域名扩展名)。

[root@localhost ~]# vi /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifcfg-rh
dns=none
[logging]
#level=DEBUG
#domains=ALL
(2)本地主机映射文件

/etc/hosts 文件中记录着一份主机名与 IP 地址的映射关系表,一般用来保存经常需要访 问的主机的信息。当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果 找不到再去向 DNS 服务器查询。

[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4. localdomain4 …… //省略部分内容
119.75.218.70 www.baidu.com

  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值