Linux-网络管理

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.

你可能感兴趣的:(Linux-网络管理)