网络属性及相关配置工具

网络配置

NAT和仅主机

f1d8344a9d4349d5befed105db84bea6.png

 

VMware 中的网络模式

连接模式特点
桥接虚拟机和物理机连接同一网络,两者之间是并列关系,通过Vmnet0 这个HUB连接
NAT虚拟机通过Vmnet8这个HUB互相连接,再通过物理机上的Vmnet8网卡连接物理机,能 访问外网,物理机充当路由器
仅主机虚拟机通过Vmnet1这个HUB互相连接,再通过物理机上的Vmnet1网卡连接物理机,不 能访问外网

 

统一网卡名称

CentOS 6之前,网络接口使用连续号码命名:eth0、eth1等,但是,如果再新增硬件设备,也有可能会 被识别成 eth0,eth1 等;

CentOS 7开始,改变了网卡设备命名规则,基于硬件生成网卡名,例如 ens33,ens160 等,可以保证 网卡名称稳定且唯一;但是在批量环境中,没办法统一;

 

出于批量管理,以及脚本的通用性等方面的考虑;

在某些情况下,需要将新的网卡命名规则改成传统的命名方式;即将 ens33,ens160等名称改为eth0, eth1 这样;

修改方法

Rocky8

#查看
[root@rocky86 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group 
default qlen 1000
   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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:f3:44:9a brd ff:ff:ff:ff:ff:ff
   inet 10.0.0.158/24 brd 10.0.0.255 scope global dynamic noprefixroute ens160
       valid_lft 1728sec preferred_lft 1728sec
   inet6 fe80::20c:29ff:fef3:449a/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

#修改
[root@rocky86 ~]# vim /etc/default/grub 
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rl-swap 
rd.lvm.lv=rl/root rd.lvm.lv=rl/swap rhgb quiet net.ifnames=0"

#修改, 将文件内的ens160改成 eth0
[root@rocky86 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160

#修改文件名
[root@rocky86 ~]# mv /etc/sysconfig/network-scripts/ifcfg-ens160 
/etc/sysconfig/network-scripts/ifcfg-eth0

#重读配置文件并重启
[root@rocky86 ~]# grub2-mkconfig -o /etc/grub2.cfg;reboot
Generating grub configuration file ...
done

#再次查看
[root@rocky86 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group 
default qlen 1000
   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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:f3:44:9a brd ff:ff:ff:ff:ff:ff
   inet 10.0.0.158/24 brd 10.0.0.255 scope global dynamic noprefixroute eth0
       valid_lft 1776sec preferred_lft 1776sec
   inet6 fe80::20c:29ff:fef3:449a/64 scope link noprefixroute
   valid_lft forever preferred_lft forever

#Rocky9 及以上版本系统中统一网卡名称
 [root@rocky ~]# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group 
default qlen 1000
   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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:f7:f7:f9 brd ff:ff:ff:ff:ff:ff
   altname enp3s0
   inet 10.0.0.213/24 brd 10.0.0.255 scope global dynamic noprefixroute ens160
       valid_lft 971sec preferred_lft 971sec
   inet6 fe80::20c:29ff:fef7:f7f9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever  
   
#查看要修改的设备的类型ID
[root@rocky ~]# cat /sys/class/net/ens160/type 
1   

#创建配置文件70-persistent-net.rules,名字随便以.rules结尾即可
[root@rocky ~]# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="MAC地址",ATTR{type}=="1",NAME="eth0" #MAC地址要填对

#修改网卡配置文件
[root@rocky ~]# mv /etc/NetworkManager/systemconnections/{ens160.nmconnection,eth0.nmconnection}

#把id 和 interface-name 都改成 eth0
[root@rocky ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
uuid=a5ca5e67-46ef-3d6f-86ec-a5d71e5a4db2
type=ethernet
autoconnect-priority=-999
interface-name=eth0

#重启
[root@rocky ~]# reboot

#查看
[root@rocky ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group 
default qlen 1000
   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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:f7:f7:f9 brd ff:ff:ff:ff:ff:ff
   altname enp3s0
   altname ens160
   inet 10.0.0.213/24 brd 10.0.0.255 scope global dynamic noprefixroute eth0
       valid_lft 1765sec preferred_lft 1765sec
   inet6 fe80::20c:29ff:fef7:f7f9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
 
# 对于Rocky9及以上版本的系统,还可以在安装时修改
# 在 Install Red Hat Enterprise Linux VERSION 菜单上,敲 TAB 键,进入编辑,在最后面加上net.ifnames.prefix=PREFIX
# PREFIX 表示前缀,如果希望网卡设备以 eth0,eth1,... 这种方式显示,则 PREFIX 值就是 eth
# 修改后敲回车键安装



Ubuntu不同版本修改方式一样
#查看
root@ubuntu22:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group 
default qlen 1000
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 fq_codel state UP 
group default qlen 1000
   link/ether 00:0c:29:29:55:5d brd ff:ff:ff:ff:ff:ff
   altname enp2s1
   inet 10.0.0.159/24 metric 100 brd 10.0.0.255 scope global dynamic ens33
       valid_lft 1695sec preferred_lft 1695sec
   inet6 fe80::20c:29ff:fe29:555d/64 scope link 
       valid_lft forever preferred_lft forever

#修改
root@ubuntu22:~# vim /etc/default/grub
GRUB_CMDLINE_LINUX=" net.ifnames=0"


#修改网卡配置
root@ubuntu22:~# vim /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
 ethernets:
   ens33: #此处改成 eth0
     dhcp4: true
 version: 2
 
 
 
#重读配置文件并重启
root@ubuntu22:~# grub-mkconfig -o /boot/grub/grub.cfg;reboot
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.15.0-43-generic
Found initrd image: /boot/initrd.img-5.15.0-43-generic
Found linux image: /boot/vmlinuz-5.15.0-41-generic
Found initrd image: /boot/initrd.img-5.15.0-41-generic
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
done


#再次查看
root@ubuntu22:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group 
default qlen 1000
   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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP 
group default qlen 1000
   link/ether 00:0c:29:29:55:5d brd ff:ff:ff:ff:ff:ff
   altname enp2s1
   altname ens33
   inet 10.0.0.159/24 metric 100 brd 10.0.0.255 scope global dynamic eth0
       valid_lft 1551sec preferred_lft 1551sec
   inet6 fe80::20c:29ff:fe29:555d/64 scope link 
       valid_lft forever preferred_lft forever

临时修改网卡名

[root@ubuntu2204 ~]# ip link set ens160 down
[root@ubuntu2204 ~]# ip link set ens160 name abc
[root@ubuntu2204 ~]# ip link set abc up

 

网络配置

将主机接入到网络,需要进行网络配置,每个网卡,都需要有对应的配置文件,才能永久生效

 

网络配置的两种方式

静态指定:

static,写在配置文件中,不会根据环境的改变而发生变化

 

动态分配:

DHCP,Dynamic Host Configuration Protocol,根据动态主机配置协议生成相应的配置

 

Red Hat 系列网卡配置

 

配置文件

网卡配置文件存在于 /etc/sysconfig/network-scripts/ 目录中,以 ifcfg-XXX 的格式来命名 路径是固定的,文件命名规则也是固定的

[root@rocky86 ~]# ll /etc/sysconfig/network-scripts/
total 4
-rw-r--r-- 1 root root 244 Aug 10 14:57 ifcfg-eth0
[root@rocky86 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=5c093cad-84c9-4cfc-8b6f-e1041db357df
DEVICE=eth0
ONBOOT=yes

常用配置项

配置项变量名备注
设备名DEVICE指定网卡设备名称
连接名NAME命令行下显示的配置名称
IP地址IPADDRIPV4的IP地址,多个地址可以写成 IPADDR2, IPADDR3
子网掩码NETMASK传统写法 NETMASK=255.255.255.0
子网掩码PREFIX新写法 PREFIX=24,多地址可以写成 PREFIX2, PREFIX3
网关GATEWAY提供跨网段通讯功能
IP地址类型BOOTPROTO获取IP方式,dhcp 动态获取,none
网卡设备是否开机启 用ONBOOT是否开机启用,yes 启用,no 禁用
域后缀DOMAIN域后缀
主DNSDNS1主DNS
次DNSDNS2次DNS
第三DNSDNS3第三DNS

 

添加一块网卡,并指定NAT模式

[root@rocky86 ~]# cd /etc/sysconfig/network-scripts
[root@rocky86 network-scripts]# vim ifcfg-eth1
DEVICE=eth1
NAME=con-eth1
IPADDR=10.0.0.88
PREFIX=24
GATEWAY=10.0.0.2
DNS1=10.0.0.2
DNS2=114.114.114

#查看
[root@rocky86 network-scripts]# nmcli connection
NAME   UUID                                 TYPE     DEVICE 
eth0   5c093cad-84c9-4cfc-8b6f-e1041db357df ethernet eth0   
virbr0 77c5c6bc-b04f-4ae4-a8eb-16fdf62e9a70 bridge   virbr0 
[root@rocky86 network-scripts]# nmcli connection reload
#再次查看
[root@rocky86 network-scripts]# nmcli connection
NAME     UUID                                 TYPE     DEVICE 
eth0     5c093cad-84c9-4cfc-8b6f-e1041db357df ethernet eth0   
con-eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet eth1   
virbr0   77c5c6bc-b04f-4ae4-a8eb-16fdf62e9a70 bridge   virbr0 


#查看
[root@rocky86 network-scripts]# ifconfig eth1
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
       inet 10.0.0.88 netmask 255.255.255.0 broadcast 10.0.0.255
       inet6 fe80::20c:29ff:fef3:44a4 prefixlen 64 scopeid 0x20<link>
       ether 00:0c:29:f3:44:a4 txqueuelen 1000 (Ethernet)
       RX packets 23 bytes 2911 (2.8 KiB)
       RX errors 0 dropped 0 overruns 0 frame 0
       TX packets 51 bytes 5768 (5.6 KiB)
       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

查看DNS

[root@rocky86 network-scripts]# nmcli conn reload
[root@rocky86 network-scripts]# cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
nameserver 10.0.0.2

#新增114 DNS
[root@rocky86 network-scripts]# nmcli conn up con-eth1
Connection successfully activated (D-Bus active path: 
/org/freedesktop/NetworkManager/ActiveConnection/5)
[root@rocky86 network-scripts]# cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
nameserver 10.0.0.2
nameserver 114.114.114.114

使用DNS解析域名

[root@rocky86 ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 163.177.151.110
www.a.shifen.com has address 163.177.151.109

[root@rocky86 ~]# host www.baidu.com 114.114.114.114
Using domain server:
Name: 114.114.114.114
Address: 114.114.114.114#53
Aliases: 
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 163.177.151.109
www.a.shifen.com has address 163.177.151.110

域后缀

#添加域后缀
[root@rocky86 network-scripts]# vim ifcfg-eth1
DEVICE=eth1
NAME=con-eth1
IPADDR=10.0.0.88
PREFIX=24
GATEWAY=10.0.0.2
DNS1=10.0.0.2
DNS2=114.114.114.114
DOMAIN=magedu.com

[root@rocky86 network-scripts]# nmcli con down con-eth1;nmcli conn reload;nmcli 
conn up con-eth1
Connection successfully activated (D-Bus active path: 
/org/freedesktop/NetworkManager/ActiveConnection/6)

#查看DNS和域后缀
[root@rocky86 network-scripts]# cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain magedu.com
nameserver 10.0.0.2
nameserver 114.114.114.114

#默认补全
[root@rocky86 network-scripts]# ping www
PING www.magedu.com (160.121.140.246) 56(84) bytes of data.
64 bytes from 160.121.140.246 (160.121.140.246): icmp_seq=1 ttl=128 time=54.3 ms
......

添加一块网卡,并指定仅主机模式

[root@rocky86 ~]# cd /etc/sysconfig/network-scripts
[root@rocky86 network-scripts]# vim ifcfg-eth2
DEVICE=eth2
NAME=con-eth2
IPADDR=192.168.10.88
PREFIX=24

#查看
[root@rocky86 network-scripts]# nmcli connection
NAME     UUID                                 TYPE     DEVICE 
eth0     5c093cad-84c9-4cfc-8b6f-e1041db357df ethernet eth0   
con-eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet eth1   
virbr0   77c5c6bc-b04f-4ae4-a8eb-16fdf62e9a70 bridge   virbr0 

[root@rocky86 network-scripts]# nmcli connection reload;nmcli connection
NAME     UUID                                 TYPE     DEVICE 
eth0     5c093cad-84c9-4cfc-8b6f-e1041db357df ethernet eth0   
con-eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet eth1   
con-eth2 3a73717e-65ab-93e8-b518-24f5af32dc0d ethernet eth2   
virbr0   77c5c6bc-b04f-4ae4-a8eb-16fdf62e9a70 bridge   virbr0 

#查看
[root@rocky86 network-scripts]# ifconfig eth2
eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
       inet 192.168.10.88 netmask 255.0.0.0 broadcast 192.255.255.255
       inet6 fe80::20c:29ff:fef3:44ae prefixlen 64 scopeid 0x20<link>
       ether 00:0c:29:f3:44:ae txqueuelen 1000 (Ethernet)
       RX packets 1 bytes 64 (64.0 B)
       RX errors 0 dropped 0 overruns 0 frame 0
       TX packets 45 bytes 5288 (5.1 KiB)
       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Centos7中的网卡生效方法

#7,8 通用
nmcli connection reload;nmcli connection up con-eth1

#仅centos7版本支持
systemctl restart network

#centos6
service network restart

修改后确认

#ip 确认
ip a
ip a show device

ifconfig
ifconfig device

#路由确认
route -n

ip route

#DNS确认
cat /etc/resolv.conf

RHEL 9 之后的网卡配置

从 RHEL 9.0 开始,RHEL 将新网络配置存储在 /etc/NetworkManager/system-connections/ 中,采 用 key 文件格式,以 .nmconnection 结尾

在以前的版本中,NetworkManager 将网络配置以 ifcfg 格式保存到 /etc/sysconfig/networkscripts/ 

配置以旧格式存储在 /etc/sysconfig/network-scripts/ 中的连接仍然可以正常工作。对现有配置 集的修改会继续更新旧的文件

[root@rocky ~]# ls /etc/sysconfig/network-scripts/
readme-ifcfg-rh.txt

#新的网卡配置文件目录
[root@rocky ~]# ls /etc/NetworkManager/system-connections/
ens160.nmconnection

#kefile格式,与 ini 格式类似
[root@rocky ~]# cat /etc/NetworkManager/system-connections/ens160.nmconnection 
[connection]
id=ens160
uuid=a5ca5e67-46ef-3d6f-86ec-a5d71e5a4db2
type=ethernet
autoconnect-priority=-999
interface-name=ens160
timestamp=1711469823

[ethernet]

[ipv4]
method=auto

[ipv6]
addr-gen-mode=eui64
method=auto

[proxy]
#查看帮助
[root@rocky ~]# man nm-settings-keyfile
[root@rocky ~]# man nm-settings

#网卡配置文件格式
[selection]
key=value

常用 selection

selectionaliasalias备注
connection 全局配置
ipv4 IPV4 配置
ipv6 IPV6 配置
802-3-ethernetethernet以太网配置
802-11-wirelesswifiWIFI配置
802-11-wireless-securitywifi-securityWIFI加密配置
802-1x 一种授权认证网络
vpn VPN网络配置
bridge 网桥配置
vlan 虚拟局域网配置
proxy 代理配置

 

常用配置项

[connection]
id=Main eth0 #在nmcli命令中看到的 nmae
uuid=27afa607-ee36-43f0-b8c3-9d245cdc4bb3 #设备唯一ID,可以不写
type=802-3-ethernet #连接类型,以太网
autoconnect=true #开机自动连接
interface-name=ens160 #对应的网络设备

[ipv4] #IPV4配置段
method=auto|manual 				#auto 表示使用 DHCP自动获得IP,manual 表示手动设置IP
dns=1.2.3.4;8.8.8.8 			#DNS服务器列表,可以写多个
addresses=192.168.1.123/24 		#IPV4地址,多个IP地址可以写成
address1=,address2=
gateway=192.168.1.1 			#默认网关,可以写成别名 gw4
dns-search=magedu.com 			#搜索域
routes= 						#指定路由,可以有多条,route1=,
route2=

route/plen[,gateway,metric]
									#route1=8.8.8.0/24,10.1.1.1,77
									#route2=7.7.0.0/16

[ipv6] 							#IPV6配置,配置项同IPV4
[802-3-ethernet] 				#以太网网卡配置段
mac-address=00:23:5a:47:1f:71 	#指定MAC地址
cloned-mac-address= 			#指定另外一个MAC地址
mac-address-blacklist= 			#MAC地址黑名单,可以写多个值,用; 分隔
#添加一块NAT网卡 ens192
[root@rocky ~]# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group 
default qlen 1000
   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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:f7:f7:f9 brd ff:ff:ff:ff:ff:ff
   altname enp3s0
   inet 10.0.0.213/24 brd 10.0.0.255 scope global dynamic noprefixroute ens160
       valid_lft 1249sec preferred_lft 1249sec
   inet6 fe80::20c:29ff:fef7:f7f9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:f7:f7:03 brd ff:ff:ff:ff:ff:ff
   altname enp11s0
   
   
[root@rocky ~]# nmcli con reload
[root@rocky ~]# nmcli con
NAME   UUID                                 TYPE     DEVICE 
ens160 a5ca5e67-46ef-3d6f-86ec-a5d71e5a4db2 ethernet ens160 
lo     6ddf4f2b-cf09-4713-b977-7c3f9f0c3b52 loopback lo

#没有ens192的配置
[root@rocky ~]# ls /etc/NetworkManager/system-connections/
ens160.nmconnection

#可见新设备
[root@rocky ~]# nmcli device 
DEVICE TYPE     STATE                   CONNECTION 
ens160 ethernet connected               ens160     
lo     loopback connected (externally) lo         
ens192 ethernet disconnected            --

#启用设备
[root@rocky ~]# nmcli device up ens192 
Device 'ens192' successfully activated with '8c393e1f-21fc-4d2b-9c00-
650b35f674d5'.

#自动生成配置文件
[root@rocky ~]# ls /etc/NetworkManager/system-connections/
ens160.nmconnection ens192.nmconnection

[root@rocky ~]# cat /etc/NetworkManager/system-connections/ens192.nmconnection 
[connection]
id=ens192
uuid=8c393e1f-21fc-4d2b-9c00-650b35f674d5
type=ethernet
interface-name=ens192
[ethernet]
[ipv4]
method=auto

[ipv6]
addr-gen-mode=default
method=auto
[proxy]

[root@rocky ~]# ip a s ens192
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:f7:f7:03 brd ff:ff:ff:ff:ff:ff
   altname enp11s0
   inet 10.0.0.214/24 brd 10.0.0.255 scope global dynamic noprefixroute ens192
       valid_lft 1593sec preferred_lft 1593sec
   inet6 fe80::3789:8b93:c50:2109/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Ubuntu 系列网卡配置

 

配置文件

网卡配置文件存在于 /etc/netplan/ 目录中,以 XXX.yaml 的格式来命名

路径是固定的,文件命名规则也是固定的

root@ubuntu22:~# cd /etc/netplan/
root@ubuntu22:/etc/netplan# ll
total 12
drwxr-xr-x  2 root root 4096 Jul  3 12:09 ./
drwxr-xr-x 99 root root 4096 Aug  8 12:09 ../
-rw-r--r--  1 root root  116 Jul  3 12:09 00-installer-config.yaml
root@ubuntu22:/etc/netplan# cat 00-installer-config.yaml 
# This is the network config written by 'subiquity'
network:
 ethernets:
   ens33:
     dhcp4: true
 version: 2

yaml语言

yaml 是一种标记性语言,这种语言以数据做为中心,而不是以标记语言为重点。因而yaml本身的定义 比简单,是 “一种人性化的语言”。

特点:可读性强,易于维护,上手快,写的时候,如果不是同一级,就给缩进,缩进比例保持一致就行

数据结构

#列表 List,以 “-” 开头
- tom
- jerry
- spike
#也可以写成这样
[tom,jerry,spike]

#字典 Dict,由 k/v 构成
name: tom
age: 123
#也可以写成这样
{name: tom, age: 123}

#列表和字典可以嵌套使用
name:
- tom
- jerry

age: [123,456]
{name: [tom,jerry],age: [123,456]}

常用配置项

配置项变量名备注
是否是通过DHCP服务获 取IPdhcp4true|false
IP地址addresses列表
网关gateway4默认网关,建议使用 routes 字段 代替
网关routes: [{to: default,via: 10.0.0.2}]列表 字典
DNSnameservers 
版本version默认写 2
域后缀search列表

 

添加一块网卡,并指定NAT模式

root@ubuntu22:~# cd /etc/netplan/
root@ubuntu22:/etc/netplan# ls
00-installer-config.yaml

#新增网卡配置文件
root@ubuntu22:/etc/netplan# vim eth1.yaml
network:
 renderer: networkd
 ethernets:
   eth1:
     addresses: [10.0.0.6/24,10.0.0.66/24]
     nameservers:
       search: [magedu.com,magedu.org]
       addresses: [10.0.0.2,180.76.76.76]
 version: 2
 
 #让网卡生效  
root@ubuntu22:/etc/netplan# netplan apply

#查看
root@ubuntu22:/etc/netplan# ip a show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP 
group default qlen 1000
   link/ether 00:0c:29:29:55:67 brd ff:ff:ff:ff:ff:ff
   altname enp2s5
   altname ens37
   inet 10.0.0.6/24 brd 10.0.0.255 scope global eth1
       valid_lft forever preferred_lft forever
   inet 10.0.0.66/24 brd 10.0.0.255 scope global secondary eth1
       valid_lft forever preferred_lft forever
   inet6 fe80::20c:29ff:fe29:5567/64 scope link 
       valid_lft forever preferred_lft forever

 

添加一块网卡,并指定仅主机模式

root@ubuntu22:/etc/netplan# cd /etc/netplan/
root@ubuntu22:/etc/netplan# ls
00-installer-config.yaml eth1.yaml

#新增配置
root@ubuntu22:/etc/netplan# vim eth2.yaml
network:
 renderer: networkd
 ethernets:
   eth2:
     addresses:
        - 192.168.10.6/24
        - 192.168.10.66/24
 version: 2
 
 #生效
root@ubuntu22:/etc/netplan# netplan apply

#查看
root@ubuntu22:/etc/netplan# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP 
group default qlen 1000
   link/ether 00:0c:29:29:55:71 brd ff:ff:ff:ff:ff:ff
   altname enp2s6
   altname ens38
   inet 192.168.10.66/24 brd 192.168.10.255 scope global eth2
       valid_lft forever preferred_lft forever
   inet6 fe80::20c:29ff:fe29:5571/64 scope link 
       valid_lft forever preferred_lft forever

查看路由

root@ubuntu22:/etc/netplan# route -n
Command 'route' not found, but can be installed with:
apt install net-tools
root@ubuntu22:/etc/netplan# apt install -y net-tools
root@ubuntu22:/etc/netplan# 
root@ubuntu22:/etc/netplan# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref   Use Iface
0.0.0.0         10.0.0.2        0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
10.0.0.2        0.0.0.0         255.255.255.255 UH    100    0        0 eth0
192.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 eth2

查看DNS

#这里看不到
root@ubuntu22:/etc/netplan# cat /etc/resolv.conf 

nameserver 127.0.0.53
options edns0 trust-ad
search magedu.com magedu.org localdomain

root@ubuntu22:~# resolvectl status
Global
	Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (eth0)
   Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.0.0.2
       DNS Servers: 10.0.0.2
       DNS Domain: localdomain
       
Link 3 (eth1)
   Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.0.0.2
       DNS Servers: 10.0.0.2 180.76.76.76
       DNS Domain: magedu.com magedu.org

Link 4 (eth2)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

网络配置命令

 

主机名

 

hostname

hostname 是临时有效,重启后消失

hostname [-b] {hostname|-F file}         set host name (from file)
hostname [-a|-A|-d|-f|-i|-I|-s|-y]       display formatted name
hostname                                 display host name

#常用选项
-a|--alias #显示别名
-F|--file #从文件中读取
-i|--ip-address #显示IP地址,仅显示能解析的地址
-I|--all-ip-addresses #显示所有IP地址,包含不能被解析的,但不显示IPV6地址,不显示回环地址

hostnamectl

写配置文件,永久有效

#查看
[root@ubuntu2204 ~]# hostnamectl status 
   Static hostname: ubuntu2204
Transient hostname: test-name
         Icon name: computer-vm
           Chassis: vm
       Machine ID: 72f41ddc79b44308a161708e65544943
           Boot ID: 524d4285d50448b1ac21fe6546b00031
   Virtualization: vmware
 Operating System: Ubuntu 22.04 LTS                
           Kernel: Linux 5.15.0-71-generic
     Architecture: x86-64
   Hardware Vendor: VMware, Inc.
   Hardware Model: VMware Virtual Platform
   
   #设置,会写进 /etc/hostname 文件里面,永久有效
[root@ubuntu2204 ~]# hostnamectl hostname ubuntu-m54
[root@ubuntu2204 ~]# cat /etc/hostname 
ubuntu-m54

#查看
[root@ubuntu2204 ~]# hostnamectl 
 Static hostname: ubuntu-m54
       Icon name: computer-vm
         Chassis: vm
     Machine ID: 72f41ddc79b44308a161708e65544943
         Boot ID: 524d4285d50448b1ac21fe6546b00031
 Virtualization: vmware
 Operating System: Ubuntu 22.04 LTS                
         Kernel: Linux 5.15.0-71-generic
   Architecture: x86-64
 Hardware Vendor: VMware, Inc.
 Hardware Model: VMware Virtual Platform

ifconfig 命令

该命令来自于net-tools包,建议使用 ip 代替

[root@ubuntu ~]# dpkg -S /sbin/ifconfig 
net-tools: /sbin/ifconfig

格式

ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
[add <address>[/<prefixlen>]]
[del <address>[/<prefixlen>]]
[[-]broadcast [<address>]] [[-]pointopoint [<address>]]
[netmask <address>] [dstaddr <address>] [tunnel <address>]
[outfill <NN>] [keepalive <NN>]
[hw <HW> <address>] [mtu <NN>]
[[-]trailers] [[-]arp] [[-]allmulti]
[multicast] [[-]promisc]
[mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]
[txqueuelen <NN>]
[[-]dynamic]
[up|down] ...

#常用选项
-a #显示所有
-s #以短格式显示
-v #显示详细错误信息
<HW> #硬件类型 
#loop|slip|cslip|slip6|cslip6|adaptive|ash|ether|ax25|netrom|rose|tunnel|ppp|hdl
c|lapb|arcnet|dlci|frad|sit|fddi|hippi|irda|x25|infiniband|eui64

<AF> #地址类型,协议族
unix|inet|inet6|ax25|netrom|ipx|ddp|ddp 

#常用子命令
add #给设备添加IPV6地址
del #删除IPV6地址
broadcast|-broadcast #给设备添加广播地址|删除广播地址
pointtopoint|-pointtopoint #设定点对点通讯协议
netmask #设定子网掩码
dstaddr #设定目标地址
tunnel #建立隧道
hw #指定硬件类型
mtu #指定设备最大传输单元(单位:字节)
arp|-arp #指定设备是否支持ARP协议
allmulti|-allmulti #指定设备是否支持多播
multicast #指定组播
promisc|-promisc #指定设备支持promiscuous模式
up #启用设备
down #禁用设备

route 命令

该命令来自于net-tools包,建议使用 ip 代替

格式

route [-CFvnNee] [-A family |-4|-6]
route [-v] [-A family |-4|-6] add [-net|-host] target [netmask Nm] [gw Gw] 
[metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] 
If]

route [-v] [-A family |-4|-6] del [-net|-host] target [gw Gw] [netmask Nm] 
[metric M] [[dev] If]
route [-V] [--version] [-h] [--help]

#常用选项
-v|--verbose #显示详细信息
-n|--numeric #以IP格式显示,而不是以主机名显示
-e|--extend #显示扩展字段
-F|--fib #显示转发信息
-C|--cache #显示路由缓存
-V|--version #显示版本信息
-h|--help #显示帮助信息
-f #清除网关入口处路由表
-net #目标是一个网络
-host #目标是一个主机

#常用子命令
add
del
flush
netmask
gw
metric
Destination
Gateway

示例:查看路由表

#查看路由表
[root@ubuntu ~]# route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref   Use Iface
default         bogon           0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
bogon           0.0.0.0         255.255.255.255 UH    100    0        0 eth0
#查看路由表,以IP格式显示
[root@ubuntu ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref   Use Iface
0.0.0.0         10.0.0.2        0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
10.0.0.2        0.0.0.0         255.255.255.255 UH    100    0        0 eth0

路由表各字段

字段说明
Destination目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
Gateway网关,下一跳地址
Genmask目标网络对应的子网掩码
Flags标记位 U(启用)|H(目标是主机)|G(使用网关)|R(动态路由)|D(动态安装)|M(动态修 改)|A(addrconf)|C(缓存)|!(拒绝)
Metric开销cost,值越小,路由记录的优先级最高
Ref引用此路由的次数
Use使用次数
Iface接口,到达对应网络,应该从当前主机哪个网卡发送出来

 

用主机实现软路由

用主机模拟路由器,打通多个网段,实现跨网段连通

拓扑图

a0a86cebb5504ac4b891c4eb9c9b8707.png

说明

  1. 主机1配置桥接,NAT两块网卡,充当路由

  2. 主机2配置仅主机,NAT两块网卡,充当路由

  3. 主机3配置一块桥接网卡,路由网关指向主机1桥接网卡上配置的IP地址

  4. 主机4配置一块仅主机网卡,路由网关指向主机2仅主机网卡上配置的IP地址

  5. 主机1和主机3的桥接网卡为一个网段

  6. 主机1和主机2的NAT网卡为一个网段

  7. 主机2和主机4的仅主机网卡为一个网段

  8. 通过上述配置,让主机3和主机4之间,经由主机1和主机2中转,实现连通

 

配置

主机角色网卡IP地址系统
主机1路由器桥接网卡172.16.1.254/16rocky86
  NAT网卡10.0.0.8/8 
主机2路由器NAT网卡10.0.0.88/8rocky86
  仅主机网卡192.168.10.254/24 
主机3客户端桥接网卡172.16.1.110/16ubuntu2204
主机4客户端仅主机网卡192.168.10.110/24ubuntu2204

 

配置主机1

#桥接网卡
[root@rocky86 network-scripts]# vim ifcfg-ens192
DEVICE=ens192
NAME=con-ens192
IPADDR=172.16.1.254
PREFIX=16

#NAT网卡
[root@rocky86 network-scripts]# vim ifcfg-ens160
DEVICE=ens160
NAME=con-ens160
IPADDR=10.0.0.8
PREFIX=8

#启用
[root@rocky86 network-scripts]# nmcli conn reload;nmcli con up con-ens160;nmcli 
con up con-ens192;
Connection successfully activated (D-Bus active path: 
/org/freedesktop/NetworkManager/ActiveConnection/34)
Connection successfully activated (D-Bus active path: 
/org/freedesktop/NetworkManager/ActiveConnection/35)

#查看
[root@rocky86 network-scripts]# ip a show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:23:22:1e brd ff:ff:ff:ff:ff:ff
   inet 10.0.0.8/8 brd 10.255.255.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
   inet6 fe80::20c:29ff:fe23:221e/64 scope link 
       valid_lft forever preferred_lft forever
       
[root@rocky86 network-scripts]# ip a show ens192
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:23:22:28 brd ff:ff:ff:ff:ff:ff
   inet 172.16.1.254/16 brd 172.16.255.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
   inet6 fe80::20c:29ff:fe23:2228/64 scope link 
       valid_lft forever preferred_lft forever
       
#添加路由      
[root@rocky86 network-scripts]# route add -net 10.0.0.0/8 dev ens160
[root@rocky86 network-scripts]# route add -net 172.16.0.0/16 dev ens192
#添加指向 192.168.10.0 网段的网关,其出口设备为本机NAT网卡,网关为主机2上的NAT网卡地址
[root@rocky86 network-scripts]# route add -net 192.168.10.0/24 gw 10.0.0.88 dev ens160

[root@rocky86 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref   Use Iface
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 ens160
172.16.0.0      0.0.0.0         255.255.0.0     U     0      0        0 ens192
192.168.10.0    10.0.0.88       255.255.255.0   UG    0      0        0 ens160 
#开启路由转发
[root@rocky86 network-scripts]# echo 1 > /proc/sys/net/ipv4/ip_forward

配置主机2

#NAT网卡
[root@rocky86 network-scripts]# vim ifcfg-eth0
DEVICE=eth0
NAME=con-eth0
IPADDR=10.0.0.88
PREFIX=8
#仅主机网卡
[root@rocky86 network-scripts]# vim ifcfg-eth1
DEVICE=eth1
NAME=con-eth1
IPADDR=192.168.10.254
PREFIX=24

#启用
[root@rocky86 network-scripts]# nmcli con reload;nmcli con up con-eth0;nmcli con 
up con-eth1;
Connection successfully activated (D-Bus active path: 
/org/freedesktop/NetworkManager/ActiveConnection/7)
Connection successfully activated (D-Bus active path: 
/org/freedesktop/NetworkManager/ActiveConnection/8)

#查看
[root@rocky86 network-scripts]# ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:f3:44:9a brd ff:ff:ff:ff:ff:ff
   inet 10.0.0.88/8 brd 10.255.255.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
   inet6 fe80::20c:29ff:fef3:449a/64 scope link 
       valid_lft forever preferred_lft forever
       
#查看       
[root@rocky86 network-scripts]# ip a show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group 
default qlen 1000
   link/ether 00:0c:29:f3:44:a4 brd ff:ff:ff:ff:ff:ff
   inet 192.168.10.254/24 brd 192.168.10.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
   inet6 fe80::20c:29ff:fef3:44a4/64 scope link 
       valid_lft forever preferred_lft forever
#添加路由表
[root@rocky86 network-scripts]# route add -net 10.0.0.0/8 dev eth0
[root@rocky86 network-scripts]# route add -net 192.168.10.0/24 dev eth1
#添加指向 172.16.0.0 网段的网关,其出口设备为本机NAT网卡,网关为主机1上的NAT网卡地址
[root@rocky86 network-scripts]# route add -net 172.16.0.0/16 gw 10.0.0.8 dev 
eth0       
       
[root@rocky86 network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref   Use Iface
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
172.16.0.0      10.0.0.8        255.255.0.0     UG    0      0        0 eth0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
#开启路由转发
[root@rocky86 network-scripts]# echo 1 > /proc/sys/net/ipv4/ip_forward 

配置主机3

#桥接网卡
root@ubuntu22:~# cd /etc/netplan/
root@ubuntu22:/etc/netplan# vim eth0.yaml
network: 
 renderer: networkd
   eth0: 
     addresses: [172.16.1.110/16]
 version: 2
 
root@ubuntu22:/etc/netplan# netplan apply
 
root@ubuntu22:/etc/netplan# ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_code1 state UP 
group default qlen 1000
   link/ether 00:0c:29:29:55:71 brd ff:ff:ff:ff:ff:ff
   altname enp2s6
   altname ens38
   inet 172.16.1.110/16 brd 172.16.255.255 scope global eth0
       valid_lft forever preferred_lft forever
   inet6 fe80::20c:29ff:fe29:5571/64 scope link
       valid_lft forever preferred_lft forever
#添加路由和网关       
root@ubuntu22:/etc/netplan# route add -net 172.16.0.0/16 dev eth0       
root@ubuntu22:/etc/netplan# route add default gw 172.16.1.254 dev eth0 

配置主机4

#仅主机网卡
root@ubuntu22:~# cd /etc/netplan/
root@ubuntu22:/etc/netplan# vim ens33.yaml
network: 
 renderer: networkd
   eth0: 
     addresses: [192.168.10.110/24]
 version: 2

root@ubuntu22:/etc/netplan# netplan apply

root@ubuntu22:/etc/netplan# ip a show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_code1 state UP 
group default qlen 1000
   link/ether 00:0c:29:29:55:71 brd ff:ff:ff:ff:ff:ff
   altname enp2s1
   inet 192.168.10.110/24 brd 192.168.10.255 scope global eth0
       valid_lft forever preferred_lft forever
   inet6 fe80::20c:29ff:fea3:1c89/64 scope link
       valid_lft forever preferred_lft forever
       
#添加路由和网关       
root@ubuntu22:/etc/netplan# route add -net 192.168.10.0/24 dev ens33       
root@ubuntu22:/etc/netplan# route add default gw 192.168.10.254 dev ens33       

测试

#主机3 ping 主机4
root@ubuntu22:/etc/netplan# ping 192.168.10.110
PING 192.168.10.110 (192.168.10.110) 56(84) bytes of data.
64 bytes from 192.168.10.110: icmp_seq=1 ttl=62 time=1.94 ms
64 bytes from 192.168.10.110: icmp_seq=2 ttl=62 time=2.47 ms
64 bytes from 192.168.10.110: icmp_seq=3 ttl=62 time=1.99 ms
......
#主机4 ping 主机3
root@ubuntu22:/etc/netplan# ping 172.16.1.110
PING 172.16.1.110 (172.16.1.110) 56(84) bytes of data.
64 bytes from 172.16.1.110: icmp_seq=1 ttl=62 time=2.21 ms
64 bytes from 172.16.1.110: icmp_seq=2 ttl=62 time=2.16 ms
64 bytes from 172.16.1.110: icmp_seq=3 ttl=62 time=1.85 ms
......

补充

开启路由转发功能

#查看
cat /proc/sys/net/ipv4/ip_forward
1
#如果此项没开启,则可以以修改配置文件开启
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
#生效
sysctl -p
net.ipv4.ip_forward = 1
#再次查看
sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1

常见路由协议算法

由上可知,从一个路由器要到达某个网段或主机,是通过路由接力的方式来实现的,网络一段段传输, 经由不同的路由器,最终到达目标网段或主机,而要去到某个地址,则路由器上必须要存有到达该地址 的路由表,根据实际情况,网络上有无数主机,一个路由器上不可能存有到达所有网段或主机的路由 表,这种情况也无法维护;

现实中的路由器上的路由表,都是由路由算法自动维护 常用的算法有 OSPF,RIP,MPLS,BGP等

RIP算法:路径最优,到达目标网段或主机经过的路由器数量最少,就使用该路径;

OSPF算法:带宽最优,不仅仅只考虑经过的路由器数量,而是要考虑该条路径上的网络带宽情况;

 

配置动态路由

通过守护进程获取动态路由,安装quagga包,通过命令vtysh配置 支持多种路由协议:

RIP:Routing Information Protocol,路由信息协议

OSPF:Open Shortest Path First,开放式最短路径优先

BGP:Border Gateway Protocol,边界网关协议

 

netstat 命令

来自于net-tools包,建议使用 ss 代替

显示网络连接

格式:

netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]

#常用选项
-A #指定网络类型
inet|inet6|unix|ipx|ax25|netrom|econet|ddp|bluetooth
-r|--route #显示路由表
-t|--tcp #显示tcp端口数据
-u|--udp #显示udp端口数据
-w|--raw #raw socket相关
-l|--listening #仅显示处于监听状态的端口
-a|--all #所有数据
-n|--numeric #以数字显示IP和端口
-s|--statistice #显示统计数据
-p|--program #显示相关进程及PID
-x|--unix #同 -A unix
-ip|--inet #同 -A 
-I|--interfaces=<Iface> #指定设备
#常用组合
-tan, -uan, -tnl, -unl

显示接口统计数据

#统计所有网卡信息
netstat -i|ifconfig -s|cat /proc/net/dev
#统计所有指定信息
netstat -Ieth0|netstat -I=eth0|ifconfig -s eth0|{cat /proc/net/dev|grep eth0}

ip命令

来自于iproute包,可用于代替ifconfig

格式

ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename

OBJECT := { 
address|addrlabel|fou|help|ila|ioam|l2tp|link|macsec|maddress|monitor|mptcp|mrou
te|mrule|neighbor|neighbour|netconf|netns|nexthop|ntable|ntbl|route|rule|sr|tap|
tcpmetrics|token|tunnel|tuntap|vrf|xfrm}

OPTIONS := {
-V[ersion]|-s[tatistics]|-d[etails]|-r[esolve]|-h[uman-readable]|-iec|-j[son]|-
p[retty]|-f[amily]{inet|inet6|mpls|bridge|link}|-4|-6|-M|-B|-0|-l[oops]{maximumaddr-flush-attempts}|-br[ief]|-o[neline]|-t[imestamp]|-ts[hort]|-b[atch]
[filename]|-rc[vbuf][size]|-n[etns]name|-N[umeric]|-a[ll]|-c[olor]}

配置Linux网络属性

OBJECT := { link | addr | route }

#主要用来查看链路层信息
[root@Rocky86 ~]# ip link 
add     delete help    set     show 

[root@Rocky86 ~]# ip address 
add     change   del     flush   help     replace show

[root@Rocky86 ~]# ip route 
add     append   change   del     flush    get     help     list     monitor replace

管理路由

ip route 用法

#添加路由
ip route add TARGET via GW dev IFACE src SOURCE_IP

#添加网关:
ip route add default via GW dev IFACE

#删除路由:
ip route del TARGET 

#显示路由:
ip route show|list

#清空路由表:
ip route flush [dev IFACE] [via PREFIX]

#查看路由过程
ip route get IP

ss 命令

来自于iproute包,代替netstat,netstat 通过遍历 /proc来获取 socket信息,ss 使用 netlink与内核 tcp_diag 模块通信获取 socket 信息

格式:

ss [ OPTIONS ] [ FILTER ]

#常用选项
-n|--numeric       #不以主机名的格式显示
-r|--resolve       #以主机名的形式显示IP
-a|--all           #显示所有数据
-l|--listening     #仅显示listen状态的连接
-m|--memory       #显示连接内存使用情况
-p|--processes     #显示对应的进程   
--tipcinfo     #显示TIPC连接的详细信息
-s|--summary     #显示统计信息
-4|--ipv4         #仅显示IPV4连接数据
-6|--ipv6         #仅显示IPV6连接数据
-0|--packet       #仅显示PACKET数据
-t|--tcp           #仅显示tcp数据
-M|--mptcp         #仅显示mptcp数据
-S|--sctp         #仅显示sctp数据
-u|--udp           #仅显示udp数据
-d|--dccp         #仅显示dccp数据
-w|--raw           #仅显示原生套接字数据
-x|--unix         #仅显示unix数据
--tipc         #仅显示tipc数据
--vsock         #仅显示vsock数据
-f|--family=FAMILY #根据类型过滤
{inet|inet6|link|unix|netlink|vsock|tipc|xdp|help}
-A|--query=QUERY|--socket=QUERY #根据连接类型过滤
{all|inet|tcp|mptcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_stream|vsock_dgram|tipc}[,QUERY]


#常用组合
-tan, -uan, -tnl, -unl, -tuanp

网络配置工具 nmcli

 

NetworkManager

NetworkManager 是2004年由RedHat启动的项目,目的是让用户能更轻松的管理Linux中的网络,它 是一个动态的,事件驱动的网络管理服务。

该项目提供了丰富的管理工具

  • 图形工具:nm-connection-editor

  • 字符配置工具:nmtui,nmtui-connect,nmtui-edit,nmtui-hostname

  • 命令行工具:nmcli

 

nmcli 格式:

nmcli [OPTIONS] OBJECT { COMMAND | help }

#常用选项
-a|--ask                               #询问
-c|--colors                 #输出时是否显示颜色 auto|yes|no
-e|--escape                     #是否转义分隔符 yes|no
-f|--fields     			#指定输出列 <field,...>|all|common
-m|--mode             		#显示模式 tabular|multiline
-o|--overview                           #预览模式输出
-p|--pretty                             #完美格式输出
-t|--terse                             #简洁格式输出
-v|--version                           #显示版本信息
-h|--help 								#显示帮助

#OBJECT
g[eneral]       #一般状态管理
n[etworking]   #整体网络管理
r[adio]         #网络连接切换
c[onnection]   #网络连接管理
d[evice]       #网络设备管理
a[gent]         #网络中的代理
m[onitor]       #网络中的流量数据监测

常用

#查看网络连接
nmcli con
nmcli con show

#查看active 状态的连接
nmcli con show --active

#查看指定设备
nmcli con show eth1

#显示设备状态
nmcli dev status 

#显示网络接口属性
nmcli dev show eth1

#删除连接
nmcli con del con-eth1

#启用
nmcli con up con-eth1

#禁用
nmcli con down con-eth1

#刷新
nmcli connection reload;

#新增,从dhcp 获取IP地址
nmcli con add con-name con-dhcp type ethernet ifname eth1

#新增,静态地址
nmcli connection add con-name con-eth1 ipv4.addresses 172.16.1.111/16 
ipv4.gateway 172.16.1.254 ipv4.dns 8.8.8.8 ipv4.method manual type ethernet ifname eth1

#同一设备新增配置
nmcli con mod con-eth1 +ipv4.addresses 10.0.0.119/24
nmcli con mod con-eth1 +ipv4.dns 8.8.8.8

#同一设备删除配置
nmcli con mod con-eth1 -ipv4.addresses 10.0.0.119/24
nmcli con mod con-eth1 -ipv4.dns 8.8.8.8

#同一设备修改配置
nmcli con mod con-eth1 connection.autoconnect no
nmcli con mod con-eth1 ipv4.addresses 10.0.0.119/24
nmcli con mod con-eth1 ipv4.dns 8.8.8.8

网络配置文件

 

网络基本配置文件

 

CentOS 系列

/etc/sysconfig/network-scripts/ifcfg-IFACE #centos9之前
/etc/NetworkManager/system-connections/IFACE.nmconnection #centos9之后

Ubuntu

/etc/netplan/*.yaml

配置当前主机的主机名

 

CentOS 6 之前版本

/etc/sysconfig/network
HOSTNAME=

CentOS 7 以后版配置文件:

/etc/hostname 
#默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain
#删除文件/etc/hostname,恢复主机名localhost.localdomain

Ubuntu

/etc/hostname

本地主机名和IP地址的映射

优先于使用DNS前检查

getent hosts 查看/etc/hosts 内容

/etc/hosts 								#linux
C:\Windows\System32\drivers\etc\hosts   #windows

DNS域名解析

DNS 负责将域名转换成IP地址

#该文件内容根据网卡设备自动生成
/etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
search DOMAIN

Ubuntu中配置DNS

[root@ubuntu ~]# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
 renderer: NetworkManager
 ethernets:
   eth0:
      #dhcp4: true
     addresses: [10.0.0.206/24]
     gateway4: 10.0.0.2
     nameservers:
       search: [magedu.com,magedu.org]
       addresses: [223.5.5.5,8.8.8.8]
 version: 2
[root@ubuntu ~]# netplan apply

#查看
[root@ubuntu ~]# resolvectl status
Global
       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (eth0)
   Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 8.8.8.8
       DNS Servers: 223.5.5.5 8.8.8.8
       DNS Domain: magedu.com magedu.org
Link 3 (eth1)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
     
#查看指定设备
[root@ubuntu ~]# resolvectl dns eth0
Link 2 (eth0): 223.5.5.5 8.8.8.8

#尽管设备eth0上的DNS 发生了变化,但此处并没有变化
[root@ubuntu ~]# cat /etc/resolv.conf 
.....
....

nameserver 127.0.0.53
options edns0 trust-ad
search magedu.com magedu.org

网卡别名

将多个IP地址绑定到一个MAC上

每个IP绑定到独立逻辑网卡,即网络别名,命名格式: ethX:Y,如:eth0:1 、eth0:2、eth0:3

ifconfig 命令
ifconfig eth0:0 192.168.1.100/24 up 
ifconfig eth0:0 down

#ip 命令
ip addr add 172.16.1.1/16 dev eth0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0

为每个设备别名生成独立的接口配置文件,格式为:ifcfg-ethX:xxx

cat ifcfg-lo:1
DEVICE=lo:1
IPADDR=137.0.0.1
NETMASK=255.0.0.0
NETWORK=137.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=137.255.255.255
ONBOOT=yes
NAME=loopback1
cat /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
IPADDR=10.0.0.100
PREFIX=8

注意:

  • 建议 CentOS 6 关闭 NetworkManager 服务

  • 网卡别名必须使用静态地址

 

多网卡 bonding

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP 地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址

 

Bonding 聚合链路工作模式

bond聚合链路模式共7种模式:0-6 Mode

  • mod=0 ,即:(balance-rr) Round-robin policy(轮询)聚合口数据报文按包轮询从物理接口转发。

    负载均衡:所有链路处于负载均衡状态,轮询方式往每条链路发送报文这模式的特点增加了带宽, 同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。性能问题:一个连接或者会话的 数据包如果从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达 的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。Bond0在大压力的网 络传输下,性能增长的并不是很理想。需要交换机进行端口绑定。

  • mod=1,即: (active-backup) Active-backup policy(主-备份策略)只有Active状态的物理接口 才转发数据报文。

容错能力:只有一个slave是激活的(active)。也就是说同一时刻只有一个网卡处于工作状态,其他 的slave都处于备份状态,只有在当前激活的slave故障后才有可能会变为激活的(active)。无负载均衡: 此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状 态,在有 N 个网络接口的情况下,资源利用率为1/N。

  • mod=2,即:(balance-xor) XOR policy(平衡策略)聚合口数据报文按源目MAC、源目IP、源目 端口进行异或HASH运算得到一个值,根据该值查找接口转发数据报文。

负载均衡:基于指定的传输HASH策略传输数据包。容错能力:这模式的特点增加了带宽,同时支 持容错能力,当有链路出问题,会 把流量切换到正常的链路上。性能问题:该模式将限定流量,以 保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通 过MAC地址来决定的,因此该模 式在“本地”网络配置下可以工作得很好。如果所有流量是通过单个路由器,由于只有一个网关,源和 目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。需要 交换机配置为port channel

  • mod=3,即:broadcast(广播策略)这种模式的特点是一个报文会复制两份往bond下的两个接 口分别发送出去。

当有对端交换机失效,感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容 错机制。此模式适用于金融行 业,因为他们需要高可靠性的网络,不允许出现任何问题。

  • mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)

在动态聚合模式下,聚合组内的成员端口上均启用LACP(链路汇聚控制协议)协议,其端口状态通 过该协议自动进行维护。负载均衡:基于指定的传输HASH策略传输数据包。默认算法与blance-xor一 样。容错能力:这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常 的链路上。对比blance-xor,这种模式定期发送LACPDU报文维护链路聚合状态,保证链 路质量。需 要交换机支持LACP协议

  • mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)

在每个物理接口上根据当前的负载(根据速度计算)分配外出流量。如果正在接收数据的物理接口 出故障了,另一个物理接口接管该故障物理口的MAC地址。需要ethtool支持获取每个slave的速率

  • mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何 switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应 答,并把源硬件地址改写为bond中某个物理接口的唯一硬件地址,从而使得不同的对端使用不同 的硬件地址进行通信。

mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会 发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只 占了小部分流量。

 

说明:

常用的模式为 0,1,3,6
mode 1、5、6 不需要交换机设置
mode 0、2、3、4需要交换机设置,而且不同类型的交换机设置的时候会有不一样,如Cisco交换机需要在
0,2,3模式中使用 EtherChannel,在4模式中需要使用 LACP和EtherChannel

网络组 Network Teaming

 

网络组工作模式

网络组是一种组合或聚合物理和虚拟网络接口的方法,以提供高吞吐量或冗余的逻辑接口。网络团队使 用一个小的内核模块来实现数据包流的快速处理和其他任务的用户空间服务。因此,网络团队是一个易 扩展的解决方案,来满足负载平衡和冗余的要求

网络 teaming 在 Red Hat Enterprise Linux 9 中已弃用

 

网络组特点

  • 启动网络组接口不会自动启动网络组中的port接口

  • 启动网络组接口中的port接口总会自动启动网络组接口

  • 禁用网络组接口会自动禁用网络组中的port接口

  • 没有port接口的网络组接口可以启动静态IP连接

  • 启用DHCP连接时,没有port接口的网络组会等待port接口的加入

 

网桥(交换机)

 

桥接原理

此处的网桥是逻辑上的网桥,说的是网络上的一个桥梁,打通网路,而不是硬件设备。

桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其 他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口, 并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。

 

网络测试诊断工具

 

常用诊断工具

作用分类工具/命令
测试网络连通性fping
显示正确的路由表ip route,route
跟踪路由traceroute,tracepath,mtr
确定名称服务器使用nslookup,host,dig
抓包工具tcpdump,wireshark
安全扫描工具nmap,netcat(即nc)
流量控制工具tc

 

fping

fping是一个程序,用于将ICMP探测发送到网络主机,类似于ping,fping的历史由来已久:Roland Schemers在1992年确实发布了它的第一个版本,从那时起它就确立了自己的地位,成为网络诊断和统 计的标准工具

相对于ping多个主机时性能要高得多。 fping完全不同于ping,可以在命令行上定义任意数量的主机, 或者指定包含要ping的IP地址或主机列表的文件, 常在shell 脚本中使用

 

tcpdump

网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等 逻辑语句帮助去除无用的信息。

格式:

tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
 [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
 [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
 [ -Q in|out|inout ]
 [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
 [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
 [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
 [ -Z user ] [ expression ]
 
 #常用选项
-a #以主机名来显示
-c #达到数量后就不再抓包
-d #友好格式显示
-dd #友好格式显示
-ddd #十进制格式显示
-e #显示链路层信息
-f #以数字格式显示IP
-i #指定设备
-n #不转换主机名和IP地址
-N #不显示域名
-q #快速输出,只显示少量指标
-r #从指定的文件读取数据
-s #指定数据包大小
-S #用绝对数字显示TCP关联数
-t #不显示时间
-tt #显示时间戳
-T #指定输出的类型
-v #详细显示指令执行过程。
-vv #显示详细过程
-x #十六进制输出
-w #将输出内容写到指定文件

nmap

扫描远程主机工具,比发送 ICMP 报文的 ping 命令的功能要强大很多

第三方工具,没有要先安装

格式

nmap [Scan Type(s)] [Options] {target specification}

#命令选项
-sT   #TCP connect() 扫描,这是最基本的 TCP 扫描方式。
-sS   #TCP 同步扫描 (TCP SYN),因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描
-sF|-sX|-sN #秘密扫描模式
-sP     #ping 扫描,主机阻塞ICMP echo请求包是ping扫描是无效的
-sU   #UDP 的数据包进行扫描,想知道在某台主机上提供哪些 UDP 服务,可以使用此选项
-sA   #ACK 扫描,这项高级的扫描方法通常可以用来穿过防火墙。    
-sW   #滑动窗口扫描,非常类似于 ACK 的扫描    
-sR   #RPC 扫描,和其它不同的端口扫描方法结合使用。    
-b     #FTP 反弹攻击 (bounce attack),连接到防火墙后面的一台 FTP 服务器做代理,接着进行端口扫描。
-P0   #在扫描之前,不 ping 主机。    
-PT   #扫描之前,使用 TCP ping 确定哪些主机正在运行    
-PS   #对于 root 用户,这个选项让 nmap 使用 SYN 包而不是 ACK 包来对目标主机进行扫描。
-PI   #设置这个选项,让 nmap 使用真正的 ping(ICMP echo 请求)来扫描目标主机是否正在运行。   
-PB   #默认的ping扫描选项,使用 ACK(-PT) 和 ICMP(-PI) 两种扫描类型并行扫描,能够穿过防火墙。    
-O   #这个选项激活对 TCP/IP 指纹特征 (fingerprinting) 的扫描,获得远程主机的操作系统类型
-I   #打开 nmap 的反向标志扫描功能。    
-f   #使用碎片 IP 数据包发送 SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度
-v   #冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
   
-S IP   #在一些情况下,nmap 可能无法确定你的源地址 。在这种情况使用这个选项给出指定 IP 地址
-g port   #设置扫描的源端口
-oN   #把扫描结果重定向到一个可读的文件 logfilename 中  
-oS   #扫描结果输出到标准输出。    
--host_timeout   #设置扫描时间,以毫秒为单位。默认的情况下,没有超时限制    
--max_rtt_timeout #设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时
--min_rtt_timeout #设置 nmap 对每次探测至少等待你指定的时间,以毫秒为单位    
-M count   #置进行 TCP connect() 扫描时,最多使用多少个套接字进行并行的扫描

nc

nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可 靠的网络工具

nc的作用

  • 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口

  • 端口的扫描,nc可以作为client发起TCP或UDP连接

  • 机器之间传输文件

  • 机器之间网络测速

格式:

ncat [options] [hostname] [port]

#常用选项
-g #设置路由器跃程通信网关,最多可设置8个
-G #设置来源路由指向器,其数值为4的倍数
-i|--idle-timeout #设置时间间隔,以便传送信息及扫描通信端口。
-l| --listen #使用监听模式,管控传入的资料。
-n|--nodns #直接使用IP地址,而不通过域名服务器。
-o|--output #将输出内容写文件
-p|--source-port #指定本机端口
-s|--source #指定本机IP
-u|--udp #使用UDP传输协议
-v|--verbose #显示过程
-w|--wait #设置超时时间

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值