Linux网络设置


前言

在使用 Linux 的过程中,网络设置是非常重要的一环,如果想要服务器正常运行的话,就需要把网络配置好,优化好。而怎样才能更好的配置和优化网络呢?下面我将介绍一下网络设置中的一些基本操作


一、查看网络配置

1.查看网络接口信息 ifconfig

  • 查看所有活动的网络接口信息
ifconfig

[root@localhost ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.101  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::1b07:b7c9:a5f2:8d20  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ce:75:f1  txqueuelen 1000  (Ethernet)
        RX packets 11912  bytes 1123739 (1.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7581  bytes 1090379 (1.0 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 120  bytes 13668 (13.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 120  bytes 13668 (13.3 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:13:6b:da  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”中的“en”是“EtherNet”的缩写,表示网卡类型为以太网,“s”表示热插拔插槽上的设备(hot-plug Slot),数字“33”表示插槽编号。
#lo:“回环”网络接口,“lo”是“loopback”的缩写,它不代表真正的网络接口,而是一个虚拟的网络接口,其 IP 地址默认是“127.0.0.1”。回环地址通常仅用于对本机的网络测试
  • 查看指定网络接口信息
ifconfig 网络接口

[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500                     
        inet 192.168.3.101  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::1b07:b7c9:a5f2:8d20  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ce:75:f1  txqueuelen 1000  (Ethernet)
        RX packets 11812  bytes 1115889 (1.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7556  bytes 1087891 (1.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

# inet        ip地址
# netmask     子网掩码
# broadcast   广播地址
# ether       mac地址

#(1)第一行:以太网卡的名字不是常见的eth0,变成了ens33。
#			其中en代表以太网卡
#			ens33代表PCI接口的物理位置为(0,3), 其中横座标代表bus,纵座标代表slot
#			UP:代表此网络接口为启用状态(down为关闭状态)
#			RUNNING:代表网卡设备已连接
#			MULTICAST:表示支持组播
#			MTU:为数据包最大传输单元 

#(2)第二行:网卡的IP地址、子网掩码、广播地址

#(3)第三行:IP v6地址

#(4)第四行:Ethernet(以太网)表示连接类型;
#			ether:表示为网卡的MAC地址

#(5)第五行:接受数据包个数、大小统计信息

#(6)第六行:异常接受包的个数、如丢包量、错误等

#(7)第七行:发送数据包个数、大小统计信息

#(8)第八行:发送包的个数、如丢包量、错误等
  • 显示所有活动及非活动的连接
[root@localhost ~]# ifconfig -a 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.100  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::1d33:2641:d5cf:4e9b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b3:c4:de  txqueuelen 1000  (Ethernet)
        RX packets 819676  bytes 1039801558 (991.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 261057  bytes 15924830 (15.1 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 184  bytes 19932 (19.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 184  bytes 19932 (19.4 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:b5:7e:24  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

virbr0-nic: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 52:54:00:b5:7e:24  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


#lo 是表示主机的回坏地址,IP地址固定为127.0.0.1,子网掩码为8位,表示本机。用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 HTTPD服务器的指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道

#virbr0是一个虚拟的网络连接端口,默认为0号虚拟网络连接端口;一般在通过虚拟机进行移植操作系统时,默认会以nat的网络地址转移,但是可以选择桥接或者是无网络连接也是可以的(因为本人用的是centos镜像的虚拟机,所以会有这一行)

二、网卡配置文件

网络接口的配置文件默认位于 /etc/sysconfig/network-script/ifcfg-ens33
文件名格式为 “ifcfg-XXX”,其中“XXX”是网络接口的名称。
例如,网卡 ens33 的配置文件是“ifcfg-ens33”, 回环接口 lo 的配置文件是“ifcfg-lo”。
TYPE=Ethernet #设置网卡类型,“Ethernet”表示以太网。
BOOTPROTO=static #设置网络接口的配置方式,值为“static”时表示使用静态指定的 IP 地址,为“dhcp”时表示通过 DHCP 的方式动态获取地址。
DEVICE=ens33 #设置网络接口的名称
NAME=ens33 #设置网络接口的名称
UUID=01f717ed-f7ac-4ac0-a209-c7c5889e3635 #设备ID
ONBOOT=yes #设置网络接口是否在 Linux 操作系统启动时激活。
IPADDR=192.168.10.9 #设置网络接口的 IP 地址。
NETMASK=255.255.255.0 #设置网络接口的子网掩码。
GATEWAY=192.168.10.1 #设置网络接口的默认网关地址
DNS1=8.8.8.8 #设置域名解析服务器
DNS2=114.114.114.114

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

注:建议关闭NetworkManager服务,否则有时启动network会报错
systemctl stop NetworkManager
systemctl disable NetworkManager

3.设置网络接口参数 ifconfig

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

ifconfig ens37 192.168.10.20 netmask 255.255.255.0 #临时配置网卡的ip地址
ifconfig ens37 192.168.10.20/24 #当不指定子网掩码时,将使用 IP 地址所在分类的默认子网掩码

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

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

ifconfig ens37 down|up 或
ifup/ifdown ens37

ifdown ens33 && ifup ens33
#关闭并开启
  1. 为网卡绑定虚拟接口:

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

ifconfig ens33:0 192.168.20.20

三、查看主机名称 hostname

  1. 主机名

在 Linux 操作系统中,相当一部分网络服务都会通过主机名来识别主机,如果主机名配置不当,可能会导致程序功能出现故障

[root@localhost ~]# hostname
localhost.localdomain
  1. 临时修改主机名称
 hostname  lzzz
  1. 永久修改
hostnamectl set-hostname  lzzz

vim /etc/hostname

四、查看路由表条目 route

  1. route命令

查看或设置主机中路由表信息
使用-n可以将路由记录中的地址显示为数字形式,这可以跳过解析主机名的过程,在路由表条目较多的情况下能够加快执行速度

route -n

例:

[root@localhost ~]$route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.3.2     0.0.0.0         UG    100    0        0 ens33
192.168.3.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

#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.3.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

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

添加、删除静态路由记录
route 命令不仅可以用于查看路由表信息,还可用来添加、删除静态的路由表条目,其中也包括设置默认网关地址(默认网关记录是一条特殊的静态路由条目)

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

route add -net 192.168.3.0/24 gw 192.168.10.1 
#表示可以通过192.168.10.1到192.168.3.0/24网络
route del -net 192.168.3.0/24 


五、netstat命令

  • 查看系统的网络连接状态、路由表、接口统计等信息,它是了解网络状态及排除网络服务故障的有效工具

netstat 【选项】

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

  • 用法:
  1. 通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的 TCP 连接信息,同时显示对应的进程信息
  2. 配合管道符grep过滤出特定的记录
[root@localhost ~]$netstat -anpt |grep ":80"
tcp6       0      0 :::80                   :::*                    LISTEN      1943/httpd 

六、ss命令

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

但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快速更高效

当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢

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

[root@localhost ~]# time ss
real	0m0.012s
user	0m0.003s
sys		0m0.005s

[root@localhost ~]# time netstat -an
real	0m0.027s
user	0m0.001s
sys		0m0.006s

查看并发连接数ss和netstat对比
[root@shengjie ~]#  time netstat -ant | grep EST | wc -l
0

real	0m0.002s
user	0m0.002s
sys		0m0.002s
[root@shengjie ~]#  time ss -o state established | wc -l
711

real	0m0.013s
user	0m0.003s
sys		0m0.003s
  • 为什么ss比netstat快?

netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多

  • 选项

-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@centos7 ~]# ss -tn | grep -w 22
ESTAB      0      0      192.168.245.151:22                 192.168.245.152:35318              
ESTAB      0      21800  192.168.0.105:22                 192.168.0.103:61488              
ESTAB      0      0      192.168.0.105:22                 192.168.0.103:61491          

[root@localhost ~]# ss -o state 'established' | grep ssh   
#-o选项可用于显示计时器信息。该信息向我们展示了诸如重新传输计时器值、已经发生的重新传输的数量以及已发送的keepalive探测的数量
tcp    0      52     192.168.245.211:ssh                  192.168.245.1:64550                 timer:(on,234ms,0)

[root@localhost ~]# ss -t state established   
#established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, closed-wait, last-ack监听和关闭等状态
Recv-Q Send-Q        Local Address:Port                         Peer Address:Port                
0      52          192.168.245.211:ssh                         192.168.245.1:64550                


[root@shengjie ~]# ss -tnl sport le 500
State       Recv-Q Send-Q                 Local Address:Port                                Peer Address:Port              
LISTEN      0      128                                *:111                                            *:*                  
LISTEN      0      5                      192.168.122.1:53                                             *:*                  
LISTEN      0      128                                *:22                                             *:*                  
LISTEN      0      100                        127.0.0.1:25                                             *:*                  
LISTEN      0      128                               :::111                                           :::*                  
LISTEN      0      128                               :::22                                            :::*                  
LISTEN      0      100                              ::1:25                                            :::*           

七、测试网络连通性 ping

  • ping命令
root@localhost ~]# ping 192.168.10.10   
#最常用是后面跟ip地址
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=2.29 ms
64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=1.02 ms
64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=2.07 ms
64 bytes from 192.168.10.10: icmp_seq=4 ttl=64 time=0.833 ms
64 bytes from 192.168.10.10: icmp_seq=5 ttl=64 time=1.51 ms
64 bytes from 192.168.10.10: icmp_seq=6 ttl=64 time=2.03 ms
^C
--- 192.168.10.10 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5034ms
rtt min/avg/max/mdev = 0.833/1.628/2.290/0.553 ms


[root@localhost ~]# ping www.baidu.com    
#后面还可跟域名
PING www.a.shifen.com (180.101.49.11) 56(84) bytes of data.
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=1 ttl=128 time=8.00 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=2 ttl=128 time=7.66 ms
^C
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 7.660/7.832/8.005/0.193 ms


[root@localhost ~]# ping -c 10 192.168.10.10   
#-c表示指定ping的次数
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=2.43 ms
64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=1.11 ms
64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=2.30 ms
64 bytes from 192.168.10.10: icmp_seq=4 ttl=64 time=0.742 ms
64 bytes from 192.168.10.10: icmp_seq=5 ttl=64 time=2.13 ms
64 bytes from 192.168.10.10: icmp_seq=6 ttl=64 time=2.41 ms
64 bytes from 192.168.10.10: icmp_seq=7 ttl=64 time=1.55 ms
64 bytes from 192.168.10.10: icmp_seq=8 ttl=64 time=0.769 ms
64 bytes from 192.168.10.10: icmp_seq=9 ttl=64 time=0.317 ms
64 bytes from 192.168.10.10: icmp_seq=10 ttl=64 time=2.22 ms

--- 192.168.10.10 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9081ms
rtt min/avg/max/mdev = 0.317/1.600/2.439/0.766 ms

[root@localhost ~]# ping -c 10 -i 0.5 192.168.10.10   
#-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.796 ms
64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=1.83 ms
64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=0.501 ms
64 bytes from 192.168.10.10: icmp_seq=4 ttl=64 time=0.878 ms
64 bytes from 192.168.10.10: icmp_seq=5 ttl=64 time=2.26 ms
64 bytes from 192.168.10.10: icmp_seq=6 ttl=64 time=0.885 ms
64 bytes from 192.168.10.10: icmp_seq=7 ttl=64 time=1.46 ms
64 bytes from 192.168.10.10: icmp_seq=8 ttl=64 time=1.56 ms
64 bytes from 192.168.10.10: icmp_seq=9 ttl=64 time=1.80 ms
64 bytes from 192.168.10.10: icmp_seq=10 ttl=64 time=2.18 ms

--- 192.168.10.10 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 4610ms
rtt min/avg/max/mdev = 0.501/1.418/2.269/0.589 ms


[root@shengjie ~]# ping -w 5 www.baidu.com     
#表示ping的超时时间为5s,意思是只ping5秒,5秒后结束
PING www.a.shifen.com (180.101.49.11) 56(84) bytes of data.
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=1 ttl=128 time=23.4 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=2 ttl=128 time=7.00 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=3 ttl=128 time=18.8 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=4 ttl=128 time=10.4 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=5 ttl=128 time=11.1 ms

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


八、跟踪数据包 traceroute

  • traceroute 命令
    测试从当前主机到目的主机之间经过的网络节点

traceroute 目标主机地址

[root@localhost ~]# traceroute 192.168.3.100
traceroute to 192.168.3.100 (192.168.3.100), 30 hops max, 60 byte packets
 1  localhost.localdomain (192.168.3.100)  0.050 ms  0.040 ms  0.022 ms

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

九、域名解析 nslookup

  • 测试DNS域名解析

nslookup 目标主机地址 [DNS服务器地址]

例:

nslookip www.google.com
Server:        202.106.0.20  
Address:        202.106.0.20#53
#DNS服务器地址
Non-authoritative answer:
Name: www.l.google.com
Address: 173.194.127.51
#解析的IP地址

十、本地主机映射文件

  1. /etc/hosts 文件

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

  1. hosts文件和DNS服务器的比较

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


总结

  • 查看网络配置
    -ifconfig、hostname、route、netstat、ss
  • 测试网络连接
    -ping、traceroute、nslookup、dig
  • 设置网络地址参数
    -临时配置、永久配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值