文章目录
前言
查看及测试网络配置是管理 Linux 网络服务的第一步,只有在配置好网络环境的基础下才能更好的进行服务。本篇文章主要介绍 Linux 系统的网络基础设置 ,对于 Linux 初学者有一定的帮助,有需要的朋友可以了解一下。
一、查看网络配置
1.查看网络接口地址
使用 ifconfig 命令可以查看网络接口的地址配置信息
- 查看活动的网络接口设备
[root@localhost ~]#ifconfig #不带任何选项和参数时,显示当前主机中已启用的网络接口信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.24.129 netmask 255.255.255.0 broadcast 192.168.24.255
inet6 fe80::88c5:1c37:ef02:f37f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d2:bb:c5 txqueuelen 1000 (Ethernet)
RX packets 269 bytes 189230 (184.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 114 bytes 14502 (14.1 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
- 上面输出结果中,ens33 表示第一块以太网卡的名称。“ens33” 中的“en”是“EtherNet”的缩写,表示网卡类型为以太网,“s”表示热插拔插槽上的设备(hot-plug Slot),数字“33”表示插槽编号。
- lo:“回环”网络接口,“lo”是“loopback”的缩写,它不代表真正的网络接口,而是一个虚拟的网络接口,其 IP 地址默认是“127.0.0.1”。回环地址通常仅用于对本机的网络测试
- 如果想要查看所有网络接口信息,只需要在 ifconfig 命令的后面加上 -a 即可,如下
[root@localhost ~]#ifconfig -a
- 查看指定的网络接口信息
当只需要查看其中某一个网络接口的信息时,可以使用网络接口的名称作为参数,例如,查看网卡 ens33 的配置信息:
[root@localhost ~]#ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.24.129 netmask 255.255.255.0 broadcast 192.168.24.255
inet6 fe80::88c5:1c37:ef02:f37f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d2:bb:c5 txqueuelen 1000 (Ethernet)
RX packets 1357 bytes 553644 (540.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 317 bytes 33584 (32.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
上面输出结果中,可以得到 ens33 网卡的一些基本信息,如下所述。
- inet:表示网络接口的 IP 地址
- ether:表示网络接口的物理地址,即 MAC 地址。
- broadcast:表示网络接口所在的网络的广播地址
- netmask:表示网络接口的子网掩码
除此以外,还能通过“TX” “RX”等信息了解通过该网络接口发送和接收的数据包个数、流量等属性。
2.查看路由表条目
- Linux 系统中的路由表决定着从本机向其他主机、其他网络发送数据的去向,是排查网络故障的关键信息。
- 直接执行 route 命令可以查看当前主机中的路由表信息
[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.24.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 列对应发送数据的网络接口
- 结合“-n”选项使用,可以将路由记录中的地址显示为数字形式
[root@localhost ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.24.2 0.0.0.0 UG 100 0 0 ens33
192.168.24.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
3.查看网络连接情况
通过 netstat 命令可以查看当前系统得网络连接状态、路由表、接口统计等信息。也是了解网络状态及排除网络服务故障的有效工具。
#netstat [选项]
- 常用选项如下
选项 | 说明 |
---|---|
-a | 显示当前主机中所有活动的网络连接情况 |
-n | 以数字的形式显示相关的主机地址、端口等信息 |
-r | 显示路由表信息 |
-l | 显示处于监听状态的网络连接及端口信息 |
-t | 查看TCP协议相关信息 |
-u | 显示UDP协议相关信息 |
-p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限) |
- 通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的 TCP 连接信息,同时显示对应的进程信息。
- 结合命令管道使用 “grep” 命令可以在结果中过滤出所需要的特定记录,例如,查看本机中是否有监听“TCP80”端口的服务程序:
oot@localhost ~]#netstat -anpt | grep ":80"
二、测试网络连接
1.测试网络连通性
- 使用 ping 命令可以向目的主机持续发送测试数据包,并反馈结果,按CTRL+C组合键可以终止测试。
[root@localhost ~]#ping 192.168.2.9
PING 192.168.2.9 (192.168.2.9) 56(84) bytes of data.
64 bytes from 192.168.2.9: icmp_seq=1 ttl=128 time=1.08 ms
64 bytes from 192.168.2.9: icmp_seq=2 ttl=128 time=1.01 ms
64 bytes from 192.168.2.9: icmp_seq=3 ttl=128 time=0.911 ms
64 bytes from 192.168.2.9: icmp_seq=4 ttl=128 time=2.39 ms
^C
--- 192.168.2.9 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3017ms
rtt min/avg/max/mdev = 0.911/1.351/2.391/0.603 ms
- 若不能获得从主机发回的反馈数据包,则表示在本机到目标主机之间存在网络连通性故障
- 当网络中存在影响通信过程稳定性的因素(如网卡故障、病毒或网络攻击等)时,会频繁看到“Request timeout” 的反馈结果,表面与目标主机间的连接超时。除此之外,防火墙限制时也可能收到这个反馈结果。
2.跟踪数据包的路由途径
- 使用 traceroute 命令可以测试从当前主机到目的主机之间经过哪些网络节点,并显示各中间节点的连接状态(响应时间)。
- 对于无法响应的节点,连接状态将显示为“ * ”。
例如,通过以下操作结果可以看出,从本机到目标主机192.168.2.9之间,中间需跨越一个路由器192.168.24.2。
[root@localhost ~]#traceroute 192.168.2.9
traceroute to 192.168.2.9 (192.168.2.9), 30 hops max, 60 byte packets
1 gateway (192.168.24.2) 0.143 ms 0.104 ms 0.084 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 *^C #和 ping 命令一样可以使用CTRL+C组合键终止
- traceroute 命令比 ping 命令更加准确地定位网络连接的故障点(中断点),执行速度也因此会比ping 命令稍慢。
- 在网络测试与排错过程中,通常会先使用 ping 命令测试与目的主机的网络连接,如果发现网络连接有故障,再使用traceroute 命令跟踪查看是在哪个中间节点存在故障。
3.测试 DNS 域名解析
- 当域名解析出现异常时,将无法使用域名的形式访问网络中的 Web 站点或电子邮件系统等服务。
- nslookup 命令是用来测试域名解析的专用工具,使用时只要指定要解析的目标域名作为参数即可。
例如,执行“nslookup www.google.com”命令后,nslookup程序将提交查询请求,询问站点 www.google.com对应的IP地址是多少。
[root@localhost ~]#nslookup www.google.com
Server: 192.168.24.2 #所使用的 DNS 服务器
Address: 192.168.24.2#53
Non-authoritative answer: #下面是 DNS 解析的反馈结果
Name: www.google.com
Address: 66.220.155.14
- 若能够成功反馈要查询域名的 IP 地址,则表示域名解析没有问题,否则需要根据实际反馈情况来判断故障原因。
- 例如,若出现“······no servers could be reached"的信息,表示不能连接到指定的DNS服务器
- 若出现“······ can’t find xxx.yyy.zzz:NXDOMAIN”的信息,表示要查询的域名不存在。
三、设置网络地址参数
1.使用网络配置命令
1.1 修改网卡的地址、状态
ifconfig命令不仅可以用于查看网卡配置,还可以修改网卡的IP地址、子网掩码,也可以绑定虚拟网络接口、激活或停用网络接口。
- 修改网卡的 IP 地址、子网掩码
命令格式如下所示
ifconfig 网络接口名称 IP地址 [ netmask 子网掩码]
或者
ifconfig 网络接口名称 IP地址 [/子网掩码长度]
- 禁用、激活网络接口
需要临时禁用或者重新激活指定的网络接口时,需要结合“down"“up”开关选项,如下
[root@localhost ~]#ifconfig ens33 down #禁用
[root@localhost ~]#ifconfig ens33 up #激活
- 为网卡绑定虚拟接口
[root@localhost ~]#ifconfig ens33:0 192.168.22.155 #虚拟接口为ens33:0 IP地址为192.168.22.155
[root@localhost ~]#ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.24.129 netmask 255.255.255.0 broadcast 192.168.24.255
inet6 fe80::88c5:1c37:ef02:f37f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d2:bb:c5 txqueuelen 1000 (Ethernet)
RX packets 25539 bytes 18427788 (17.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3919 bytes 315605 (308.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.22.155 netmask 255.255.255.0 broadcast 192.168.22.255
ether 00:0c:29:d2:bb:c5 txqueuelen 1000 (Ethernet)
#可以根据需要添加更多的虚拟接口,如“ens33:1” “ens33:2”等
1.2 添加、删除静态路由记录
route命令不仅可以用于查看路由表信息,还可用来添加、删除静态的路由表条目,其中当然也句括设置默认网关地址(默认网关记录是一条特殊的静态路由条目)。
- 通过 “route add” 操作可以添加路由记录,结合 “-net” 选项指定目标网段的地址,结合 “gw” 选项指定下一跳路由器的IP地址。
例如,若要使本机访问另一个网段192.168.3.0/24的数据包都发给192.168.4.254,可以执行以下操作。需要注意的是,默认网关的IP地址应该与本机其中一个接口的IP地址在同一个网段内。
[root@localhost ~]#route add -net 192.168.3.0/24 gw 192.168.4.254 #添加静态路由
[root@localhost ~]#route -n #确认添加的路由条目
- 通过 “route del” 操作可以删除路由记录,只要结合 “-net” 选项指定对应路由记录中目标网段的地址即可。
例如,执行以下操作可以删除前面添加到192.168.3.0/24 网段的静态路由条目。
[root@localhost ~]#route del -net 192.168.3.0/24
[root@localhost ~]#route -n
- 添加、删除默认网关记录
添加、删除默认网关记录时,与添加、删除静态路由记录的命令格式类似,但指定目标网段时只需简单地使用“default” 表示即可,无须再使用 “-net” 选项指明网段地址。例如,执行以下操作将先删除已有的到 192.168.4.1 的默认网关记录,再添加到192.168.4.254 的默认网关记录。
[root@localhost ~]#route del default gw 192.168.4.1 #删除默认网关记录192.168.4.1
[root@localhost ~]#route add default gw 192.168.4.254 #添加新的默认网关记录192.168.4.254
注意:同一个主机的路由表中只应有一条默认网关记录,若同时存在多条,可能导致该主机的网络连接出现故障
2.修改网络配置文件
如果想要使 Linux 主机在重启系统以后仍然能够使用相同的网络配置,那么直接修改配置文件是最好的方法。
2.1网络接口配置文件
- 网络接口的配置文件默认位于目录“letc/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地址的部分内容如下
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33 #设置网络接口的名称
ONBOOT=yes #设置网络接口是否在 Linux 系统启动时激活
BOOTPROTO=static #设置网络接口的配置方式为静态(dhcp为动态获取 IP 地址)
IPADDR=192.168.4.1 #设置网络接口的 IP 地址
NETMASK-255.255.255.0 #设置网络接口的子网掩码
GATEWAY-192.168.4.2 #设置网络接口的默认网关地址
2.2 启用、禁用网络接口配置
- CentOS 7系统使用命令 systemctl restart network.service 重新启用所有的网络接口。
- 如果只是想禁用、启用某一个网络接口(而不是所有接口),可分别使用两个接口控制脚本 ifdown、ifup。
例如,执行以下操作将会先关闭 ens33 网卡,然后再根据配置文件启用 ens33 网卡。
[root@localhost ~]#ifdown ens33 #关闭
[root@localhost ~]#ifup ens33 #开启
[root@localhost ~]#ifdown ens33 && ifup ens33 #重启
2.3 主机名称配置文件
- CentOS 7 版本中的主机名配置文件变为/etc/hostname文件
- systemd 的命令 hostnamectl 用于修改此文件信息
格式如下
[root@localhost ~]#hostnamectl set-hostname [名字]
[root@localhost ~]#hostname #查看主机名
或者
[root@localhost ~]#vim /etc/hostname
2.4 域名解析配置文件
- 指定为本机提供 DNS 解析的服务器地址:
① /etc/resolv.conf 文件中记录了本机默认使用的DNS服务器的地址信息,对该文件所做的修改将会立刻生效。
②Linux系统中最多可以指定3个(第3个以后的将被忽略)不同的 DNS 服务器地址,优先使用第1个 DNS服务器。
例如,执行以下操作可以指定默认使用的两个 DNS 服务器地址分别位于 202.106.0.20 和 202.106.148.1。
[root@localhost~]# vim/etc/resolv.conf
search localdomain
nameserver 202.106.0.20
nameserver 202.106.148.1
③ resolv.conf 文件中的 “search localdomain” 行用来设置默认的搜索域(域名后缀)。例如,当访问主机“localhost”时,就相当于访问“localhost.localdomain”。
- 本地主机映射文件
① /etc hosts 文件中记录着一份主机名与IP地址的映射关系表,一般用来保存经常需要访问的主机的信息。当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果找不到再去向DNS服务器查询。
例如,若在 /etc/hosts 文件中添加 “119.75.218.70 www.baidu.com” 的映射记录,则当访问网站 www.baidu.com 时,将会直接向IP地址 119.75.218.70 发送 Web 请求,省略了向 DNS 服务器解析 IP 地址的过程。
[root@localhost~]#cat /etc/hosts
127 .0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
......
119.75.218.70 www.baidu.com
②对于经常访问的一些网站,可以通过在 /etc/hosts 文件添加正确的映射记录,减少 DNS 查询过程,从而能提高上网速度。
③如果添加了错误的映射记录,则可能会导致网站访问出现异常。
④正因为 hosts 文件只保存在本地,所以其中的映射记录也只适用于当前主机,而无法作用于整个网络。
总结
上面就是我对 Linux 网络基础设置的一些总结,希望能给需要的人提供一些帮助。