当前位置: > Linux教程 > linux基础 >

Linux 网络设置(ifconfig、route、traceroute、netstat、ss、nslookup、dig)

时间:2020-11-05 16:20来源:linux.it.net.cn 作者:IT

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.it.net.cn 192.168.20.55 node1



(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容