Linux系统中查看、操作网络相关属性有3种方式:命令、配置文件、交互式工具
**命令执行的修改一般只是临时的,系统或网络服务重启后会失效;文件的修改是永久生效的。
A:命令 - ifconfig、route、netstat、ip、ss、nmcli
1. ifconfig - 显示/配置网络接口
1.1 显示已启用网卡
ifconfig
1.2 显示所有网卡(包括禁用的)
ifconfig -a
1.3 启用网卡
ifconfig eth0 up
# 还可以使用ifup命令
ifup eth0
1.4 禁用网卡
ifconfig eth0 down
# 还可以使用ifdown命令
ifdown eth0
1.5 配置IP地址
# 配置ip
ifconfig eth0 192.168.1.110
# 配置ip、子网掩码
ifconfig eth0 192.168.1.110 netmask 255.255.255.0
# 配置ip、子网掩码、广播地址
ifconfig eth0 192.168.1.110 netmask 255.255.255.0 broadcast 192.168.1.255
1.6 设置/删除IPv6地址
ifconfig eth0 add 33ffe:3240:800:1005::2/64
ifconfig eth0 del 33ffe:3240:800:1005::2/64
1.7 注意
ifconfig命令执行的修改只能临时有效,如果希望系统重启后依然生效,则需要修改配置文件/etc/sysconfig/network-scripts/ifcfg-eth0
,文件名中的eth0
为网络接口(即网卡)名称
TYPE="Ethernet"
#启用地址协议 --static静态协议 --bootp协议 --dhcp协议
BOOTPROTO="dhcp"
# IP地址
IPADDR=192.168.1.112
# 子网掩码
NETMASK=255.255.255.0
# 网关
GATEWAY=192.168.1.1
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="05b42805-b990-4322-a932-f9438d13c5fb"
DEVICE="eth0"
ONBOOT="yes"
2. route - 显示/操作IP路由表
Target:目的网络或目的主机;
gw:设置默认网关;
mss:设置TCP的最大区块长度(MSS),单位MB;
window:指定通过路由表的TCP连接的TCP窗口大小;
dev:路由记录所表示的网络接口
2.1 显示路由
route
route -n # 不执行DNS查找,直接显示ip
2.2 添加路由
route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If]
示例:
route add -net 10.0.0.0/8 gw 192.168.1.11 dev eth1
route add -net 0.0.0.0/0.0.0.0 gw 192.168.10.1
route add default gw 192.168.10.1
2.3 删除路由
oute del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
示例
route del -net 10.0.0.0/8 gw 192.168.10.1
route del default
3. netstat - 显示网络连接、路由表,接口状态,伪装连接,网络链路信息和组播成员组
3.1 显示网络连接
语法
netstat [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
选项
-t:TCP协议的相关连接,连接均有其状态;FSM(Finate State Machine)
-u:UDP相关的连接
-w:raw socket相关的连接
-l:处于监听状态的连接
-a:所有状态
-n:以数字格式显示IP和Port
-e:扩展格式
-p:显示相关的进程及PID
3.2 显示路由表
语法
netstat -rn
选项
-r:显示内核路由表
-n:以数字格式显示
3.3 显示接口统计信息
语法
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--verbose|-v] [--program|-p] [--numeric|-n]
选项
netstat -i
# 指定接口:
netstat -I<Iface>
常用组合
# 显示所有tcp连接
netstat -tan
# 显示所有udp连接
netstat -uan
# 显示处于监听状态的tcp连接
netstat -tnl
# 显示处于监听状态的udp连接
netstat -unl
# 显示所有处于监听状态的tcp、udp连接及相关进程
netstat -tunlp
4. ip - 显示或操纵Linux主机的路由、网络设备、策略路由和隧道
ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig、route等,使用权限为超级用户。几乎所有的Linux发行版本都支持该命令。
SYNOPSIS
ip [ OPTIONS ] OBJECT { COMMAND | help }
# OBJECT和COMMAND均支持简写
# 不能同时使用多个选项或命令
OBJECT := { link | address | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm | netns | l2tp | tcp_metrics | token }
OPTIONS := { -V[ersion] | -h[uman-readable] | -s[tatistics] | -d[etails] | -r[esolve] | -iec | -f[amily] { inet | inet6 | ipx | dnet | link } | -4 | -6 | -I | -D | -B | -0 | -l[oops] { maximum-addr-flush-attempts } | -o[neline] | -rc[vbuf] [size] | -t[imestamp] | -ts[hort] | -n[etns] name | -a[ll] }
OPTIONS
-s, -stats, -statistics 输出更为详尽的信息(如果这个选项出现两次或者多次,输出的信息将更为详尽)
-f -family 选项后面接协议种类,包括:inet、inet6或者link,强调使用的协议种类。 如果没有足够的信息告诉ip使用的协议种类,ip就会使用默认值inet或者any。link比较特殊,它表示不涉及任何网络协议。
-4 是 -family inet 的简写
-6 是 -family inet6 的简写
-0 是 -family link 的简写
-o,-oneline 对每行记录都使用单行输出,回行用字符代替。如果你需要使用wc、grep等工具处理ip的输出,会用到这个选项。
-r,-resolve 查询域名解析系统,用获得的主机名代替主机IP地址。
4.1 ip link - change device attributes
4.1.1 ip link set - change device attributes
ip link set [dev] ...(dev可以省略)
# 启用/禁用网卡eth0
ip link set [dev] eth0 up|down
# 修改网卡eth0名称
ip link set [dev] eth0 新名称
# 开启/关闭组播(多播)功能
ip link set [dev] eth0 multicast no|off
# 设置mtu大小(mtu默认大小为1500)
ip link set [dev] eth0 mtg 1500
# 将接口移动到指定的网络名称空间
ip link set [dev] eth0 netns
4.1.2 ip link show - display device attributes
# 显示网络接口属性,不指定接口时显示所有启用的
ip link show [eth0]
4.1.3 ip link help - 显示使用帮助
4.2 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
4.3 ip address - protocol address management
# 为接口eth0添加地址
ip addr add 192.168.1.111/24 dev eth0
[label NAME]:为额外添加的地址指明接口别名;
[broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到;
[scope SCOPE_VALUE]:global(全局)、link(接口)、host(本机);
# 删除接口eth0的地址
ip addr delete IFADDR dev eth0
# 显示接口的地址
ip addr list [IFACE]
# 清空接口eth0的所有地址(一个网络接口可以有多个地址)
ip addr flush dev eth0
4.4 ip route - routing table management
# 添加路由(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
5. 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.