网络管理
概括图
常用工具命令说明
ethtool ens160 //查看网卡
nc -l 10.0.0.133 6666 //监听端口
ss -ntlp //查看端口占用
lsof -i :6666 //查看端口占用
netstat -s //查看协议
TCP
三次握手四次挥手
孤儿连接
客户端执行半关闭后,未等到服务器关闭连接就强行退出了,此时客户端连接由内核来接管,称为孤儿连接
cat /proc/sys/net/ipv4/tcp_max_orphans #内核能接管的孤儿连接数目
cat /proc/sys/net/ipv4/tcp_fin_timeout #孤儿连接在内核中的生存时间
半连接和全连接队列修改
客户端第一次握手,服务端把请求请求放入半连接队列后向客户端发送确认
服务端第二次握手
客户端第三次握手,服务端把请求从半连接装填取出放入全连接队列,等待应用程序接受数据
cat /proc/sys/net/ipv4/tcp_max_syn_backlog #半连接队列
cat /proc/sys/net/core/somaxconn #全连接队列
超时重传
cat /proc/sys/net/ipv4/tcp_retries1 #最少执行的重传次数
cat /proc/sys/net/ipv4/tcp_retries2 #最多执行的重传次数
拥塞控制
cat /proc/sys/net/ipv4/tcp_congestion_control#查看拥塞控制算法
TCP内核参数优化
man 7 tcp #查看帮助
长久生效配置cat /etc/sysctl.conf sysctl -p 生效
net.ipv4.tcp_fin_timeout # 按照这个个是配置,
对应的系统文件
/proc/sys/net/ipv4/tcp_fin_timeout #保持在FIN-WIAT-2 状态的时间
/proc/sys/net/ipv4/tcp_tw_reuse #允许在TIME-WAIT 状态的sockets 用于新的连接
cat /proc/sys/net/ipv4/tcp_recovery # TIME-WAIT sockets快速回收
cat /proc/sys/net/ipv4/tcp_syncookies #方法少量 SYN攻击,在SYN等待队列溢出时,开启
cat /proc/sys/net/ipv4/tcp_keepalive_time # TCP 发送keepalive 消息的频道,建议改为10分钟
cat /proc/sys/net/ipv4/ip_local_port_range #系统打开的外连接端口范围
cat /proc/sys/net/ipv4/tcp_max_syn_backlog #半连接长度
cat /proc/sys/net/ipv4/tcp_max_tw_buckets #保持TIME-WAIT 套接字的最大数量
cat /proc/sys/net/ipv4/tcp_synack_retries #内核放弃连接前发送SYN+ACK包的数量
cat /proc/sys/net/ipv4/tcp_syn_retries #内核放弃连接前发送SYN的数量
cat /proc/sys/net/core/somaxconn #同时发起的最大TCP连接数
cat /proc/sys/net/core/netdev_max_backlog #每个网络接口接受数据包的速率比内核处理这些包的速率快时,允许发送到队列的最大包数
ARP
查看当前网段的ip和MAC地址
arp -n
ARP静态绑定方式ARP欺骗
arp -s 10.0.0.131 00:0c:29:09:71:31
internet协议
主机A传输包到主机B 的完整过程
IP地址
IP地址有32位组成
网络ID
主机ID
子网掩码:计算网络ID 位数
一个网络中的最多主机数 = 2^主机ID - 2
网段数:2^网络ID可变的位数
网络ID:IP与子网掩码
判断IP是否在一个网段:用自己的子网掩码 分别和 自己的IP 和对方的IP 与计算,结果相同则在一个网段
判断一个网段最小IP和最大IP:
主机:172.16.1.100/28
子网掩码:11111111 11111111 11111111 11110000
IP二进制:10101100 00010000 00000001 01100100
与运算: 10101100 00010000 00000001 01100000
网络ID: 172.16.1.96
最小IP :172.16.1.97 最大IP:172.16.1.110
划分子网
子网个数=2^n n为从主机ID借位
10.0.0.1/8 划分32个子网
子网掩码:11111111 00000000 00000000 00000000
划分子网的掩码 网络ID 向主机ID 借5位 ,网络ID为13位
11111111 11111000 00000000 00000000
子网掩码十进制:255.248.0.0
每个子网的主机数=2^19-2=524286
第十个子网的网络ID
第一个子网 00001010 00001000 00000000 0000000
第二个子网 00001010 00010000 00000000 0000000
第十个子网 00001010 01001000 00000000 0000000
借了5位 ,用5个位置表示第几个子网, 第十个子网 用9的二进制表示
01001 剩下的补0 01001000
子网掩码:11111111 11111000 00000000 00000000
第十个子网:00001010 01001000 00000000 00000000
与运算: 00001010 01001000 00000000 00000000
网络ID :10.72.0.0/13
第十个子网的最小IP
.00001010 01001000 00000000 00000001
10.72.0.1
第十个子网的最大IP
00001010 01001111 11111111 11111110
10.79.255.254
网络配置
基本网络配置
主机名
IP/NETMASK
路由网关
DNS服务器
1.更改网卡名
centos7 8 rokcy
vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0"
grub2-mkconfig -o /boot/grub2/grub.cfg
改完网卡后如果不生效就reboot
2.配置IP
vi /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1 NAME=eth1 BOOTPROTO=static IPADDR=10.0.0.200 PREFIX=24 GTAEWAY=10.0.0.254 nmcli c reload nmcli c up eth1
>#ubutu网卡配置
>sed -ri.bak 's|^GRUB_CMDLINE_LINUX=.*|GRUB_CMDLINE_LINUX=/" net.ifnames=0\"|g' /etc/default/grub
grub-mkconfig -o /boot/grub/grub.cfg
vi /etc/netplan/eth0.yaml
network:
ethernets:
eth0:
dhcp4: no
addresses: [10.0.0.8/24]
gateway4: 10.0.0.2
nameservers:
addresses: [8.8.8.8]
version: 2
netplan apply
3.添加路由
route add -net 目标IP/网络ID个数 gw 网关
route add -net 172.168.10.0/24 gw 10.0.0.254 eth1 # -net 网络ID -host 主机ID
ip route add 172.168.10.0/24 via 10.0.0.254 dev eth1
永久修改路由
vi /etc/sysconfig/network-scripts/route-eth1
172.168.10.0/24 via 10.0.0.254 dev eth1
4.修改了IP转发内核
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p #生效
5.本地主机名和域名解析
cat /etc/hosts
cat /etc/resolv.conf
修改域名解析优先级 hosts 和 域名解析
/etc/authselect/user-nsswitch.conf
6.网卡别名
vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 #同添加IP配置
7.网络组,网卡高可用
8.网桥
yum -y install bridge-utils
brctl add br0 #添加网桥
brctl addif br0 eth1
brctl addif br0 eth0 #添加网卡
//添加网卡后ssh不能连接,清空ip,把ip添加到网桥
ip address flush eth0
ip address flush eth1
ip address add 10.0.0.200/24 br0
配置文件
/etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
SET=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=10.0.0.7 #网桥上加地址方便管理
PREFIX=24
/etc/sysconfig/network-scripts/ifcfg-br0-port0
TYPE=Ethernet
NAME=br0-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
/etc/sysconfig/network-scripts/ifcfg-br0-port1
TYPE=Ethernet
NAME=br0-eth1
DEVICE=eth1
ONBOOT=yes
BRIDGE=br0
Ubuntu配置文件
vi /etc/netplan/eth0.yaml
network:
ethernets:
eth0:
dhcp4: no
eth1:
dhcp4: no
bridges:
br0:
dhcp4: no
addresses: [10.0.0.134/24]
gateway4: 10.0.0.2
nameservers:
addresses: [8.8.8.8]
interfaces:
- eth0
- eth1
version: 2
常用工具
netstat -ntl
ss - ntl
ss -s
ifconfig -a
route -n
mtr baidu.com #检查经过几个路由
tracepath 172.168.10.200
man nmcli //查看帮助
nmcli connection add help //子命令帮助
网络诊断工具
ping #测试网络连通性
ip route #路由表
tracepath #跟踪路由 mtr
nslookup www.baidu.com #解析dns
host -a www.baidu.com
dig www.baidu.com
tcpdump
tcpdump -i 网卡
tcpdump -nn 数字的方式显示IP和端口。一个n是ip
tcpdump -c x 抓包数量,x为数字
tcpdump port xx 抓指定端口的包,xx为端口号
tcpdump tcp and port xx 指定协议和端口,xx为端口号,and可以省略不写
tcpdump host xx.xx.xx.xx 指定来源IP或目标IP的包 xx.xx.xx.xx为IP地址。
tcpdump src host
tcpdump dst host
tcpdump -w xx.txt 把抓的包写入一个文件,xx.txt为文件名 .cap 方便用wireshark 分析
tcpdump -s0 -w xx.txt 抓包时防止包截断,s0的0为数字0,抓一个完整的包必须加s0。
tcpdump -r xx.txt 用户查看-w抓的包,xx.txt为文件名
-w抓的包实际是包的内容,非简单的流向。如果访问一张图片,用-w可以把这张图片抓出来。只看流向的话,可以使用重定向
安全扫描
nc
fping #ping 多个主机
nmap
扫描远程主机