Linux 下网络相关的命令
🔗
net-tools
ifconfig
1 | enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 |
- enp2s0: 网络设备号
- flags=4163<UP,BROADCAST,RUNNING,MULTICAST>: 网络设备状态标识
- mtu 1500: mtu
- inet 192.168.8.23 netmask 255.255.255.0 broadcast 192.168.8.255: IPv4 协议
- inet6 fe80::794c:57e0:a7ca:518e: IPv6 协议
- ether 50:9a:4c:17:e9:da
- TX: 发送/上行
- RX: 接收/下行
- packets 4412700: 包总数量
- bytes 2441347518 (2.2 GiB): 流量大小
- errors 0: 错误包数量
- dropped 0: 丢包数量
- overruns 0: 超时包数量
- collisions 0: 冲突包数量
- frame 0: 帧数量
- txqueuelen 1000 (Ethernet): 存储传输数据缓存的大小
- prefixlen 64
- scopeid 0x20
route
1 | Kernel IP routing table |
- Genmask: 子网掩码
- Destination: 目的地
Destination/Genmask 组成局域网
- default = 0.0.0.0/0.0.0.0
- Gateway: 网关
- Flags: 网络标识
- U (route is up): 路由启动状态
- H (target is a host): 目标是主机
- G (use gateway): 需要使用网关来传输
- R (reinstate route for dynamic routing):
- D (dynamically installed by daemon or redirect):
- M (modified from routing daemon or redirect):
- ! (reject route): 拒绝/黑名单
- Metric: 目标的距离
- Ref:
- Use: 路线查找计数
- Iface: 接收数据的网络接口
网络出口网卡
iproute2
ip link
配置网络设备参数
OSI 七层协议中, 二层相关信息
eg. MTU, MAC, 开关…
1 | ip link show |
ip addr
配置网络相关信息
OSI 七层协议中, 三层相关信息
eg. 网关, 子网掩码..
1 | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 |
lo: 网卡label.
<BROADCAST,MULTICAST,UP,LOWER_UP>: 网络设备状态标识
- BROADCAST, MULTICAST: 可以发送广播, 可以发送多播包
- LOOPBACK: 本地环回
- UP: 网络设备状态
- LOWER_UP: 已连线
- BROADCAST, MULTICAST: 可以发送广播, 可以发送多播包
mtu 65536: 最大传输单元
qdisc pfifo_fast: 排队规则.
- noqueue
- pfifo_fast
group default: 所在组.
inet 127.0.0.1/8: IPv4 地址及子网掩码
inet6 fe80::794c:57e0:a7ca:518e/64: IPv6 地址及子网掩码
brd ff:ff:ff:ff:ff:ff: 广播地址
scope global: 作用域.
- global: 允许所有来源
- site: 仅IPv6, 允许仅本机连接
- link: 仅允许自我连接
- host: 仅允许本主机内部连接
noprefixroute enp2s0
preferred_lft forever:
valid_lft forever: 有效期限
qlen 1000
ip route
路由相关设置
1 | ip route |
- 192.168.8.0/24: 网络
- dev enp2s0: 网络设备
- proto kernel: 路由协议 [redirect, kernel, boot, static, ra]
- scope link: 作用域
网络侦查
ping
网络状态
1 | ➜ ~ ping www.baidu.com -c 5 |
- 64 bytes: ICMP封包大小
- icmp_seq=3: 侦测序号
- ttl=54: 默认255, 每经过一个含MAC地址时-1
- time=20.5 ms: 耗时
traceroute
网路状态
1 | ➜ ~ traceroute www.baidu.com |
- 每个序号都是同一层进行三次连接的耗时
* * *
: 可能是防火墙问题或路由问题
netstat
查看本机的网络连接
1 | # 目前所有的网络线路状态 |
- Proto: 网络协议
- Recv-Q: 未使用字节
- Send-Q: 没有确认的字节
- Local Address: 本地地址+端口
- Foreign Address: 目标地址+端口
- stat: 状态
- ESTABLISED: 已连线
- SYN_SENT: 发送连线确认包
- SYN_RECV: 接收连线确认包
- FIN_WAIT1: 正在断线中-第一步
- FIN_WAIT2: 正在断线中(等待对方确认)-第二步
- TIME_WAIT: 已断线(等待关闭)-第三步
- LISTEN: 正在监听
- PID/Program name: 进程和PID
host, nslookup, dig
域名转IP
host
1 | ➜ ~ host www.baidu.com 114.114.114.114 |
nslookup
1 | ➜ ~ nslookup www.google.com |
dig
1 | ➜ ~ dig www.google.com |
Hook
- tcpdump
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30➜ ~ sudo tcpdump -i enp2s0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:03:36.920320 IP 192.168.8.23.32842 > 106.37.75.114.80: Flags [.], ack 1334, win 1134, options [nop,nop,TS val 2465645746 ecr 4170196622], length 0
16:07:25.848706 IP 192.168.8.23.45512 > 203.107.41.32.9015: Flags [P.], seq 858:897, ack 771, win 37440, length 39
15:23:53.248962 IP6 fe80::485c:9c0f:61ce:2886 > ff02::1:ffb6:3f84: ICMP6, neighbor solicitation, who has fe80::32e1:71ff:feb6:3f84, length 32
15:23:53.249199 IP 192.168.8.23.55804 > FJ-DNS.xm.fj.cn.domain: 41679+ PTR? 4.8.f.3.6.b.f.f.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.f.f.ip6.arpa. (90)
15:23:53.251749 IP FJ-DNS.xm.fj.cn.domain > 192.168.8.23.55804: 41679 NXDomain* 0/1/0 (154)
15:23:53.251809 IP 192.168.8.23.57994 > FJ-DNS.xm.fj.cn.domain: 8140+ PTR? 6.8.8.2.e.c.1.6.f.0.c.9.c.5.8.4.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. (90)
15:23:53.254241 ARP, Request who-has 192.168.8.250 tell 192.168.8.134, length 46
15:23:53.255081 IP FJ-DNS.xm.fj.cn.domain > 192.168.8.23.57994: 8140 NXDomain* 0/1/0 (139)
# 指令
tcpdump [-AennqX] [-i 网络接口] [-w 导出文件] [-c 次数] \
[-r 导入文件] [过滤规则]
-A: 显示为ASCII码
-e: OSI 二层显示MAC封包
-nn: 解析地址(显示为ip和端口)
-q: 打印简短的信息
-X: 显示16进制及ASCII码
-i: 需要监听的网络接口
-w: 写出存储文件
-r: 读取存储文件
-c: 监听数量
过滤规则: 可以使用 and 和 or 进行组合
- 'host foo', 'host 127.0.0.1' :监听特定的主机
- 'net 192.168' :监听特定的网段
- 'src host 127.0.0.1' 'dst net 192.168': 监听特定的来源(src)或目的地(dst)
- 'tcp port 21':监听特定的协议,如 tcp, udp, arp, ether.. - 15:23:53.248962: 时:分:秒.毫秒
- IP: 使用的协议
- 192.168.8.23.32842 >: 发起端
- 106.37.75.114.80: 接收端
- Flags [.]: 传输标识
- [.P]: 推送
PUSH
- [.P]: 推送
- ack 1334: ack 号
- seq 858:897: 传输资料 858~897 byte
iptables
访问控制
tc
流量控制
mtr
显示网络路径的状况