网络管理
网络管理
网络功能都在内核当中
前言
早期的内核是通过网络的mac地址来命名的,centos5,6都是用eth开头,如果主机上原本有一个网卡被内核命名为eth0,结果这个网卡坏了拿下来之后在原本的地方又放了一个新的网卡,那么他还是eth0吗?不是,很有可能被内核识别成为eth1,因为内核是通过网卡的mac地址来识别网卡的。centos7改了命名方式,这种方式根据插槽来命名,也就是说在一个插槽上的任意网卡都是一个名字。
这篇取名为LINUX网络管理,是把公司内部常见centos和ubuntu系统的网络配置囊括了,包括ip家族、ifconfig家族、nmcli家族、netplan。除非特殊场景,我一向是反对通过图形界面配置LINUX网络的,因为图形界面配置与命令行的配置完全独立于命令行的,如果命令行与图形界面同时存在网络配置,会造成冲突,影响系统配置进度。
- centos6的网络配置推荐
centos6临时网络配置推荐使用ifconfig家庭,永久修改推荐使用修改配置文件,通过/etc/init.d或services 重启网络服务;
- centos7的网络配置推荐
centos6临时网络配置推荐使用ip家庭,永久修改推荐使用修改配置文件,通过systemctl重启网络服务;
- centos8的网络配置推荐
centos8的网络配置推荐ip家庭,永远修改推荐使用使用nmlic
- ubuntu 18+
ubuntu 临时网络配置推荐使用ip,永久修改推荐使用netplan,通过netplan apply应用。
ifcfg家族
ifconfig
ifconfig 仅显示本机活动接口的地址
ifconfig -a显示本机活动与不活动的接口的地址
ifconfig eth0 显示eth0的属性信息
ifconfig eth0 192.168.80.6/24 配置ip和掩码
ifconfig eth0 {up|down} 网卡打开关闭
混杂模式:
ifconfig promisc启用混杂模式,不是给自己的数据包也会留下
ifconfig –promisc 关闭混杂模式,只接收给自己的数据包
route
路由管理命令
route add default gw 192.168.80.1 添加默认路由
route add -net 0.0.0.0/24 gw 192.168.80.1 dev ens33 添加默认路由
route add -host 192.168.1.3 gw 192.168.80.1 dev ens33 添加主机路由
[root@localhost ~]# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.80.1 0.0.0.0 UG 0 0 0 ens33
192.168.1.3 192.168.80.1 255.255.255.255 UGH 0 0 0 ens33
U代表up开户状态
G代表这是个路由条目
H这是一个主机路由
route add -net 192.168.10.0/24 gw 192.168.80.1 dev ens33 添加网络路由
[root@localhost ~]# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 192.168.80.1 255.255.255.0 UG 0 0 0 ens33
route del -host 192.168.1.3 删除主机路由
route add -net 192.168.50.0/24 gw 192.168.80.1 dev ens33 删除网络路由
route del -net 0.0.0.0 gw 192.168.80.1 netmask 255.255.255.0 删除默认路由
默认网关如果有两个,后面那个是不会有作用的。
DNS
[root@localhost ~]# echo "nameserver 223.6.6.6">/etc/resolv.conf
当配置完成DNS之后我们进行测试,测试的命令有两种:
FQDN(安全限定域名)--->ip这种方式叫正解,所谓的完全限定域名就是像. www是主机名,baidu是域名。把ip解析成完全限定域名的方式叫反解。测试的命令有两种:
dig –t A [www.baidu.com](http://www.baidu.com) #解析出百度的IP
dig –x 223.6.6.6 #通过此ip地址解析出完全限定域名
host –t A [www.baidu.com](http://www.baidu.com) #解析出百度的IP
host –t PTR 223.6.6.6 #通过此ip地址解析出完全限定域名
netstat
- l -t :显示tcp协议相关
- l -u:显示udp协议相关
- l -w:raw socket裸套节字相关,裸套节字就能通过程序不经过传输层直接使用IP地址
- l -l:处于监听的状态
- l -a:所有状态
- l -n:以数字显示ip和端口
- l -e:扩展格式
- l -p:显示相关进程及PID
常用的组合:
- l -tan以数字显示与tcp相关的所有状态
- l -tnl以数字显示与tcp相关处于监听状态的端口
- l -tnlp:这个最应该记下来
ping
l 我们通过 ping 查看一下往返时间,在局域网当中如果超过 10 毫秒的话就不正常了。
- l -c # 指定发包的次数
- l -s # 指定 ping 包的大小,默认 64 个字节
- l -t # 指定 TTL 值
- l -i # 指定等待几秒发一个 ping 包
- l -w # 指定 ping 命令执行多长秒结束
测试通过的每一个路由器和测试对方的什么操作系统
traceroute
跟踪数据包,查看沿途过了哪些路由器,常用于排错 不通的地方使用标识,traceroute 如果通过 NAT 的时候会出现号 使用的时候直接使用 traceroute 后面加上要跟踪的 IP 地址即可 。
nslookup
测试 DNS 是否正常,测试 DNS 是否能解析域名也可以直接使用 ping,看看能不能解析出域名,有的服务器不允许 ping,这没有关系,我们要看的是第一行,看看有没有解析出域名即可。 nslookup 是专门用来测试 NDS 的,后面直接跟上域名即可。
nslookup www.baidu.com
永久修改路由
如果有多块网卡的话根据需要创建多个路由配置文件,路由配置文件默认是没有的,所
以要进行创建,创建只能在/etc/sysconfig/network-scripts/这个目录里面创建一个 route-<网卡>的文件。如果我们只能一个网卡的话一般就是 eth0,就可以创建:/etc/sysconfig/network-scripts/route-eth0 文件,如下:
vim /etc/sysconfig/network-scripts/route-eth0
0.0.0.0/0 via 192.168.80.1 默认路由 via 是下一跳
192.168.100.0/24 via 192.168.80.1 网络路由
192.168.200.2/32 via 192.168.80.1 主机路由
note:同样的,也需要进行网络服务重启才能生效,如果配置路由之前没有在网卡的配置文件当中配置 ip 地址等信息的话,即使在这里设置了路由也不会生效的,想想也很简单嘛!没有 ip 地址怎么能配置网关呢?
给网卡绑定多个 ip 地址
使用场景,一个服务器上有多个公司网站,想使用多个 ip 分别访问。就是使用子接口嘛!与路由器差不多,网络地址不一样,mac 地址是一样的,在网络服务重启之后通过命令添加的子接口失效,但我们可以配置文件让其永久不失效。 比如原来有个网卡 eth0,那么加一个子接口就是 eth0:# #号从 0 开始,举个例子:
l 临时给网卡添加多个IP
ifconfig eth0:0 192.168.80.7/24 在 eth0 上加一个新的 ip 地址
ifconfig eth0:0 down 关闭这个子接口,up 之后也失效了,物理接口并不会
l 永久给网卡添加多个IP
永久给网卡添加多个 ip 地址,把物理网卡的配置文件 cp 一份做为子接口的配置文件,然后在子接口的配置文件里面把:设备名修改成子接口的名字、IP 修改、子网掩码一定要有,然后重启网卡即可。
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg –eth0:0 #不要忘记修改这个网络配置文件+4
vim ifcfg-eth0:0
service network restart
绑定 mac 地址和 ip 地址
防止 arp 欺骗的重要手段 arp –a 查看缓存的 mac 地址 arp –s 192.168.80.1 ##:##:##:##绑定 mac 地址,重启无效
cat /proc/net/arp
arp –d 192.168.80.1 删除绑定的 mac 地址
永久绑定
vim /etc/ethers
192.168.80.66 ##:##:##:##
重启之后依然有效
IP家族
link
子命令:
show: ip link show {dev eth0 | up | down} #查看eth0接口地址,开启的接口,关闭的接口
set :ip link set {up | down} dev eth0 #关闭或者开户eth0接口
[root@LAMP ~]# ip link set down dev eth0 #除了down当然还有up
addr
ip addr {add|del|show}
[root@LAMP ~]# ip addr del 192.168.80.10/24 dev eth0 label 'eth0:0'
linux的地址其实是配置在内核当中的
[root@LAMP ~]# ip addr add 192.168.80.100/24 dev eth0 label 'eth0:1'
[root@LAMP ~]# ip addr flush dev eth0 label eth0:1
nmcli
- 查看是否打开了network manager
[root@C8 ~]# nmcli n off
[root@C8 ~]# nmcli n
disabled
[root@C8 ~]# nmcli n on
[root@C8 ~]# nmcli n
enabled
nmcli将网卡与连接分离开,网卡就是网卡,连接就是连接,一个网卡可以有多个连接,这一点很好理解,一个网卡本身就可以配置多个IP地址,每个IP地址都是一个连接,一个连接同一时间只能属于一个网卡,一个网卡在同一时间也只能有一个活跃的连接,连接是可以附加的任何网卡上的,connection就是连接,device就是网卡,connection和device就是nmcli当中最常使用的两个子命令。
- connection
# 简写
nmcli connection 可简写成 nmcli c
# 常用命令,# 常见状态
nmcli connection show
active:带颜色,表示当前connection生效
inactive 不带颜色,表示当前conncction不生效
# 交互式编辑connection
nmcli connection edit CONNECTION_NEME
# 例子
[root@C8 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 3ef1f955-6936-473a-bc07-b8ba151b697d ethernet ens33
[root@C8 ~]# nmcli connection edit ens33
[root@C8 ~]# nmcli connection edit 3ef1f955-6936-473a-bc07-b8ba151b697d
- device
# 简写
nmcli device 可简写成 nmcli d
# 常见状态,在这里status等同于connection当中的show,就是查看状态
[zhanghe@C8 ~]$ nmcli device status
DEVICE TYPE STATE CONNECTION 状态
ens33 ethernet connected ens33 已连接
virbr0 bridge disconnected -- 网卡已被Nmcli托管,但未有连接
ens37 ethernet disconnected -- 网卡已经被nmcli托管,但未有连接
lo loopback unmanaged -- 网卡未被nmcli 托管
virbr0-nic tun unmanaged --
- 修改
## 不交互,直接修改,修改之后需要通过nmcli connection up 重读才会生效,此操作是直接写入到配置文件当中。
# 自动获取
[zhanghe@C8 network-scripts]$ nmcli connection modify ens33 ipv4.method auto
[zhanghe@C8 network-scripts]$ nmcli c up ens33
# 手动设置
[zhanghe@C8 network-scripts]$ nmcli connection modify ens33 ipv4.method manual
[zhanghe@C8 ~]$ nmcli connection show
NAME UUID TYPE DEVICE
ens33 3ef1f955-6936-473a-bc07-b8ba151b697d ethernet ens33
virbr0 0e1432b5-0b75-4607-82cb-682c2216c61c bridge virbr0
[zhanghe@C8 ~]$ nmcli connection modify ens33 ipv4.address 192.168.0.88
[zhanghe@C8 ~]$ nmcli connection modify ens33 ipv4.gateway 192.168.0.99
[zhanghe@C8 ~]$ nmcli connection modify ens33 ipv4.dns 223.5.5.5
[zhanghe@C8 ~]$ nmcli connection modify ens33 ipv4.routes "192.168.33.0/24 192.168.0.22"
[zhanghe@C8 ~]$ nmcli connection up ens33
# 连招
[zhanghe@C8 ~]$ nmcli connection modify ens33 ipv4.method manual ipv4.address 192.168.77.9/24 ipv4.gateway 192.168.77.1 ipv4.dns 223.7.7.7 ipv4.routes "192.168.73.0/24 192.168.77.9"
[zhanghe@C8 ~]$ nmcli connection up ens33
## 交互式
[zhanghe@C8 ~]$ nmcli connection edit ens33
nmcli> goto ipv4.address
nmcli ipv4.addresses> change
Edit 'addresses' value: 192.168.0.77/24
Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes
nmcli ipv4.addresses> print
addresses: 192.168.0.77/24
nmcli ipv4.addresses> back
nmcli ipv4> goto ipv4.gateway
nmcli ipv4.gateway> change
Edit 'gateway' value: 192.168.0.22
nmcli ipv4.gateway> print
gateway: 192.168.0.22
nmcli ipv4.routes> change
Edit 'routes' value: 10.100.12.0/24 192.168.0.22
nmcli ipv4.routes> print
routes: { ip = 10.100.12.0/24, nh = 192.168.0.22 }
nmcli ipv4.gateway> back
nmcli ipv4> back
nmcli> save
nmcli> activate
netplan
bresee@bresee:~$ vim /etc/netplan/50-cloud-init.yaml
network:
version: 2
renderer: networkd
ethernets:
enp129s0f0:
dhcp4: no
dhcp6: no
addresses: [10.50.12.10/22]
gateway4: 10.50.12.1
nameservers:
addresses: [10.30.12.6,10.50.0.50]
routes:
- to: 192.168.22.0/24
via: 192.168.22.4
# 让netplan生效
netplan apply
route
[root@LAMP ~]# ip route add 0.0.0.0/0 via 192.168.80.1 dev eth0 #添加默认路由
[root@LAMP ~]# ip route add default via 192.168.80.1 #添加默认路由
[root@LAMP ~]# ip route add 192.168.90.0/24 via 192.168.80.1 dev eth0 #添加网络路由
[root@LAMP ~]# ip route add 192.168.100.1 via 192.168.80.1 dev eth0 #添加主机路
[root@LAMP ~]# ip route flush 0.0.0.0/0 via 192.168.80.1 #删除默认路由
[root@LAMP ~]# ip route flush default via 192.168.80.1 #删除默认路由
[root@LAMP ~]# ip route flush 192.168.1.1 #删除主机路由
[root@LAMP ~]# ip route flush 192.168.200.0 #删除主机路由
[root@LAMP ~]# ip route show
[root@LAMP ~]# ip route flush dev eth0
ss
ss -tan state ESTABLISHED
检查套接字的工具
网卡命名