Linux网络配置

150 阅读11分钟

1 网络配置命令

1.1 ifconfig(查看网络接口信息)

ifconfig命令来自于net-tools包

[root@localhost ~]# rpm -qi net-tools
Name        : net-tools
Version     : 2.0
Release     : 0.22.20131004git.el7
Architecture: x86_64
Install Date: 2022年08月31日 星期三 19时12分31秒
Group       : System Environment/Base
Size        : 938986
License     : GPLv2+
Signature   : RSA/SHA256, 2017年08月11日 星期五 02时30分02秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : net-tools-2.0-0.22.20131004git.el7.src.rpm
Build Date  : 2017年08月03日 星期四 17时17分34秒
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://sourceforge.net/projects/net-tools/
Summary     : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.

基本用法:

格式含义
ifconfig显示当前主机中已启用(活动)的网络接口信息
ifconfig -a显示所有网络接口(包括没有启动的网卡)
ifconfig 具体网卡名称只显示具体网卡的详细信息(无论是否启用)
ifconfig 网卡名称 up/down表示开启或关闭指定网卡
ifconfig 网络接口 IP地址[/子网掩码长度]新建临时IP地址(添加一块虚拟网卡)
ifconfig -s查看通讯情况

1.1.1 查看所以启用的网络接口信息

在不带任何选项和参数执行 ifconfig 命令时, 将显示当前主机中已启用(活动)的网络接口信息

网卡名称详解:

ens33:第一块以太网卡的名称详解:

“ens33”中的:

  • “en”是“EtherNet”的缩写,表示网卡 类型为以太网,
  • “s” 表示热插拔插槽上的设备(hot-plug Slot),
  • 数字“33”表示插槽 编号
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.90  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::8d6b:bcf6:569d:2e00  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e1:60:8d  txqueuelen 1000  (Ethernet)
        RX packets 1449  bytes 130081 (127.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2777  bytes 262801 (256.6 KiB)
        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 585  bytes 46000 (44.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 585  bytes 46000 (44.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:8e:ea:ab  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33网卡信息每行详细解释:

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
#ens33:网卡名称  
#UP:该接口已启用  
#BROADCAST:支持广播  
#RUNNING:正在允许  
#MULTICAST:支持组播  
#mtu 1500:网络传输时的最大传输单元,单位字节。这里为1500字节

inet 192.168.10.90  netmask 255.255.255.0  broadcast 192.168.10.255
#这一行是网络接口的IP地址、子网掩码、广播地址

inet6 fe80::8d6b:bcf6:569d:2e00  prefixlen 64  scopeid 0x20<link>
#这一行是IPV6地址、子网长度、作用域(link小时仅该接口有效)

ether 00:0c:29:e1:60:8d  txqueuelen 1000  (Ethernet)
#这一行是mac地址、传输队列长度(传输缓存大小)、接口类型

RX packets 1449  bytes 130081 (127.0 KiB)
#接收报文个数、总字节数

RX errors 0  dropped 0  overruns 0  frame 0
#接收错误个数、丢弃个数、溢出个数、冲突帧数

TX packets 2777  bytes 262801 (256.6 KiB)
#发送报文个数、总字节数

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
#发送错误个数、丢弃个数、溢出个数、载荷数、冲突数

1.1.2 查看、开启、关闭、设置指定网卡

1.查看网卡ens33:

[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.90  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::8d6b:bcf6:569d:2e00  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e1:60:8d  txqueuelen 1000  (Ethernet)
        RX packets 1571  bytes 139490 (136.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2808  bytes 266403 (260.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2.关闭、开启网卡ens33:

[root@localhost ~]# ifconfig ens33 down   //关闭  
[root@localhost ~]# ifconfig ens33 up     //开启

3.设置临时虚拟网卡

 [root@localhost ~]# ifconfig ens33:0 192.168.72.20      //设置虚拟网卡ens33:0
 [root@localhost ~]# ifconfig ens33:0
 ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
         inet 192.168.10.20  netmask 255.255.255.0  broadcast 192.168.10.255
         ether 00:0c:29:18:b5:ff  txqueuelen 1000  (Ethernet)

4.查看网络通讯情况

[root@localhost ~]# ifconfig -s
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33     1500     1587      0      0 0          2824      0      0      0 BMRU
lo       65536      585      0      0 0           585      0      0      0 LRU
virbr0    1500        0      0      0 0             0      0      0      0 BMU

1.2 hostname(查看主机名称)

查看或设置当前主机名

hostname [主机名]

例: 1.查看主机名称

[root@localhost ~]# hostname
localhost.localdomain

2.临时修改主机名称

[root@localhost ~]# hostname km
[root@localhost ~]# su
[root@km ~]# hostname
km

永久修改主机名称,修改后重启生效:

  • 通过修改/etc/hostname文件
  • 通过hostnamectl来修改主机名

1.3 route(查看路由表条目)

查看或设置主机中路由表信息

命令格式:

 route           //打印路由表
 
 route -n        //以数字形式显示路由信息
 
 route add -net  网段地址 gw IP地址     //添加指定网段的路由记录
 
 route del -net 网段地址               //删除指定网段的路由记录
 
 route add default gw IP地址          //向路由表中添加默认网关记录
 
 route del default gw  IP地址         //删除路由表中默认的网关记录

例:

[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
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.254  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
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

1.4 neststat(查看网络连接情况)

格式:

netstat 选项

常用选项

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

例:

[root@localhost ~]# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN     
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN     
tcp        0      0 localhost.locald:domain 0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:rndc          0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0      0 localhos:x11-ssh-offset 0.0.0.0:*               LISTEN     
tcp        0      0 localhost:6011          0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN     
tcp6       0      0 localhost:domain        [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN     
tcp6       0      0 localhost:rndc          [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
tcp6       0      0 localhos:x11-ssh-offset [::]:*                  LISTEN     
tcp6       0      0 localhost:6011          [::]:*                  LISTEN
[root@localhost ~]# netstat -tnlp
Active Internet connections (only servers)
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 127.0.0.1:53            0.0.0.0:*               LISTEN      1653/named          
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1322/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1128/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1123/cupsd          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1653/named          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1269/master         
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      1563/sshd: root@pts 
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      2123/sshd: root@pts 
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 ::1:53                  :::*                    LISTEN      1653/named          
tcp6       0      0 :::22                   :::*                    LISTEN      1128/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1123/cupsd          
tcp6       0      0 ::1:953                 :::*                    LISTEN      1653/named          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1269/master         
tcp6       0      0 ::1:6010                :::*                    LISTEN      1563/sshd: root@pts 
tcp6       0      0 ::1:6011                :::*                    LISTEN      2123/sshd: root@pts 

1.5 ss(查看网络连接情况)

格式

ss [选项]

ss 命令:也可以查看网络连接情况,主要用于获取 socket 统计信息,它可以显示和 netstat 命令类似的输出内容。

但 ss 的优势在于它能够显示更多更详细的有关 TCP 和UDP连接状态的信息,而且比 netstat 更快速更高效 当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。

ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效 ss命令是Linux CentOS 7中iproute软件包的一部分,默认已经安装。

选项:

选项作用
-ttcp协议相关
-uudp协议相关
-w裸套接字相关
-xunix sock相关
-llisten状态的连接
-a所有
-n数字格式
-p相关的程序及PID
-e扩展的信息
-m内存用量
-o计时器信息
-r--resolve 把 IP 解释为域名,把端口号解释为协议名称
[root@localhost ~]# ss -ntap |grep 22   //查看TCP协议下的22端口
LISTEN     0      5      192.168.122.1:53                       *:*                   users:(("dnsmasq",pid=1322,fd=6))
LISTEN     0      128          *:22                       *:*                   users:(("sshd",pid=1128,fd=3))
ESTAB      0      36     192.168.10.90:22                 192.168.10.1:55862               users:(("sshd",pid=2123,fd=3))
ESTAB      0      0      192.168.10.90:22                 192.168.10.1:55653               users:(("sshd",pid=1563,fd=3))
LISTEN     0      128         :::22                      :::*                   users:(("sshd",pid=1128,fd=4))

2 测试网络连接

2.1 ping(测试网络连通性)

ping [选项] 目标主机

选项:

选项作用
-w超时时间
-c count指定发送报文的次数
-i指定收发信息的间隔时间
-s设置数据包的大小
-n只输出数值
-p设置填满数据包的范本样式
-q不显示指令执行过程
-R记录路由过程
-t设置存活数值TTL的大小
-v详细显示指令的执行过程
[root@localhost ~]# ping -w 4 192.168.10.90      //等待时间为4秒,4秒后自动退出
PING 192.168.10.90 (192.168.10.90) 56(84) bytes of data.
64 bytes from 192.168.10.90: icmp_seq=1 ttl=64 time=0.036 ms
64 bytes from 192.168.10.90: icmp_seq=2 ttl=64 time=0.054 ms
64 bytes from 192.168.10.90: icmp_seq=3 ttl=64 time=0.068 ms
64 bytes from 192.168.10.90: icmp_seq=4 ttl=64 time=0.054 ms
64 bytes from 192.168.10.90: icmp_seq=5 ttl=64 time=0.062 ms

--- 192.168.10.90 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.036/0.054/0.068/0.014 ms

2.2 traceroute(跟踪数据包)

格式:

traceroute IP地址
[root@localhost ~]# traceroute 192.168.10.90
traceroute to 192.168.10.90 (192.168.10.90), 30 hops max, 60 byte packets
 1  localhost.localdomain (192.168.10.90)  0.043 ms  0.008 ms  0.007 ms

2.3 nslookup(域名解析)

nslookup 目标主机地址 [DNS服务器地址]
[root@localhost ~]#nslookup www.baidu.com
Server:		8.8.8.8
Address:	8.8.8.8#53

2.4 dig(域名解析)

[root@localhost ~]# dig www.baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 49854
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com.			IN	A

;; Query time: 5000 msec
;; SERVER: 192.168.10.90#53(192.168.10.90)
;; WHEN:  10 17 17:39:19 CST 2022
;; MSG SIZE  rcvd: 42

永久修改网络相关配置

设置网络参数的方式:

  • 临时配置--使用命令调整网络参数

    • 简单、快速,可直接修改运行中的网络参数
    • 一般只适合在调试网络的过程中使用
    • 系统重启以后,所做的修改将会失效
  • 固定设置--通过配置文件修改网络参数

    • 修改各项网络参数的配置文件
    • 适合对服务器设置固定参数时使用
    • 需要重载网络服务或者重启以后才会生效

3.1 静态NAT网络设置

网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-ens33

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=11f320f1-98e3-4bfa-a551-87e3101239de
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.10.90
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
DNS1=192.168.10.90

3.2 双网卡设置

设置中添加网卡 image.png

image.png

image.png

主机1

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36   //ens33改为ens36
UUID=11f320f1-98e3-4bfa-a551-87e3101239de
DEVICE=ens36 //ens33改为ens36
ONBOOT=yes
IPADDR=192.168.10.91 //改变地址
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
DNS1=192.168.10.90

[root@localhost network-scripts]# systemctl restart network  //重启网络服务

主机2:

[root@localhost ~]# ping 192.168.10.91
PING 192.168.10.91 (192.168.10.91) 56(84) bytes of data.
64 bytes from 192.168.10.91: icmp_seq=1 ttl=64 time=0.422 ms
64 bytes from 192.168.10.91: icmp_seq=2 ttl=64 time=0.331 ms
64 bytes from 192.168.10.91: icmp_seq=3 ttl=64 time=0.353 ms
64 bytes from 192.168.10.91: icmp_seq=4 ttl=64 time=0.356 ms
64 bytes from 192.168.10.91: icmp_seq=5 ttl=64 time=0.392 ms
.......

在ping的过程中断开一块网卡的连接

image.png

可以发现主机2 ping并未停止,即双网卡设置成功

Snipaste_2022-10-17_17-18-30.png

3.3 域名解析配置文件

/etc/resolv.conf 文件,保存本机需要使用的DNS服务器的IP地址。

[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.10.90

3.4 本地主机映射文件

/etc/hosts 文件,保存主机名与IP地址的映射记录

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

hosts 文件和DNS服务器的比较:

  • 默认情况下,系统首先从hosts文件查找解析记录
  • hosts 文件只对当前的主机有效
  • hosts 文件可减少DNS查询过程,从而加快访问速度