Linux系统中查看、操作网络相关属性有3种方式:命令、配置文件、交互式工具
1.命令 - ip、ss、nmcli
ip、ss是iproute2软件包里面的强大的网络属性管理工具,它能够替代一些传统的网络管理工具,例如ifcfg家族中的ifconfig、route、netstat,使用权限为超级用户。几乎所有的Linux发行版本都支持这些命令。
1.1 ip - show / manipulate routing, devices, policy routing and tunnels(显示/操作路由、设备、策略路由和隧道)
语法
ip [ OPTIONS ] OBJECT { COMMAND | help }
其中OBJECT和COMMAND均支持简写,并且不能同时使用多个OBJECT或COMMAND。
OBJECT
常用OBJECT:link、address、route、netns等(更多选项查看man手册)
OPTIONS
-s, -stats, -statistics 输出更为详尽的信息(如果这个选项出现两次或者多次,输出的信息将更为详尽)
-f -family 选项后面接协议种类
-family inet 简写:-4 (默认,ipv4)
-family inet6 简写:-6 (ipv6)
-family link 简写:-0 (不使用任何协议)
-o,-oneline 对每行记录都使用单行输出,回行用字符代替,多用于使用wc、grep等工具处理ip的输出。
-r,-resolve 查询域名解析系统,用获得的主机名代替主机IP地址。
1.1.1 ip link - network device configuration(网络设备配置)
- ip link show - 显示网络接口信息
# 显示所有网络接口信息
ip link show
# 显示所有网络接口的详细信息
ip -s link show
# 以单行形式显示所有网络接口的信息
ip -o link show
# 显示网络接口eth0的信息
ip link show eth0
# 仅显示启用状态的网络接口信息
ip link show up
- ip link set - 设置网络接口属性
ip link set [dev] ...(dev可以省略)
# 启用/禁用网卡eth0
ip link set eth0 up|down
# 修改网卡eth0名称
ip link set [name] eth0 新名称 (name可以省略)
# 开启/关闭组播(多播)功能
ip link set eth0 multicast no|off
# 设置最大传输单元mtu的大小(mtu默认大小为1500)
ip link set eth0 mtg 1500
# 将接口移动到指定的网络名称空间
ip link set eth0 netns
更多用法可以使用ip link help
查看这里不作描述。
1.1.2 ip address - protocol address management(协议地址管理)
ip address add - 添加网络接口地址
ip address del - 删除网络接口地址
ip address show - 显示网络接口地址
ip address flush - 清除网络接口地址
1.1.3 ip route - routing table management(路由表管理)
1.1.4 ip netns - manage network namespaces(管理网络名称空间)
# 列出所有的netns
ip netns list
# 创建指定的netns
ip netns add NAME
# 删除指定的netns
ip netns del NAME
# 在指定的netns中运行命令
ip netns exec NAME COMMAND
# 显示网络名称空间mynetns中的网络接口
ip netns exec mynetns ip link show
4.3 ip address - protocol address management
ip address show - 显示协议地址
ip address add - 添加协议地址
# 为接口eth0添加地址
ip addr add 192.168.100.101/24 dev eth0
# 为接口eth0添加地址,并指定接口别名
ip addr add 192.168.100.102/24 dev eth0 label eth0:1
# 为接口eth0添加地址,并指定作用域
ip addr add 192.168.100.103/24 dev eth0 scope global
- ip address del - 删除协议地址
# 删除接口eth0的地址
ip addr del 192.168.100.103/24 dev eth0
- ip address flush - 清除(多个)协议地址
# 清空接口eth0的所有地址
ip addr flush dev eth0
4.4 ip route - routing table management
- ip route show
- ip route add
- ip route delete
- ip route flush
# 添加路由(via:经由哪个下一跳;src:从本机哪个地址出)
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
# 示例
ip route add 192.168.1.0/24 via 10.0.0.1 dev eth0 src 10.0.20.100
# 添加默认路由
ip route add default via GW
# 修改路由
ip route change ...
# 修改或添加路由
ip route replace ...
# 删除路由
ip route del TYPE PRIFIX
# 示例
ip route delete 192.168.1.0/24
# 显示路由
ip route show TYPE PRIFIX
# 清空路由
ip route flush TYPE PRIFIX
# 示例
ip route flush 192.168.1.0/24
# 获取某个路由
ip route get TYPE PRIFIX
# 示例
ip route get 192.168.1.0/24
1.2 ss - another utility to investigate sockets
ss是另一个查看sockets信息的工具,可以取代netstat。
总览 SYNOPSIS
ss [options] [ FILTER ]
选项 OPTIONS
-t:TCP协议的相关连接
-u:UDP相关的连接
-w:raw socket相关的连接
-l:监听状态的连接
-a:所有状态的连接
-n:数字格式
-p:相关的程序及其PID
-e:扩展格式信息
-m:内存用量
-o:计时器信息
过滤器 FILTER
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
- **TCP-STATE:TCP常见状态 **
TCP FSM:
LISTEN:监听
ESTABLISEHD:建立的连接
FIN_WAIT_1:
FIN_WAIT_2:
SYN_SENT:
SYN_RECV:
CLOSED:
- **EXPRESSION **
# 目标端口
dport = :xx
# 源端口
sport = :xx
示例
# 显示所有源端口或目标端口为22的tcp连接
ss -tan '( dport = :22 or sport = :22 )'
# 显示所有状态为ESTABLISHED的tcp连接
ss -tan state ESTABLISHED
6. nmcli - 命令行网络管理工具
SYNOPSIS
nmcli [OPTIONS...] {device | agent | monitor} [COMMAND] [ARGUMENTS...]
** OPTIONS & COMAND**
# 选项可以简写,如:dev、conn
# device - show and manage network interfaces
nmcli device {status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp} [ARGUMENTS...][ARGUMENTS...]
# connection - start, stop, and manage network connections
nmcli connection {show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export} [ARGUMENTS...]
示例
# 查看网络设备
nuclei device show
# 查看网络设备状态
nmcli device status
# 为网卡eth0添加ip
nmcli conn modify eth0 +ipv4.address 192.168.1.135/24
# 从网卡eth0删除ip
nmcli conn modify eth0 -ipv4.address 192.168.1.135/24
B:配置文件
B1. IP/NETMASK/GW/DNS等属性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
# ifcfg-IFACE配置文件参数:
DEVICE:此配置文件对应的设备的名称;
ONBOOT:在系统引导过程中,是否激活此接口;
UUID:此设备的惟一标识;
IPV6INIT:是否初始化IPv6;
BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有dhcp、bootp、static、none;
TYPE:接口类型,常见的有Ethernet, Bridge;
DNS1:第一DNS服务器指向;
DNS2:备用DNS服务器指向;
DOMAIN:DNS搜索域;
IPADDR: IP地址;
NETMASK:子网掩码;CentOS 7支持使用PREFIX以长度方式指明子网掩码;
GATEWAY:默认网关;
USERCTL:是否允许普通用户控制此设备;
PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许;
HWADDR:设备的MAC地址;
NM_CONTROLLED:是否使用NetworkManager服务来控制接口;(CentOS 6)
B2. 非默认网关路由的相关配置文件:/etc/sysconfig/networkj-scripts/route-IFACE
# 支持两种配置方式,但不可混用;
(1) 每行一个路由条目:
TARGET via GW
如:20.0.0.0/24 via 192.168.1.0
(2) 每三行一个路由条目:
ADDRESS_No=TARGET
NETMASK_No=MASK
GATEWAY_No=NEXTHOP
如:
ADDRESS0=20.0.0.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.1.0
ADDRESS1=30.0.0.0
NETMASK1=255.255.255.0
GATEWAY1=192.168.1.0
B3. 通过网卡别名配置多个网络地址(IP),但不支持DHCP
ip address add...
可以很方便地为网卡配置多个IP,ifconfig命令及配置文件也可以通过别名的方式为配置多个IP。
示例1
ifconfig eth0:0 192.168.1.101/24
ifconfig eth0:1 192.168.1.102/24
示例2
# 以网卡别名为后缀作配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0:0
/etc/sysconfig/network-scripts/ifcfg-eth0:1
C:交互式工具
CentOS 7中,操作网络属性的交互式工具为nmtui.