讲师_@王晓春
本章命令:ip ifconfig route nmcli ifup ifdown ss
以下为个人简单的笔记,如需详细了解网络相关的知识,推荐计算机专业教材:《计算机网络(第7版)-谢希仁》
有限状态机FSM | 注释 |
---|---|
CLOSED | 没有任何连接状态 |
LISTEN | 侦听状态 |
SYN-SENT | 在发送连接请求后,等待对方确认 |
SYN-RECEIVED | 在收到和发送一个连接请求后,等待对方确认 |
ESTABLISHED | 代表传输连接建立,双方进入数据传送状态 |
FIN-WAIT-1 | 主动关闭,主机已改善关闭连接请求,挂靠对方确认 |
FIN-WAIT-2 | 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求 |
TIME-WAIT | 完成双向传输连接关闭,等待所有分组消失 |
CLOSE-WAIT | 被动关闭,收到对方发来的关闭连接请求,并已确认 |
LAST-ACK | 被支关闭,等待最后一个关闭传输连接确认,并等待所有分组消失 |
CLOSING | 双方同时尝试关闭传输连接,等待对方确认 |
/proc/sys/net/ipv4/tcp_max_orphans
指定内核能接管的孤儿连接数/proc/sys/net/ipv4/tcp_fin_timeout
指定孤儿连接在内核中的生存时间/proc/sys/net/ipv4/ip_local_port_range
动态端口使用范围/proc/sys/net/ipv4/tcp_max_syn_backlog
未完成连接队列大小,建议调整大小为1024以上/proc/sys/net/core/somaxconn
完成连接队列大小,建议调整大小为1024以上/proc/sys/net/ipv4/tcp_retries1
指定在底层IP接管之前TCP最少执行的重传次数,默认值是3/proc/sys/net/ipv4/tcp_retries2
指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)/proc/sys/net/ipv4/tcp_congestion_control
当前所使用的拥塞控制算法tcpdump 抓包工具
/proc/sys/net/ipv4/icmp_echo_ignore_all
关闭ICMP回应CentOS 6 网卡名称
网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
ARP表
arp -n
查看网卡驱动:
dmesg |grep –i eth
ethtool -i eth0
modprobe -r e1000
rmmod e1000
modprobe e1000
网络配置方式
/etc/sysconfig/network-scripts/ifcfg-<DEV>
#查看指定网卡状态 ifconfig [interface] #查看所有网卡状态 ifconfig -a #启用/禁用网卡 ifconfig IFACE [up|down] ifdown eth1 (禁用网络) ifup eth1 (启用网络) #设置网卡IP ifconfig IFACE IP/netmask [up]
路由管理命令
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
#目标:192.168.1.3 网关:172.16.0.1 route add -host 192.168.1.3 gw 172.16.0.1 dev eth0 #目标:192.168.0.0 网关:172.16.0.1 route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0 route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0 #默认路由,网关:172.16.0.1 route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1 route add default gw 172.16.0.1 #删除:route del route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] #目标:192.168.1.3 网关:172.16.0.1 route del -host 192.168.1.3 #目标:192.168.0.0 网关:172.16.0.1 route del -net 192.168.0.0 netmask 255.255.255.0
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e]] [--program|-p]
[OPTION] | 注释 |
---|---|
-t | tcp协议相关 |
-u | udp协议相关 |
-w | raw socket相关 |
-l | 处于监听状态 |
-a | 所有状态 |
-n | 以数字显示IP和端口 |
-e | 扩展格式 |
-p | 显示相关进程及PID |
配置Linux网络属性:ip 命令(显示、操作路由,设备,路由策略和隧道)
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT ={ link | address | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm | netns | l2tp | tcp_metrics | token | macsec } OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link }| -4 | -6 | -I | -D | -B | -0 | -l[oops] { maximum-addr-flush-attempts } | -br[ief] | -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] | -rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}
命令的使用
ip link - 网卡配置 set dev/IFACE up and down:激活或禁用指定接口(也可以ifup/ifdown) name NETNAME(修改网卡名) show [dev IFACE]:指定接口 ip addr - IP地址配置 add/del IP/mask dev DEVICE (添加/删除IP) [scope {global|link|host}] - 指明作用域(全局/仅链接/本机) [label LABEL] - 指明网卡别名 [broadcast ADDRESS]:指明广播地址 show - 查看网络 [dev DEVICE] [label PATTERN] [primary and secondary] flush - 刷新网卡,使用格式同show ip route - 路由配置 add/del NET/MASK via GATEWAY_IP [dev IFACE] [src SOURCE_IP] default - 默认路由 flush [dev IFACE] [via GATEWAY_IP] - 清空路由表 show/list - 显示路由
ss [OPTION]... [FILTER]
netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息
[OPTION] | 注释 |
---|---|
-t | tcp协议相关 |
-u | udp协议相关 |
-w | 裸套接字相关 |
-x | unix sock相关 |
-l | listen状态的连接 |
-a | 所有 |
-n | 数字格式 |
-p | 相关的程序及PID |
-e | 扩展的信息 |
-m | 内存用量 |
-o | 计时器信息 |
FILTER : [ state TCP-STATE ] [ EXPRESSION ]
# 显示本地打开的所有端口 ss -l # 显示每个进程具体打开的socket ss -pl # 显示所有tcp socket ss -t -a # 显示所有的UDP Socekt ss -u -a #显示所有已建立的ssh连接 ss -o state established '( dport = :ssh or sport = :ssh )' #显示所有已建立的HTTP连接 ss -o state established '( dport = :http or sport = :http )' #列出当前socket详细信息 ss -s
/etc/sysconfig/network-scripts/route-ens33
·注意:需service network restart生效 ·两种风格: (1) TARGET via GW 如:10.0.0.0/8 via 172.16.0.1` (2) 每三行定义一条路由 ADDRESS#=TARGET NETMASK#=mask GATEWAY#=GW
主机名配置文件:/etc/sysconfig/network
配置文件帮助文档:/usr/share/doc/initcripts-*/sysconfig.txt
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-ens33
网卡配置文件格式:
TYPE:接口类型;常见有的Ethernet, Bridge DEVICE:此配置文件应用到的设备 HWADDR:对应的设备的MAC地址 BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS6为“no” 网络配置文件 ONBOOT:在系统引导时是否激活此设备 UUID:设备的惟一标识 IPADDR:指明IP地址 PREFIX:子网掩码 NETMASK:子网掩码 GATEWAY: 默认网关 DNS1:第一个DNS服务器指向 DNS2:第二个DNS服务器指向 USERCTL:普通用户是否可控制此设备 PEERDNS:如果BOOTPROTO的值为“dhcp”,YES将允许dhcp server分配的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf
配置范例 | |
---|---|
动态配置 | 静态配置 |
DEVICE=eth# HWADDR=00:11:22:33:44:55 BOOTPROTO=dhcp ONBOOT=yes TYPE=Ethernet | DEVICE=eth# HWADDR=00:11:22:33:44:55 IPADDR=192.168.1.1 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 ONBOOT=yes TYPE=Ethernet |
DNS
本地地址解析:/etc/hosts
DNS域名解析:/etc/resolv.conf
域名服务切换配置文件:/etc/nsswitch.conf
相关命令:
dig -t A NAME
dig -x IP
host -t A NAME
host -t PTR IP
网卡别名
ifconfig eth0:0 192.168.0.1/24 up
ifconfig eth0:0 down
ip addr add 192.168.0.1/24 dev eth0 label eth0:0
ip addr del 192.168.0.1/24 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
为每个网卡别名生成配置文件(ifcfg-eth#:#)
#只能使用静态ip
DEVICE=eth0:0
IPADDR=192.168.0.1
NETMASK=255.255.255.0
ONPARENT=yes
网卡名称
基于BIOS支持启用biosdevname软件
内置网卡:em1,em2
pci卡:pYpX Y:slot ,X:port
(2) 名称组成格式
en: Ethernet 有线局域网
wl: wlan 无线局域网
ww: wwan无线广域网
名称类型:
o<index>: 集成设备的设备索引号
s<slot>: 扩展槽的索引号
x<MAC>: 基于MAC地址的命名
p<bus>s<slot>: enp2s1
传统命名方式(修改成eth0)
/etc/default/grub
grub2-mkconfig -o /etc/grub2.cfg
主机名:
设置主机名:hostnamectl set-hostname centos
显示主机名:hostname
其它工具:
图形工具:nm-connection-editor
字符工具:nmtui
命令行工具:nmcli
帮助文档:https://www.kernel.org/doc/Documentation/networking/bonding.txt
显示状态-bond0:/proc/net/bonding/bond0
配置文件-bond0:/etc/sysconfig/network-scripts/ifcfg-bond0
(/etc/sysconfig/network-scripts/ifcfg-bond0) DEVICE=bond0 BOOTPROTO=none BONDING_OPTS='miimon=100 mode=0 fail_over_mac=1' #miimon 系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路 (/etc/sysconfig/network-scripts/ifcfg-eth0) DEVICE=eth0 BOOTPROTO=none MASTER=bond0 SLAVE=yes USERCTL=no
nmcli [OPTIONS] OBJECT {COMMAND|help}
命令+选项+对象+命令
OBJECT | COMMNAD |
---|---|
connect | {show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export} [ARGUMENTS...] |
device | {status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp} [ARGUMENTS...] |
nmcli | OBJECT | COMMAND | 注释 | |
---|---|---|---|---|
connect 'con' | show | 显示所有连接 | ||
--active | 显示所有活动的连接 | |||
NAME | 显示网卡的配置 | |||
add | con-name ifname type autoconnect ipv4.addresses ipv4.gateway | 连接名 网卡名 类型{ethernet/bond/team} 是否自动连接(no/yes) ip地址{ip/mask [gw]} 网关 | ||
mod | CON_NAME | connection-autoconnect {no/yes} connection.id {CON_NAME} [±]ipv4.dns {IP} [±]ipv4.addresses {IP/MASK [GW]} ipv4.methon {manual/auto} ipv4.dns {IP} ipv4.dns-search {example.com} ipv4.ignore-auto-dns {no/yes} connection.interface-name {DEV} 802-3-ethernet.mac-address {MAC} | ||
down | NAME | 关闭网卡 | ||
up | NAME | 开启网卡 | ||
reload | 重新加载配置 | |||
delete(del) | NAME | 删除连接 | ||
device 'dev' | status | 显示设备状态 | ||
show | ens33 | 显示网络接口属性 | ||
disconnect 'dis' | DEV_NAME | 临时关闭网络 | ||
network 'net' | off / on | 关闭/开启所有网络接口 |
#创建新连接default,IP自动通过dhcp获取
nmcli con add ==con-name== default ==type== Ethernet ==ifname== eth0
#创建新连接static ,指定静态IP,不自动连接
nmcli con add ==con-name== static ==ifname== eth0 ==autoconnect== no =type== Ethernet ==ipv4.addresses== 172.25.X.10/24 ==ipv4.gateway== 172.25.X.254
#创建bond0 nmcli connection add type bond con-name mybond0 ifname bond0 mode active-backup #添加从属网卡 nmcli connection add type bond-slave ifname ens33 master bond0 nmcli connection add type bond-slave ifname ens37 master bond0 #启动从属接口 nmcli connection up bond-slave-eth0 nmcli connection up bond-slave-eth1 #启动bond0 nmcli connection up mybond0
METHOD:
#创建网络组
nmcli con add `type` team `con-name` Myteam `ifname` ens33 `config` '{'runner': {'name': 'METHOD'}}'
#创建port口
nmcli con add `type` team-slave`con-name` Myteam `ifname` INAME `master` TEAM
创建网络组示例
#创建team nmcli con add type team con-name Myteam0 ifname team0 config '{'runner':{'name':'activebackup'}}' ipv4.addresses 192.168.0.100/24 ipv4.method manual #创建port nmcli con add type team-slave con-name myteam0-eth0 ifname ens33 master team0 nmcli con add type team-slave con-name myteam0-eth1 ifname ens37 master team0 #启用 nmcli con up team0 nmcli con up team0-eth0 nmcli con up team0-eth1 #查看状态 teamdctl team0 state #测试 ping -I team0 192.168.0.1 #关闭 nmcli dev dis ens33 nmcli dev dis ens37
/etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0 DEVICETYPE=Team TEAM_CONFIG='{\'runner\':{\'name\':\'activebackup\'}}' BOOTPROTO=none IPADDR0=192.168.0.100 PREFIX0=24 NAME=Myteam0 ONBOOT=yes DEVICE=team0
/etc/sysconfig/network-scripts/ifcfg-team0-eth0
DEVICE=ens33
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth0
ONBOOT=yes
##删除网络组
nmcli con down team0
nmcli con del team0-eth0
nmcli con del team0-eth1
teamdctl team0 state
nmcli con show
#创建网桥 nmcli con add type bridge con-name mybr0 ifname br0 ipv4.addresses 192.168.0.100/24 ipv4.method manual #创建从属接口 nmcli con add type bridge-slave con-name mybr0-eth0 ifname ens33 master br0 #查看网桥 brctl show
#添加网桥 brctl addbr br0 #删除网桥 brctl delbr br0 #查看网桥 brctl show #查看MAC表 brctl showmacs br0 #添加网卡 brctl addif eth0 #删除网卡 brctl delif eth0
hostname
ping
ip route
traceroute
tracepath
mtr
nslookup
host
dig
联系客服