Linux网络属性配置相关命令:
前言:
Linux属性配置可以分为两类。一类通过命令配置,另一类通过修改配置文件配置。
Linux属性配置的相关命令可以分为三大类:
一、ifcfg命令家族:①ifconfig,②route,③netstat,④hostname
①ifconfig命令:主要负责接口及地址查看和管理
ifconfig [INTERFACE]
#ifconfig -a:显示所有接口,包括inactive状态的接口。(包括激活和未激活的接口):
如图所示,-a选项将会显示所有接口,包括没有激活的接口,如果不使用-a只会显示已经激活的接口,
ifconfig INTERFACE [aftype] options | address ...(用于完成地址等相关配置的命令)
# ifconfig INTERFACE IP/MASK [up|down]
ifconfig INTERFACE IP netmask NETMASK配置接口的地址、掩码并能激活或 者关闭该接口
如图所示,通过该命令设置eth1接口的ip地址和子网掩码(255.255.255.0)并激活之,也可以使用
~]# ifconfig eth1 192.168.61.1 netmask 255.255.255.0 up命令行同样可以修改,netmask不能使用长度表示,只能使用完整格式。
options:
[-]promisc:混杂模式
(注:立 即送往内核中的TCP/IP协议栈,并生效)
②route命令:路由查看及管理
路由条目类型:
主机路由:目标地址为单个IP
网络路由:目标地址为IP网络
默认路由:目标为任意网路, 0.0.0.0/0.0.0.0
查看路由:
route -n(不使用-n选项表示反解地址为主机名,增加-n选项只显示数字 格式,不进行反解,增加效率) 如图:
Destination表示目标网络,Geteway表示下一跳网关地址(0.0.0.0表示无需网关,目的地和主机在同一个网络中),Genmask表示目标掩码,Flags表示路由条目的标志,Metric,度量值。Iface:经过本地的接口。
添加路由条目:
route add [-net|-host] target [netmask Nm] [gw GW] [[dev] IF]
添加的下一跳地址要和本地的某块网卡在同一网络中,dev可以省略,系统会自动判断接口如图:
添加默认网关:
route add -net 0.0.0.0/0.0.0.0 gw 192.168.61.1
删除路由条目:
route del [-net][-host] target [gw GW][netmask NETMASK][[DEV]IF]
删除目标地址为10.0.0.0掩码为255.0.0.0的路由条目:
③netstat命令:
显示路由:netstat -rn(于route -n效果相似,默认字段有所不同)
-r:显示内核路由表
-n:显示数字格式
显示网络连接:
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
常用组合:
-tan :显示所有状态的tcp协议链接,并用数字格式显示ip和port
-uan:处于所有状态的udp协议连接,并用数字格式显示ip和port,也可使用-tuan显示所有状态的tcp和udp链接。
-tnl:显示处于监听状态的tcp协议的连接,并用数字格式显示ip和port
-unl:显示处于监听状态的udp协议的连接,并用数子格式显示其ip和port
-tunlp:显示处于监听状态的tcp协议和udp协议并显示相关的进程及PID(进程号),并用数字格式显示其ip和port
传输层协议:
(tcp:面向连接协议,通信开始之前,要建立一个虚链路,通信完成之后要拆除连接)
(udp:无连接协议,直接发送数据报文)
显示接口的统计数据 :
netstat {--interfaces|-I|-i}[iface][--all|-a][--extend|-e][--verbose|-v][--program|-p][--numeric|-n]
显示所有接口的相关数据:netstat -i, 如图:
显示指定接口的相关数据:netstat -I<IFACE>(-I和接口名称之间不能有空格),
ifup/down命令:启动或禁用接口。
if{up|down} dev
(注:通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置。)
④hostname命令:配置主机名称。
hostname:查看主机名
hostname HOSTNAME:配置主机名
(注:使用此命令只对当前系统有效,重启后无效)
可以更改配置文件:/etc/sysconfig/network,不会立即生效,重启后有效,永久有效。
二:iproute命令家族:
① ip命令:ip [OPTIONS]OBJECT{COMMAND|HELP}
OBJECT:= { link |addr | route }
(注意:OBJECT可简写,各OBJECT的子命令也可简写)
ip OBJECT:
ip link: network device configuration(网络接口配置信息)
ip link set - change device attributes(改变网络属性)
dev NAME (default):指明要管理的设备,dev关键字可省略;
up和down:启用和禁用
启用eth1接口如图:
multicast on或multicast off:启用或禁用多播功能;
启用eth1接口多播功能,如图:
name NAME:重命名接口
重命名eth1接口名称为tzzz(改动之前要先禁用该接口)如图:
mtu NUMBER:设置MTU的大小,默认为1500;
ip link show- display device attributes(显示接口属性)
如图 :
ip link help - 显示简要使用帮助;
如图:
ip address - protocol address management.(ip管理)
ip address show - look at protocol addresses(查看ip地址)
ip address show [IFACE]:显示接口的地址;
ip address add - add new protocol address:添加新的ip地址
ip address add IFADDR dev IFACE
[label NAME]:为额外添加的地址指明接口别名;(不添加别名, 使用ifconfig命令无法查出)
[broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计 算得到;
ip address delete - delete protocol address(删除ip地址)
ip address delete IFADDR dev IFACE
ip address flush - flush protocol addresses(删除接口的所有ip地址)
ip address flush dev IFACE
ip route - routing table management(路由表管理)
ip route show - list routes(显示路由条目)
TYPE PRIFIX
ip route add - add new route(增加路由条目)
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
注:当接口有多个ip地址时可使用src指定ip来源,否则默认为主ip
ip route delete - delete route
ip route del TYPE PRIFIX
删除192.168.0.0的路由条目
ip route flush - flush routing tables
ip route flush(删除所有路由条目)
ip route get - get a single route(显示指定路由条目的详细信息)
ip route get TYPE PRIFIX
②ss命令:(类似于netstat命令)
ss [options] [ FILTER ]
选项:
-t:TCP协议的相关连接
-u:UDP相关的连接
-w:raw socket相关的连接
-l:监听状态的连接
-a: 所有状态的连接
-n:数字格式
-p:相关的程序及其PID
-e:扩展格式信息
-m:内存用量
-o:计时器信息
FLTER :(过滤器)= [ state TCP-STATE ] [ EXPRESSION ]只看某种状态的连接
TCP的常见状态(TCP FSM):
LISTEN
ESTABLISEHD
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
EXPRESSION:
dport = (目标端口)
sport = (源端口)
(注意空格的使用)
以上提到的修改网络属性的相关命令都是在当前系统上有效,如果想要永久有效需要修改配置文件来配置网络属性,修改配置文件将会永久有效。
通过修改配置文件来配置网络属性:
配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE(IP/NETMASK/GW/DNS等属性的配置文件)
IFACE:接口名称
如图,每个接口都有相应的配置文件
通过大量参数来定义借口的属性:
其可通过vim等文本编辑器直接修改配置文件,也可使用专用的命令进行修改,CentOS6上使用setup命令,CentOS7上使用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(CentOS7)
注:配置文件修改之 后,如果要生效,需要重启网络服务。
CentOS6: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
上文提到为接口添加多个ip地址的方法:ip address add命令和修改配置文件之外
使用ifconfig命令也可以添加多个ip地址,给接口添加多个标签就能添加多个ip地址:
(1) ifconfig IFACE_LABEL IPADDR/NETMASK
IFACE_LABEL :例: eth0:#
(注:该方式只在当前系统上有效重启后无效)
(2)为别名添加配置文件(重启后也有效)
DEVICE=IFACE_LABEL
BOOTPROTO:不能为dhcp,网上别名不支持动态获取地址;为static,none,需要使 用IPADDR定义ip
总结:在网络运维中要经常使用到网络属性管理工具,所以熟练掌握很有必要,其中ifconfig命令历史最为悠久,功能也非常好用,但会被ss命令所替代,ss命令几乎涉及到了ifconfig的所有命令,查看所有接口的信息可以使用ss命令,管理ip地址使用ip address命令,管理路由的属性可以使用route命令。