Linux 网络设置
- 一、查看网络
-
-
- 1、查看网络接口地址
- 2、查看更改主机名
- 3、查看路由表条目
- 4、查看网络连接情况
-
-
- netstat 命令
- ss 命令
-
-
- 二、测试网络连接
-
-
- 1、测试网络连通性
- 2、跟踪数据包的路由途径
- 3、测试 DNS 域名解析
-
-
- nslookup命令
- dig 命令
-
-
- 三、使用网络配置命令
-
-
- 1、临时配置和永久配置的解释
- 2、修改网卡的地址、状态
- 2、添加、删除静态路由与默认路由记录
-
- 四、修改网络配置文件
-
-
- 1、网络接口配置文件
- 2、启用、禁用网络接口配置
- 3、域名解析配置文件
-
一、查看网络
1、查看网络接口地址
主机的网络接口卡(网卡)通常称为网络接口。在 Linux 操作系统中,使用 ifconfig 命令可以查看网络接口的地址配置信息(Interface Configuration)。
注:若没有 ifconfig 命令的,需要先通过 yum 方式安装 net-tools 软件包,才有 ifconfig 命令。
第一种方法查看
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.8 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::8c58:4d06:fde9:2d7d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:fe:06:f3 txqueuelen 1000 (Ethernet)
RX packets 684409 bytes 987345087 (941.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 175406 bytes 15317449 (14.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 135 bytes 12160 (11.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 135 bytes 12160 (11.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
第二种方法查看
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:fe:06:f3 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.8/24 brd 192.168.10.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::8c58:4d06:fde9:2d7d/64 scope link
- ens33:第一块以太网卡的名称。“ens33”中的“en”是“EtherNet”的缩写,表示网卡类型为以太网。
- lo:“回环”网络接口,“lo”是“loopback”的缩写,它不代表真正的网络接口,而是一个虚拟的网络接口, 其 IP 地址默认是“127.0.0.1”。回环地址通常仅用于对本机的网络测试。
- inet:表示网络接口的 IP 地址。
- netmask:表示网络接口的子网掩码。
- broadcast:表示网络接口所在网络的广播地址。
- ether:表示网络接口的物理地址(MAC 地址)。
- “TX”通过该网络接口发送的数据包个数、流量等。
- “RX”通过该网络接口接收的数据包个数、流量等。
2、查看更改主机名
在 Linux 操作系统中,相当一部分网络服务都会通过主机名来识别主机,如果主机名配置不当,可能会导致程序功能出现故障。使用 hostname 命令可以查看当前主机的主机名。
方法一
[root@localhost ~]# hostname //查看原来的主机名
localhost.localdomain
[root@localhost ~]# hostname www //设置新的主机名
[root@localhost ~]# hostname //确认新的主机名
www
[root@localhost ~]# bash //启用新的Shell 会话,查看变化
[root@www ~]#hostname
www
方法二
[root@localhost ~]# vi /etc/hostname
www
通过修改/etc/hostname 来更改的主机名,如果要让其生效,需重启 Linux 系统。
方法三
[root@localhost ~]# hostnamectl set-hostname www //设置新的主机名
[root@localhost ~]# bash //启用新的Shell 会话,查看变化
[root@www ~]#hostname
www
3、查看路由表条目
[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.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.10.2 0.0.0.0 UG 100 0 0 ens33
192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
- Destination 列对应目标网段的地址
- Gateway 列对应下一跳路由器的地址
- Iface 列对应发送数据的网络接口
- 若结合“-n”选项使用,可以将路由记录中的地址显示为数字形式,这可以跳过解析主机名的过程,在路由表条目较多的情况下能够加快执行速度。
4、查看网络连接情况
netstat 命令
通过 netstat 命令可以查看当前操作系统的网络连接状态、路由表、接口统计等信息, 它是了解网络状态及排除网络服务故障的有效工具。
netstat 命令常用的选项:
- -a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
- -n:以数字的形式显示相关的主机地址、端口等信息。
- -r:显示路由表信息。
- -l:显示处于监听(Listening)状态的网络连接及端口信息。
- -t:查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息。
- -u:显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息。
- -p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)。
通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的 TCP 连接信息,同时显
示对应的进程信息。
[root@localhost ~]# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1338/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1024/sshd
ss 命令
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 解释为域名,把端口号解释为协议名称。
[root@localhost ~]# ss -anpt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:* users:(("systemd",pid=1,fd=43))
LISTEN 0 5 192.168.122.1:53 *:*
- “Local Address:Port” 表示本地监听的 IP 和端口
- “Peer Address:Port”表示远端连接的 IP 和端口
二、测试网络连接
用户访问网络服务的前提是网络连接处于正常状态。若网络连接不稳定,甚至无法连接, 用户则无法正常访问网络服务。因此,当网络连接出现问题时,需要通过测试网络连接的命令来确定故障点。
1、测试网络连通性
使用 ping 命令可以向目标主机持续地发送测试数据包,并显示反馈结果,直到按 Ctrl
+C 组合键后中止测试,并显示最终统计结果。
[root@localhost ~]# ping www.baidu.com
PING www.wshifen.com (103.235.46.39) 56(84) bytes of data.
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=1 ttl=128 time=210 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=2 ttl=128 time=210 ms
[root@localhost ~]# ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=0.182 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=0.355 ms
执行 ping 测试命令时,若不能获得从目标主机发回的反馈数据包,则表示在本机到目标主机之间存在网络连通性故障。
- 若看到“Destination Host Unreachable”的反馈信息, 则表示目的主机不可达, 可能目标地址不存在或者主机已经关闭
- 若看到“Network is unreachable”的反馈信息,则表示没有可用的路由记录(如默认网关),无法达到目标主机所在的网络。
- “Request timeout”的反馈结果,表示与目标主机间的连接超时(数据包响应缓慢或丢失)。除此以外,当网络中存在影响通信过程稳定性的因素(如网卡故障、病毒或网络攻击等)或当目标主机有严格的防火墙限制时,也可能收到“Request timeout”的反馈结果。
2、跟踪数据包的路由途径
-
若服务器上没有 traceroute 命令,可通过 yum 方式安装 traceroute 软件包。traceroute 命令可以用于测试从当前主机到目的主机之间经过了哪些网络结点,并显示各中间结点的连接状态(响应时间)。对于无法响应的结点,连接状态将显示为“*”。
-
traceroute 命令能够比 ping 命令更加准确地定位网络连接的故障点(中断点),因此执行速度会比 ping 命令稍慢。在网络测试与排错过程中,通常会先使用 ping 命令测试与目的主机的网络连接,如果发现网络连接有故障,再使用 traceroute 命令跟踪查看是在哪个中间结点存在故障。
方法一
[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (104.193.88.123), 30 hops max, 60 byte packets
1 gateway (192.168.10.2) 0.050 ms 0.026 ms 0.023 ms
2 * * *
3 * * *
方法二
[root@localhost ~]# mtr www.baidu.com
My traceroute [v0.85]
localhost.localdomain (0.0.0.0) Mon Nov 2 10:00:17 2020
Resolver: Received error response 2. (server failure)er of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.10.2 0.0% 19 0.2 0.4 0.2 1.2 0.0
2. 192.168.1.1 0.0% 19 1.7 1.4 1.1 1.9 0.0
3. 192.168.0.1 0.0% 18 3.2 2.1 1.4 3.2 0.2
4. 100.94.128.1 0.0% 18 56.8 16.4 2.9 103.3 26.7
5. 58.217.231.37 0.0% 18 5.0 4.9 3.0 6.9 1.0
3、测试 DNS 域名解析
nslookup命令
- 当域名解析出现异常时,将无法使用域名的形式访问网络中的 Web 站点、电子邮件系统等服务。nslookup 命令是用来测试域名解析的专用工具,使用时只要指定要解析的目标域名作为参数即可。若在执行过程中提示无法找到nslookup 命令,可通过yum 安装bind-utils 程序包的方式来解决。
[root@localhost ~]# nslookup www.caidu.com
Server: 8.8.8.8 //所使用的DNS 服务器
Address: 8.8.8.8#53
Non-authoritative answer: //DNS 解析的反馈结果
Name: www.caidu.com
Address: 45.76.29.156
- 若出现“…… no servers could be reached”的信息,则表示不能连接到指定的DNS 服务器。
- 若出现“…… can’t find xxx.yyy.zzz: NXDOMAIN”的信息, 则表示要查询的域名不存在。
dig 命令
[root@localhost ~]# dig baidu.com
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> baidu.com // dig 的版本及输入参数
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37833
;; 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. 498 IN A 220.181.38.148
baidu.com. 498 IN A 39.156.69.79
//经DNS 返回后的查询结果
;; Query time: 41 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 一 11月 02 10:14:31 CST 2020
;; MSG SIZE rcvd: 70
//查询后的一些统计信息,比如用了 41 毫秒,查询 DNS 服务器的IP 地址,查询的时间等等
dig 在查询过程中,还可以指定特点的 DNS 服务器。
如果不指定 DNS 服务器,默认会使用/etc/resolve.conf 里面的地址作为 DNS 服务器。
[root@localhost ~]# dig @8.8.8.8 baidu.com
三、使用网络配置命令
1、临时配置和永久配置的解释
- 临时配置:通过命令行直接修改当前正在使用的网络地址,修改后立即可以生效。 这种方式操作简单快速、执行效率高,一般在调试网络的过程中使用。但由于所做的修改并没有固定地存放在静态的文件中,因此当重启 network 服务或重启主机后将会失效。
- 固定配置:通过配置文件来存放固定的各种网络地址,需要重启 network 服务或重启主机后才会生效。这种方式操作上相对要复杂一些,但相当于“永久配置”,一般在需要为服务器设置固定的网络地址时使用。
2、修改网卡的地址、状态
ifconfig 网络接口名称 IP 地址 [ netmask 子网掩码 ]
ifconfig 网络接口名称 IP 地址[/子网掩码长度]
- 在对服务器网络进行调试的过程中,有时候需要临时在同一个网卡上使用一个新的 IP 地址,但是又不能覆盖原有 IP 地址而导致服务程序不可用。这时可以为网卡绑定一个虚拟的网络接口,虚拟接口的 IP 地址和网卡原有的 IP 地址都可以正常使用。
- [root@localhost ~]# ifconfig ens33:0 192.168.10.55
- 可以根据需要添加更多的虚拟接口,如“ens33:1”“ens33:2”等。
2、添加、删除静态路由与默认路由记录
- 通过“route add”操作可以添加路由记录,结合“-net”选项指定目标网段的地址,结合“gw” 选项指定下一跳路由器的IP地址
[root@www ~]# route add -net 目标网段 gw 下一跳地址
[root@www ~]# route del -net 目标网段 gw 下一跳地址 - 添加、删除默认网关记录时,与添加、删除静态路由记录的命令格式类似,但指定目标网段时只需简单地使用“default”表示即可,无须再使用“-net”选项指明网段地址。
[root@www ~]# route del default gw 网关地址 //删除默认网关记录
[root@www ~]# route add default gw 网关地址 //添加新的默认网关记录
四、修改网络配置文件
1、网络接口配置文件
网络接口的配置文件默认位于目录/etc/sysconfig/network-scripts/中,文件名格式为“ifcfg-XXX”,其中“XXX”是网络接口的名称。
[root@localhost ~]# ls /etc/sysconfig/network-scripts/ifcfg-*
/etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts/ifcfg-lo
/etc/sysconfig/network-scripts/ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
DEVICE="ens36"
ONBOOT="yes"
IPADDR="192.168.20.1"
NETMASK="255.255.255.0"
GATEWAY="192.168.20.254"
- TYPE:设置网卡类型,“Ethernet”表示以太网。
- BOOTPROTO:设置网络接口的配置方式,值为“static”时表示使用静态指定的 IP
地址,为“dhcp”时表示通过 DHCP 的方式动态获取地址。 - DEVICE:设置网络接口的名称。
- ONBOOT:设置网络接口是否在 Linux 操作系统启动时激活。
- IPADDR:设置网络接口的 IP 地址。
- ETMASK:设置网络接口的子网掩码。
- GATEWAY:设置网络接口的默认网关地址。
2、启用、禁用网络接口配置
1)启用网络接口
[root@localhost ~]# systemctl restart network //重启network服务
//会先关闭所有的网络接口,再根据配置文件重新启用所有的网络接口。
//现实环境中不是特殊情况不建议使用
[root@localhost ~]# ifup ens33 或ifconfig ens33 up
2)关闭网络接口
[root@localhost ~]# ifup ens33 或ifconfig ens33 down
3、域名解析配置文件
1)指定为本机提供 DNS 解析的服务器地址
/etc/resolv.conf 文件中记录了本机默认使用的 DNS 服务器的地址信息,对该文件所做的修改将会立刻生效。Linux 操作系统中最多可以指定 3 个(第 3 个以后的将被忽略)不同的 DNS 服务器地址,优先使用第一个 DNS 服务器。
[root@localhost ~]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 114.114.114.114
- 但是,在 CentOS 7 环境下,如果按照上面方式配置,过一段时间会被系统重新覆盖或者清除,此时需要修改/etc/NetworkManager/NetworkManager.conf 文件,在 main 部分添加“dns=none”配置项。之后需要重启 NetworkManager 服务。确保/etc/resolv.conf 内有配置信息,此时就可以正常解析域名了。
[root@localhost ~]# vi /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifcfg-rh
dns=none
2)本地主机映射文件
- /etc/hosts 文件中记录着一份主机名与 IP 地址的映射关系表,一般用来保存经常需要访问的主机的信息。当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果找不到再去向 DNS 服务器查询。
- 对于经常访问的一些网站,可以通过在/etc/hosts 文件添加正确的映射记录,减少 DNS 查询过程,从而提高上网速度。当然,若添加了错误的映射记录,则可能导致网站访问出现异常。另外,因为 hosts 文件只保存在本地,所以其中的映射记录也只适用于当前主机,而无法作用于整个网络。
[root@localhost ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
格式为IP地址域名或IP地址主机名
192.168.20.5 www.wodejia.com
192.168.20.55 node1