ifconfig :查询、设置网卡的相关参数;
ifup/ifdown:这两个文件是script,启动、关闭网络接口;
route :查询、设定路由表 (route table)
ip:复合式的指令, 可以直接修改上述提到的功能;
网卡设置
Linux系统中,不同的Linux发行版的网络管理服务不同,常见的有systemd-networkd(Systemd发行版)
、NetworkManager(Gnome桌面环境)
、Netplan(Ubuntu17.10+)
。
ifconfig
命令修改只会临时生效,永久生效需要修改配置文件
- 启动、关闭网卡
ifconfig {interface} {up|down}
下面命令是启动eth0网卡
|
|
- 设置IP地址
不加其他参数时,系統会按照
IP
所在的class范围
,自动计算netmask
,network
,broadcast
等参数
|
|
或者
|
|
route
-n
显示具体IP与PORT
路由表说明:
排序从上到下依次是:小网段 -> 大网段 -> 默认路由。路由规则越靠前,优先级越高。
Destination=0.0.0.0
表示默认路由。即目标IP没有具体路由规则时,数据包走此路由进行转发。
Gateway=0.0.0.0
表示路由直接由本地送达。即通过LAN的MAC直接通讯。如果是具体IP,则往往是具备三层路由能力的设备。
Flag标识说明
- U: 路由是Up的
- H: 目标是Host,而非一个网段
- G: 通过外部设备路由数据包
- R: 使用动态路由时,恢复路由信息的标识
- D: 由服务或Port功能设置为动态路由
- M: 路由被修改
- !: 路由不被接受(拒绝不安全网段的数据包)
命令举例
增加
|
|
删除
|
|
|
|
ip
ip命令整合了ifonfig和route命令的功能。查看、操作Route、NetworkDevice、interface、tunnels。
命令格式: ip <-options>
, 例如:ip -s -s -j link
参数说明
-d
: 输出更详细信息。接口名称、状态、能力;MAC-s
: 输出更多信息,-s -s
信息增多,增加的信息通常为统计数据、时间值。-br
: 以表格形式打印基本信息,以提高可读性。目前只有ip -br addr
和ip -br link
命令支持该选项。-j
: json格式输出。-p
: json优雅输出,仅当-j
参数存在时,有效。
对象-网络设备:link
- 查看所有网卡
1
ip link
对象-网络地址:addr / address
排错命令
ping
- ping 探测主机192.168.1.254是否有回应。 探测仅等待一秒钟,也仅探测一次。
|
|
-c
执行ping的次数;-W
超时时间,单位秒
- ping命令探测整个网络传输的查询最大MTU值
封包大小=MTU-28,因为IP头20字节,icmp包头8字节;
-M do
参数指定不允许路由器、交换机进行包重组。
|
|
-s
ICMP包的大小,默认56字节;-M
主要检查MTU值( do 不让重新拆包、打包 dont 允许拆包打包)
traceroute
主机之间节点分析,用来判断网络环境是内部问题还是外部问题。
原理:会针对目的IP的所有 中间node 进行 UDP 的超时等待
netstat
本地网络连接、路由表、接口统计信息、端口监听。(已过时)
推荐使用ss
替换netstat
;ip route
替换netstat -r
;ip -s link
替换netstat -i
;ip maddr
替换netstat -g
;
参数说明
路由相关:-r
列出路由表,等同route
命令;
端口相关:-a
all; -[t/u]
TCP/UDP; -l
: listen; -p
PID; -n
显示IP/Port而非主机名;
- 查看主机
所有连接
状态
|
|
- 查看所有
监听状态
连接
|
|
ss
socket Statistics: 套接字统计数据
参数说明
路由相关:-r
列出路由表,等同route
命令;-n
显示IP/Port而非主机名
端口相关:-a
all; -[t/u]
TCP/UDP; -l
: listen; -p
PID;
- 所有TCP套接字
1
ss -t -a
Telnet
DNS域名解析
host
|
|
第二个参数为dns-server地址,可省略(使用/etc/resolv.conf)。
nslookup
- 根据域名找主机 2. 根据主机找IP
dig
抓包工具
|
|
抓包格式
网络问题排查
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|
步骤 | 网卡是否正常 | IP设置是否正确 | LAN网络是否正常 | 路由信息是否正确 | 查看DNS | 查看网络节点 | 查看服务状态 | Selinux,防火墙 |
工具 | lspci、dmesg | ifconfig | ping | route -n | dig、host | traceroute | netstat | selinux,iptables |
解决方案 | 重装驱动/更换网卡 | 修改配置,重启network服务 | 交换机、防火墙设置 | 修改配置,重启network服务 | 修改配置 | 等待恢复 | 排查问题,重启服务 |
iptables
规则存在顺序。 依次检查,匹配即停(LOG策略除外),没有匹配走默认。
4表5链
filter: 本机进出
- INPUT: 入本机的数据包
- OUTPUT: 出本机的数据包
- FORWARD: 转发数据包
nat: 源IP:Port\目的IP:Port之间转换
- PREROUTING: 路由判断前执行的规则(DNAT-目的NAT/REDIRECT-重定向)
- POSTROUTING: 路由判断后执行的规则(SNAT-源NAT/MASQUERADE-广播)
- OUTPUT: 出本机的数据包
mangle: 与特殊的封包的路由标识有关
- PREROUTING、PREROUTING、OUTPUT、INPUT、FORWARD
raw: 确定是否对数据包进行状态追踪
- PREROUTING
- OUTPUT
由于 mangle 很少被使用,下图为去除mangle后的链表相关性
规则表之间顺序: raw > mangle > nat > filter
入站规则链顺序:PREROUTING > INPUT
出站规则链顺序:OUTPUT > POSTROUTING
转发规则链顺序:PREROUTING > FORWARD > POSTROUTING
路径A: 数据包进入主机,路由判断是进入主机的数据包后,主要通过fileter[INPUT]
链管控。
路径B: 数据包经主机转发给其他主机,主要经过的链是 filter[FORWARD]
和nat[POSTROUTING,PREROUTING]
。
路径C: 响应请求或者由主机主动发出的包。经路由判断后,通过filter[OUTPUT]
和nat[OUTPUT,POSTROUTING]
发出。
命令举例
- 查看规则
|
|
-t nat
指定表,如果不传则为默认的filter表;-L
列出目前的table规则;-n
不进行IP与hostname的反查,速度快;-v
显示详细信息
Ubuntu22.04,CentOS8之后,使用nf_tables作为新的内核网络过框架.具体命令参考
|
|
iptables-legacy
: ==iptables,背后是iptables框架nft
: 背后是nf_tables框架iptables-nft
: 使用方法与iptables兼容,背后框架是nf_tablesiptables
: 软连接,可在iptables-legacy
与iptables-nft
之间切换
nftables
nftables是一个新式的数据包过滤框架,旨在替代现用的iptables、ip6tables、arptables和ebtables的新的包过滤框架。
nftables旨在解决现有{ip/ip6}tables工具存在的诸多限制。相对于旧的iptables,nftables最引人注目的功能包括:改进性能、支持查询表、事务型规则更新、所有规则自动应用等等