本文续网络基础与Linux网络配置之一 ifconfig、route、netstat命令详解
ip命令
作用
ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig、route等,使用权限为超级用户。几乎所有的Linux发行版本都支持该命令。
格式
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
注:OBJECT可简写,各OBJECT的子命令也可简写
OPTIONS:
-V:显示指令版本信息;
-s:输出更详细的信息;
-f:强制使用指定的协议族;
-4:指定使用的网络层协议是IPv4协议;
-6:指定使用的网络层协议是IPv6协议;
-0:输出信息每条记录输出一行,即使内容较多也不换行显示;
-r:显示主机时,不使用IP地址,而使用主机的域名。
ip link
ip link set - change device attributes 更改设备属性
dev NAME (default):指明要管理的设备,dev关键字可省略;
up和down:
multicast on或multicast off:启用或禁用多播功能;
name NAME:重命名接口
mtu NUMBER:设置MTU的大小,默认为1500;
netns PID:ns为namespace,用于将接口移动到指定的网络名称空间;
ip link show - display device attributes
ip link help - 显示简要使用帮助;
用ip命令显示网络设备的运行状态 缩写:show、list、lst、sh、ls、l
[root@bogon ~]# ip link show [root@bogon ~]# ip -s link show #显示更详细信息
设置eth1网卡为启用状态
[root@bogon ~]# ip link set dev eth1 up
改变设备传输队列长度
[root@bogon ~]# ip link set dev eth0 txqueuelen 100
改变网络设备MTU(最大传输单元)的值。
[root@bogon ~]# ip link set dev eth0 mtu 1500
ip netns:manage network namespaces.
ip netns list:列出所有的netns
ip netns add NAME:创建指定的netns
ip netns del NAME:删除指定的netns
ip netns exec NAME COMMAND:在指定的netns中运行命令
ip addr
ip address add--添加一个新的协议地址. 缩写:add、a
[root@bogon ~]# ip addr add 192.168.1.10/24 dev eth1
ip address delete--删除一个协议地址. 缩写:delete、del、d
[root@bogon ~]# ip addr del 192.168.1.10/24 dev eth1
ip address show--显示协议地址. 缩写:show、list、lst、sh、ls、l
[root@bogon ~]# ip addr list
ip address flush--清除协议地址. 缩写:flush、f
[root@bogon ~]# ip addr flush dev eth1
ip route
ip route add -- 添加新路由
ip route change -- 修改路由
ip route replace -- 替换已有的路由
缩写:add、a;change、chg;replace、repl
设置到网络192.168.2.0/24的路由经过网关192.168.1.1
[root@bogon ~]# ip route add 192.168.2.0/24 via 192.168.1.1
修改到网络192.168.2.0/24的直接路由,使其经过设备eth1
[root@bogon ~]# ip route change 192.168.2.0/24 dev eth1
ip route delete-- 删除路由
缩写:delete、del、d
删除上一节命令加入的路由
[root@bogon ~]# ip route del 192.168.2.0/24
ip route show -- 列出路由
缩写:show、list、sh、ls、l
[root@bogon ~]# ip route list
ip route flush -- 擦除路由表
ip address flush - flush protocol addresses
ip addr flush dev IFACE
[root@bogon ~]# ip addr flush dev eth1
ip route get -- 获得单个路由 .缩写:get、g
[root@bogon ~]# ip route get 192.168.2.0 192.168.2.0 via 192.168.1.1 dev eth0 src 192.168.1.105 cache mtu 1500 advmss 1460 hoplimit 64
ss命令
ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
当 服 务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会 有 切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。
天 下 武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核 中 第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。(但仍 然 比 netstat要快。)
1.命令格式:
ss [选项]
ss [选项] [过滤]
ss [options] [ FILTER ]
选项:
-t:TCP协议的相关连接
-u:UDP相关的连接
-w:raw socket相关的连接
-l:监听状态的连接
-a:所有状态的连接
-n:数字格式
-p:相关的程序及其PID
-e:扩展格式信息
-m:内存用量
-o:计时器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP的常见状态:
TCP FSM:
LISTEN:监听
ESTABLISEHD:建立的连接
FIN_WAIT_1:
FIN_WAIT_2:
SYN_SENT:
SYN_RECV:
CLOSED:
EXPRESSION:
dport =
sport =
示例:‘( dport = :22 or sport = :22)‘
[root@bogon ~]# ss -tan ‘(dport = :22 or sport = :22)‘
查看所有tcp相关的建立的连接
[root@bogon ~]# ss -tan state ESTABLISHED
常用组合选项
-tan, -uan, -tnl, -unl, -tunlp ...
网络相关的配置文件:
配置文件:
IP/NETMASK/GW/DNS等属性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
IFACE:接口名称;
路由的相关配置文件:/etc/sysconfig/networkj-scripts/route-IFACE
配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通过大量参数来定义接口的属性;其可通过vim等文本编辑器直接修改,也可以使用专用的命令的进行修改(CentOS 6图形窗口:system-config-network (setup),CentOS 7图形窗口: nmtui)
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服务来控制接口;
网络服务:
network
NetworkManager
管理网络服务:
CentOS 6: service SERVICE {start|stop|restart|status}
CentOS 7:systemctl {start|stop|restart|status} SERVICE[.service]
配置文件修改之后,如果要生效,需要重启网络服务;
CentOS 6:# service network restart
CentOS 7:# systemctl restart network.service
用到非默认网关路由:/etc/sysconfig/network-scripts/route-IFACE
支持两种配置方式,但不可混用;
(1) 每行一个路由条目:
TARGET via GW
(2) 每三行一个路由条目:
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP
给接口配置多个地址:
ip addr之外,ifconfig或配置文件都可以;
(1) ifconfig IFACE_LABEL IPADDR/NETMASK
IFACE_LABEL: eth0:0, eth0:1, ...
(2) 为别名添加配置文件;
DEVICE=IFACE_LABEL
BOOTPROTO:网卡别名不支持动态获取地址;
static, none
本文出自 “涛声依旧” 博客,请务必保留此出处http://zhaoyongtao.blog.51cto.com/10955972/1757218
原文地址:http://zhaoyongtao.blog.51cto.com/10955972/1757218