tcp/ip协议栈:物理层,互联网层,传输层,应用层
常用的协议:
互联网层:IP
传输层:TCP,udp
TCP:面向连接的协议,通信开始之前,需要建立一个虚链路
UDP:无连接的协议,直接发送数据报文
应用层http,https,ftp,ldap
统一网卡名称
出于批量管理,以及脚本的通用性等方面的考虑; 在某些情况下,需要将新的网卡命名规则改成传统的命名方式;即将 ens33,ens160等名称改为eth0, eth1 这样;
centos:
vim /etc/default/grub
GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
#修改, 将文件内的ens160改成 eth0
vim /etc/sysconfig/network-scripts/ifcfg-ens160
#修改文件名
mv /etc/sysconfig/network-scripts/ifcfg-ens160 /etc/sysconfig/network-scripts/ifcfg-eth0
#重读配置文件并重启
grub2-mkconfig -o /etc/grub2.cfg;reboot
ubuntu:
vim /etc/default/grub
GRUB_CMDLINE_LINUX=" net.ifnames=0"
#修改网卡配置
vim /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens33: #此处改成 eth0
dhcp4: true
version: 2
#重读配置文件并重启
grub-mkconfig -o /boot/grub/grub.cfg;reboot
临时修改网卡名
ip link set ens160 down
ip link set ens160 name abc
ip link set abc up
配置文件
centos:
cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.17
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.6.6.6
DNS2=180.76.76.76
ONBOOT=yes
#网卡生效
#7,8 通用
nmcli connection reload;nmcli connection up con-eth1
#仅centos7版本支持
systemctl restart network
ubuntu:
vim /etc/netplan/00-installer-config.yaml
network:
添加一块网卡,并指定仅主机模式
renderer: networkd
ethernets:
eth1:
addresses: [10.0.0.16/24]
version: 2
#让网卡生效
root@ubuntu22:/etc/netplan# netplan apply
ifconfig,route,netstat
ifconfig:查看设备信息
[root@master1 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.17 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::20c:29ff:fe78:6b09 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:78:6b:09 txqueuelen 1000 (Ethernet)
RX packets 506 bytes 43650 (42.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 498 bytes 40957 (39.9 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
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 12 bytes 1020 (1020.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12 bytes 1020 (1020.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#直接修改设备信息,临时有效
[root@master1 ~]# ifconfig eth1 10.0.0.55 netmask 255.255.255.0
#清除设备信息,临时有效,0.0.0.0可以写成 0
[root@master ~]# ifconfig eth1 0.0.0.0
#启用和禁用
[root@master ~]# ifconfig eth1 up
[root@master ~]# ifconfig eth1 down
#常用选项
-a #显示所有
-s #以短格式显示
-v #显示详细错误信息
route:路由
#常用选项
-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@master1 ~]#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.168.1.2 网关172.16.0.1
#添加
route add -host 10.168.1.2 gw 172.16.0.1 dev eth0
#删除
route del -host 10.168.1.2
目标:10.168.0.0 网关172.16.0.1
#添加
route add -net 10.168.0.0/24 gw 172.16.0.1 dev eth0
删除
route del -net 10.168.0.0/24 netmask 255.255.255.0
#开启路由转发
#查看
cat /proc/sys/net/ipv4/ip_forward
1
vim /etc/sysctl.conf
net.ipv4.ip_forward=
#生效
sysctl -p
net.ipv4.ip_forward = 1
echo 1 > /proc/sys/net/ipv4/ip_forward
诊断工具
#抓包
tcpdump -i ens33 -nn icmp
#跟踪路由
mtr 10.0.0.254 -n
netstat命令:显示网络连接
#常用选项
-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,ss,nmcli
ip(可以代替ifconfig,route)
OBJECT := { link | addr | route }
#管理路由
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.100 via 172.16.0.1
ip route add default via 172.16.0.1
ip route flush dev eth0
ip route get 8.8.8.8
ss(可以代替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|ne
tlink|vsock_stream|vsock_dgram|tipc}[,QUERY]
#常用组合
-tan, -uan, -tnl, -unl, -tuanp
nmcli:网络配置工具
NetworkManager:让用户能更轻松的管理Linux中的网络,它 是一个动态的,事件驱动的网络管理服务。
该项目提供了丰富的管理工具
图形工具:nm-connection-editor
字符配置工具:nmtui,nmtui-connect,nmtui-edit,nmtui-hostname
命令行工具: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 show
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
网卡别名
将多个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