当前位置: 首页 > news >正文

Linux之网络管理配置(Network Configuration Management in Linux)

网络配置‌是确保网络设备正常运行和实现网络通信的关键步骤。它涉及设置和调整网络中的各种参数,以确保设备能够正确地进行数据传输和通信。在日常工作中,应该有效地进行网络配置和管理,确保网络的稳定运行和高效通信。

1 网络配置

1.1 NAT和仅主机

VMware 中的网络模式

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

1.2 统一网卡名称

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

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

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

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

修改方法:

修改 /etc/default/grub 在 GRUB_CMDLINE_LINUX 行后面加上 net.ifnames=0修改网卡配置文件,将原网卡名的相关内容替换成新的重新读取配置文件,并重启
Rocky8.6修改 /etc/sysconfig/network-scripts/ifcfg-ens160 将文件内的 ens160 替换成 eth0并修改文件名,将 ifcfg-ens160 修改成 ifcfg-eth0重新读取配置文件基于UEFI模式引导的系统 grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg基于BIOS模式引导的系统 grub2-mkconfig -o /boot/grub2/grub.cfg再执行重启 reboot
Ubuntu22.04重新读取配置文件grub-mkconfig -o /boot/grub/grub.cfg再执行重启 reboot

Rocky8.6​​​​​​

#查看[root@rocky86 ~]# ip a
#修改[root@rocky86 ~]# vim /etc/default/grubGRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rl-swaprd.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;rebootGenerating grub configuration file ...done
#再次查看[root@rocky86 ~]# ip a

Ubuntu22.04

root@ubuntu22:~# ip a


#修改root@ubuntu22:~# vim /etc/default/grubGRUB_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.cfgroot@ubuntu22:~# reboot
#再次查看root@ubuntu22:~# ip a

临时修改网卡名

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

1.3 网络配置

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

1.3.1 网络配置的两种方式

静态指定:

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

动态分配:

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

1.3.2 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-eth0TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=dhcpDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noNAME=eth0UUID=5c093cad-84c9-4cfc-8b6f-e1041db357dfDEVICE=eth0ONBOOT=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|static 静态地址
网卡设备是否开机启用ONBOOT是否开机启用,yes 启用,no 禁用
域后缀DOMAIN域后缀
主DNSDNS1主DNS
次DNSDNS2次DNS
第三DNSDNS3第三DNS

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

[root@rocky86 ~]# cd /etc/sysconfig/network-scripts[root@rocky86 network-scripts]# vim ifcfg-eth1DEVICE=eth1NAME=con-eth1IPADDR=10.0.0.88PREFIX=24GATEWAY=10.0.0.2DNS1=10.0.0.2DNS2=114.114.114
#查看[root@rocky86 network-scripts]# nmcli connection[root@rocky86 network-scripts]# nmcli connection reload
#再次查看[root@rocky86 network-scripts]# nmcli connection
#查看[root@rocky86 network-scripts]# ifconfig eth1

查看DNS

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

使用DNS解析域名​​​​​​​

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

域后缀

#添加域后缀[root@rocky86 network-scripts]# vim ifcfg-eth1DEVICE=eth1NAME=con-eth1IPADDR=10.0.0.88PREFIX=24GATEWAY=10.0.0.2DNS1=10.0.0.2DNS2=114.114.114.114DOMAIN=josedu.com
[root@rocky86 network-scripts]# nmcli conn reload;nmcli conn up con-eth1Connection successfully activated (D-Bus active path:/org/freedesktop/NetworkManager/ActiveConnection/6)
#查看DNS和域后缀[root@rocky86 network-scripts]# cat /etc/resolv.conf# Generated by NetworkManagersearch localdomain josedu.comnameserver 10.0.0.2nameserver 114.114.114.114
#默认补全[root@rocky86 network-scripts]# ping wwwPING www.josedu.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-eth2DEVICE=eth2NAME=con-eth2IPADDR=192.168.10.88PREFIX=24
#查看[root@rocky86 network-scripts]# nmcli connectionNAME UUID TYPE DEVICEeth0 5c093cad-84c9-4cfc-8b6f-e1041db357df ethernet eth0con-eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet eth1virbr0 77c5c6bc-b04f-4ae4-a8eb-16fdf62e9a70 bridge virbr0
[root@rocky86 network-scripts]# nmcli connection reload;nmcli connectionNAME UUID TYPE DEVICEeth0 5c093cad-84c9-4cfc-8b6f-e1041db357df ethernet eth0con-eth1 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 ethernet eth1con-eth2 3a73717e-65ab-93e8-b518-24f5af32dc0d ethernet eth2virbr0 77c5c6bc-b04f-4ae4-a8eb-16fdf62e9a70 bridge virbr0
#查看[root@rocky86 network-scripts]# ifconfig etheth2: 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中的网卡生效方法​​​​​​​

#centos7和centos8通用nmcli connection reload;nmcli connection up con-eth1#仅支持centos7版本systemctl restart network#centos6版本service network restart

修改后确认​​​​​​​

#ip确认ip aip a show deviceifconfigifconfig device#路由确认route -nip route#DNS确认cat /etc/resolv.conf
1.3.3 Ubuntu 系列网卡配置

配置文件

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

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

root@ubuntu22:~# cd /etc/netplan/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 本身的定义比简单,是一种人性化的语言。

https://yaml.org/ #官方网站

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

数据结构​​​​​​​​​​​​​

#列表 List,以 “-” 开头- tom- jerry- spike
#也可以写成这样[tom,jerry,spike]
#字典 Dict,由 k/v 构成name: tomage: 123
#也可以写成这样{name: tom, age: 123}

列表和字典可以嵌套使用​​​​​​​

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

常用配置项

配置项变量名备注
是否是通过DHCP服务获取IPdhcp4true|false
IP地址addresses列表
网关gateway4
DNSnameservers
版本version默认写 2
域后缀search列表

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

root@ubuntu22:~# cd /etc/netplan/root@ubuntu22:/etc/netplan# ls00-installer-config.yaml
#新增网卡配置文件root@ubuntu22:/etc/netplan# vim eth1.yamlnetwork:renderer: networkdethernets:eth1:addresses: [10.0.0.6/24,10.0.0.66/24]nameservers:search: [josedu.com,josedu.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

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

root@ubuntu22:/etc/netplan# cd /etc/netplan/root@ubuntu22:/etc/netplan# ls00-installer-config.yaml eth1.yaml
#新增配置root@ubuntu22:/etc/netplan# vim eth2.yamlnetwork:renderer: networkdethernets:eth2:addresses:- 192.168.10.66/24version: 2
#生效root@ubuntu22:/etc/netplan# netplan apply
#查看root@ubuntu22:/etc/netplan# ip a show eth2

查看路由

root@ubuntu22:/etc/netplan# route -n

查看DNS

#这里看不到root@ubuntu22:/etc/netplan# cat /etc/resolv.conf
#使用如下命令查看root@ubuntu22:~# resolvectl status
1.4 网络配置命令
1.4.1 主机名

hostname

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

hostname [-b] {hostname|-F file} set host name (from file)hostname [-a|-A|-d|-f|-i|-I|-s|-y] display formatted namehostname display host name
#常用选项-a|--alias #显示别名-F|--file #从文件中读取-i|--ip-address #显示IP地址,仅显示能解析的地址-I|--all-ip-addresses #显示所有IP地址,包含不能被解析的,但不显示IPV6地址,不显示回环地址​​​​​​​​​​​​​​#显示主机名[root@ubuntu2204 ~]# hostnameubuntu2204
#显示别名[root@ubuntu2204 ~]# hostname -a
#设置,从文件中读取[root@ubuntu2204 ~]# cat name.txttest-name[root@ubuntu2204 ~]# hostname -F name.txt[root@ubuntu2204 ~]# hostnametest-name
#显示IP地址,会卡一会儿,因为要通过DNS反解主机名[root@ubuntu2204 ~]# hostname -i10.0.0.206 fe80::20c:29ff:fe11:98d9
#显示所有IPV4地址[root@test-name ~]# hostname -I10.0.0.206

hostnamectl

写配置文件,永久有效​​​​​​​

#查看[root@ubuntu2204 ~]# hostnamectl status
#设置,会写进 /etc/hostname 文件里面,永久有效[root@ubuntu2204 ~]# hostnamectl hostname ubuntu-mk[root@ubuntu2204 ~]# cat /etc/hostnameubuntu-mk
#查看[root@ubuntu2204 ~]# hostnamectl
1.4.2 ifconfig 命令

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

[root@ubuntu ~]# dpkg -S /sbin/ifconfignet-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|hdlc|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 #禁用设备​​​​​​​#查看所有启用的设备[root@ubuntu ~]# ifconfig
#查看所有设备,包括禁用的[root@ubuntu ~]# ifconfig -a
#直接修改设备信息,临时有效[root@ubuntu ~]# ifconfig eth1 10.0.0.55 netmask 255.255.255.0
[root@ubuntu ~]# ifconfig eth1
#清除设备信息,临时有效,0.0.0.0可以写成 0[root@ubuntu ~]# ifconfig eth1 0.0.0.0
[root@ubuntu ~]# ifconfig eth1
#启用和禁用[root@ubuntu ~]# ifconfig eth1 up[root@ubuntu ~]# ifconfig eth1 down
#显示流量统计,此命令的输出在 rocky8 中对不齐[root@ubuntu ~]# ifconfig -s
#统计指定设备[root@ubuntu ~]# ifconfig -s eth0
#字段说明Iface #网络设备MTU #该接口设备最大传输单元,单位是字节,就是一个数据包不能超1500字节RX-OK #收包时成功接收的数据包数量RX-ERR #收包时出错的数据包的数量RX-DRP #收包时丢弃的数据包的数量RX-OVR #收包时由于过速(接收设备收不过来)而丢弃的数据包数量TX-OK #发包时成功发送的包的数量TX-ERR #发包时出错的数据包的数量TX-DRP #发包时被丢弃的数据包的数量TX-OVR #发包时由于过速而丢弃的数据包的数量Flg #标志位
#Flg字段说明B #该设备已经设置了广播地址L #该设备是一个回环设备M #该设备能接收所有经过它的数据包,而不论其目的地址是否是它本身(混乱模式)N #该设备不能被追踪O #在该设备上禁用ARPP #这是一个点到点链接R #当前设备正在运行U #当前设备处于活动状态
1.4.3 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 #目标是一个主机
#常用子命令adddelflushnetmaskgwmetricDestinationGateway​​​​​​​
#查看路由表[root@ubuntu ~]# route
#查看路由表,以IP格式显示[root@ubuntu ~]# route -n

路由表各字段

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

添加路由​​​​​​​

#添加路由:route add [-net|-host|default] target [netmask Nm] [gw GW] [[dev] If]#目标:192.168.1.3 网关:172.16.0.1route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
#目标:192.168.0.0 网关:172.16.0.1route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0route add -net 192.168.8.0/24 dev eth1 metric 200
#默认路由,网关:172.16.0.1route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1route add -net 0.0.0.0/0 gw 172.16.0.1route add default gw 172.16.0.1

删除路由​​​​​​​

#删除路由:route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
#目标:192.168.1.3 网关:172.16.0.1route del -host 192.168.1.3
#目标:192.168.0.0 网关:172.16.0.1route del -net 192.168.0.0 netmask 255.255.255.0

ip route 命令​​​​​​​

#添加ip route add 20.0.0.0/24 dev eth0 via 10.0.0.123
#查看ip routeip route show
#删除ip route del 20.0.0.0/24 dev eth0 via 10.0.0.123

开启路由转发功能

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

诊断工具​​​​​​​

#抓包tcpdump -i ens160 -nn icmp#跟踪路由mtr 192.168.10.254 -n

1.4.4 配置动态路由

通过守护进程获取动态路由,安装quagga包,通过命令vtysh配置

支持多种路由协议:

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

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

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

1.4.5 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​​​​​​
#以IP格式显示路由表[root@ubuntu ~]# netstat -n
#显示所有连接[root@ubuntu ~]# netstat
#显示所有连接,都以数字IP格式显示主机[root@ubuntu ~]# netstat -n
#显示tcp连接 - 仅显示己建立连接的[root@ubuntu ~]# netstat -nt
#以数字IP显示所有状态的tcp,udp连接[root@ubuntu ~]# netstat -ntua
#仅显示Listen 状态的TCP,UDP连接,并显示进程ID和程序[root@ubuntu ~]# netstat -tulnp

统计指定网卡数据​​​​​​​

[root@Rocky86 ~]# netstat -I=eth0
#这里没有空格[root@Rocky86 ~]# netstat -Ieth0
#ubuntu中没有 -I 选项,版本不一样[root@ubuntu ~]# netstat -Ieth0netstat: invalid option -- 'I'
#从内存中统计[root@ubuntu ~]# cat /proc/net/dev
1.4.6 显示接口统计数据​​​​​​​
#统计所有网卡信息netstat -i|ifconfig -s|cat /proc/net/dev
#统计所有指定信息netstat -Ieth0|netstat -I=eth0|ifconfig -s eth0|{cat /proc/net/dev|grep eth0}
1.4.7 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|mroute|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] }
1.4.7.1 配置Linux网络属性​​​​​​​
OBJECT := { link | addr | route }
#主要用来查看链路层信息[root@Rocky86 ~]# ip linkadd delete help set show
[root@Rocky86 ~]# ip addressadd change del flush help replace show
[root@Rocky86 ~]# ip routeadd append change del flush get help list monitor replace​​​[root@ubuntu ~]# ip a show eth1
#禁用网卡[root@ubuntu ~]# ip link set eth1 down
#改名[root@ubuntu ~]# ip link set eth1 name eth1-test
#启用[root@ubuntu ~]# ip link set eth1-test up
#查看[root@ubuntu ~]# ip link show eth1-test​​​​​​​#查看网卡[root@ubuntu ~]# ip address show eth1
#向设备添加IP地址[root@ubuntu ~]# ip address add 10.0.0.110/24 dev eth1
#查看[root@ubuntu ~]# ip a show eth1
#ifconfig 查看[root@ubuntu ~]# ifconfig eth1
#继续添加IP[root@ubuntu ~]# ip address add 10.0.0.119/24 dev eth1
#查看,一个网卡上有两个IP[root@ubuntu ~]# ip a s eth1
#ifconfig 只能看到一个IP[root@ubuntu ~]# ifconfig eth1​​​​​​​添加别名[root@ubuntu ~]# ip address add 10.0.0.114/24 dev eth1 label eth1:114
#查看[root@ubuntu ~]# ip a show eth1
#ifconfig 查看[root@ubuntu ~]# ifconfig eth1
[root@ubuntu ~]# ifconfig eth1:114​​​​​​​#查看[root@ubuntu ~]# ip a show eth1
#删除IP[root@ubuntu ~]# ip a del 10.0.0.119/24 dev eth1
#删除别名[root@ubuntu ~]# ip a del 10.0.0.114/24 dev eth1 label eth1:114
#再次查看[root@ubuntu ~]# ip a show eth1​​​​​​​#添加IP,30S生命周期[root@ubuntu ~]# ip a change 10.0.0.137/24 dev eth1 preferred_lft 30 valid_lft30
#查看[root@ubuntu ~]# ip a show eth1
#查看[root@ubuntu ~]# ip a show eth1​​​​​​​#清除网卡上所有IP[root@ubuntu ~]# ip a flush dev eth1[root@ubuntu ~]# ip a s eth1

CentOS 中的网卡配置上多个地址-永久有效

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens224DEVICE=ens224NAME=ens224IPADDR=172.16.1.59PREFIX=24
IPADDR2=172.16.1.49PREFIX2=24
IPADDR3=172.16.1.39PREFIX3=24
GATEWAY=172.16.1.254BOOTPROTO=staticDNS1=8.8.8.8
#重新生效[root@localhost ~]# nmcli connection reload;nmcli connection up ens224
#再次查看[root@localhost ~]# ip a show ens224
#新增别名文件的方法[root@localhost network-scripts]# cp ifcfg-ens224 ifcfg-ens224:1[root@localhost network-scripts]# vim ifcfg-ens224:1DEVICE=ens224:1IPADDR=172.16.1.19PREFIX=24BOOTPROTO=static
#重载配置[root@localhost network-scripts]#nmcli connection reload;nmcli connection upens224
#查看[root@localhost network-scripts]# ip a show ens224
#如果想删除该配置,则直接删除文件即可[root@localhost network-scripts]# rm ifcfg-ens224:1
#重载配置[root@localhost network-scripts]#nmcli connection reload;nmcli connection upens224
1.4.7.2 管理路由

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 IPip route add 192.168.0.0/24 via 172.16.0.1ip route add 192.168.1.100 via 172.16.0.1ip route add default via 172.16.0.1ip route flush dev eth0ip route get 8.8.8.8
1.4.8 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 #显示对应的进程-i|--info #显示TCP连接的详细信息--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​​​​​​​#以IP的格式显示所有连接数据[root@ubuntu ~]# ss -n
#显示所有TCP连接 - 正处于连接状态[root@ubuntu ~]# ss -tn
#显示所有TCP连接[root@ubuntu ~]# ss -tan
#显示所有处于监听状态的TCP,UDP连接,并显示程序和进程ID[root@ubuntu ~]# ss -tunlp
#同上,并显示统计信息[root@ubuntu ~]# ss -tunlps
1.4.9 网络配置工具 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 #显示帮助
#OBJECTg[eneral] #一般状态管理n[etworking] #整体网络管理r[adio] #网络连接切换c[onnection] #网络连接管理d[evice] #网络设备管理a[gent] #网络中的代理m[onitor] #网络中的流量数据监测​​​​​​​
#查看网络连接nmcli connmcli 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/16ipv4.gateway 172.16.1.254 ipv4.dns 8.8.8.8 ipv4.method manual type ethernetifname eth1
#同一设备新增配置nmcli con mod con-eth1 +ipv4.addresses 10.0.0.119/24nmcli con mod con-eth1 +ipv4.dns 8.8.8.8
#同一设备删除配置nmcli con mod con-eth1 -ipv4.addresses 10.0.0.119/24nmcli con mod con-eth1 -ipv4.dns 8.8.8.8
#同一设备修改配置nmcli con mod con-eth1 connection.autoconnect nonmcli con mod con-eth1 ipv4.addresses 10.0.0.119/24nmcli con mod con-eth1 ipv4.dns 8.8.8.8​​​​​​​
#查看配置文件[root@Rocky86 network-scripts]# lsifcfg-eth0
#查看连接[root@Rocky86 network-scripts]# nmcli conNAME UUID TYPE DEVICEeth0 5c093cad-84c9-4cfc-8b6f-e1041db357df ethernet eth0virbr0 e47f77ad-00bf-4e5e-9db5-3ee490e63b2b bridge virbr0eth1 52203ca3-742c-4ad4-9162-9482d6f2bbef ethernet eth1
#新增网卡配置,自动生成配置文件[root@Rocky86 network-scripts]# nmcli con add con-name con-eth1 ipv4.addresses10.0.0.110/24 ipv4.gateway 10.0.0.2 ipv4.dns 114.114.114.114 ipv4.method manual type ethernet ifname eth1Connection 'con-eth1' (6b2c0337-7fca-4e61-854a-7d7fa916c6b0) successfully added.
#查看[root@Rocky86 network-scripts]# lsifcfg-con-eth1 ifcfg-eth0
#查看[root@Rocky86 network-scripts]# nmcli conNAME UUID TYPE DEVICEeth0 5c093cad-84c9-4cfc-8b6f-e1041db357df ethernet eth0virbr0 e47f77ad-00bf-4e5e-9db5-3ee490e63b2b bridge virbr0eth1 52203ca3-742c-4ad4-9162-9482d6f2bbef ethernet eth1con-eth1 6b2c0337-7fca-4e61-854a-7d7fa916c6b0 ethernet --
#让新配置生效[root@Rocky86 network-scripts]# nmcli co reload;nmcli con up con-eth1Connection successfully activated (D-Bus active path:/org/freedesktop/NetworkManager/ActiveConnection/4)
#再次查看[root@Rocky86 network-scripts]# nmcli conNAME UUID TYPE DEVICEeth0 5c093cad-84c9-4cfc-8b6f-e1041db357df ethernet eth0con-eth1 6b2c0337-7fca-4e61-854a-7d7fa916c6b0 ethernet eth1virbr0 e47f77ad-00bf-4e5e-9db5-3ee490e63b2b bridge virbr0eth1 52203ca3-742c-4ad4-9162-9482d6f2bbef ethernet --
#查看[root@Rocky86 network-scripts]# nmcli dev show eth1
#删除配置[root@Rocky86 network-scripts]# nmcli con del eth1Connection 'eth1' (52203ca3-742c-4ad4-9162-9482d6f2bbef) successfully deleted.
#查看[root@Rocky86 network-scripts]# nmcli conNAME UUID TYPE DEVICEeth0 5c093cad-84c9-4cfc-8b6f-e1041db357df ethernet eth0con-eth1 6b2c0337-7fca-4e61-854a-7d7fa916c6b0 ethernet eth1virbr0 e47f77ad-00bf-4e5e-9db5-3ee490e63b2b bridge virbr0

命令中的配置项和配置文件中的配置项对应关系

nmcli con modifcfg-* 文件
ipv4.method manualBOOTPROTO=none
ipv4.method autoBOOTPROTO=dhcp
ipv4.addresses 192.168.2.1/24IPADDR=192.168.2.1 PREFIX=24
ipv4.gateway 172.16.0.200GATEWAY=192.0.2.254
ipv4.dns 8.8.8.8DNS0=8.8.8.8
ipv4.dns-search example.comDOMAIN=example.com
ipv4.ignore-auto-dns truePEERDNS=no
connection.autoconnect yesONBOOT=yes
connection.id eth0NAME=eth0
connection.interface-name eth0DEVICE=eth0
802-3-ethernet.mac-address . . .HWADDR= . . .

在ubuntu中使用nmcli​​​​​​​

[root@ubuntu ~]# apt install network-manager[root@ubuntu ~]# vim /etc/NetworkManager/NetworkManager.conf...[ifupdown]managed=false 修改为 managed=true
[root@ubuntu ~]# systemctl restart NetworkManager.service
#修改网卡配置[root@ubuntu ~]# vim /etc/netplan/00-installer-config.yaml# This is the network config written by 'subiquity'network:  renderer: NetworkManager #添加此行  ethernets:    ens33:      dhcp4: true  version: 2
[root@ubuntu ~]# netplan apply
#查看[root@ubuntu ~]# nmcli conNAME UUID TYPE DEVICEeth0 ee0e8d07-c5b7-4a61-bab7-a07cfaca63d7 ethernet eth0eth1 b232b5bd-34c9-4210-a3b2-1dfb8affcef0 ethernet eth1

相关文章:

  • 可视化+图解:轻松搞定链表
  • OpenIndiana Hipster系统安装配置
  • MyBatis-Plus 与 Spring Boot 的最佳实践
  • 实现NTLM relay攻击工具的Python代码示例
  • zabbix图表中文显示方框
  • dify在腾讯云服务器上部署
  • 爬虫代理技术深度解析:从原理到实战应用
  • Billing的patient balance的2个例子
  • Spring Cloud Alibaba OpenFeign 实战:打造稳定高效的远程调用
  • OpenBMC:BmcWeb connect读取http请求
  • C++入门——输入输出、缺省参数
  • HCIA-路由重分布
  • V90伺服电机初调试
  • Python第十五课:机器学习入门 | 从猜想到预测
  • react基本功
  • After Effects的图钉与关键帧动画
  • STM32之I2C硬件外设
  • Python应用程序健康检查与监控系统的实现
  • Red Hat Enterprise Linux 8.10 正式版
  • elasticsearch商业产品
  • 外贸怎么做网站/百度指数入口
  • wordpress 打赏 手机/seo网站推广如何做
  • 百货店怎么做网站送货/免费发帖推广的平台
  • 工程建设国家标准网站/排名优化公司电话
  • 购物网站建设公司/40个免费靠谱网站
  • 搭建一个网站/企业营销策划论文