我们对网络属性进行配置,可以通过几个命令组进行管理,可以帮助我们实现对linux网络,路由的配置管理。
一.首先是ifcfg命令家族(ifconfig,route,netstat)
1.ifconfig:接口及地址查看和管理
ifconfig [INTERFACE]
1) # ifconfig -a:显示所有接口,包括inactive状态的接口;如图:
2) #ifconfig可以指定某个网卡的激活或者关闭
# ifconfig IFACE IP/MASK [up|down]
如图,已经关闭eno33554984
3)#ifconfig可以指定某网卡的ip及子网掩码,直接设置IP
格式:ifconfig IFACE IP netmask NETMASK
示例:
或者使用[root@localhost ~]# ifconfig eno33554984 192.168.41.3/24 up
同样可以达到目的。
上面的命令时因为立即送往内核中的TCP/IP协议栈,所以会立即生效,但是不会永久生效,重启即消失。
4)启用选项,可以指定某网卡启用某种模式
例如指定eno33554984启用混杂模式promisc
关闭此模式:[root@localhost ~]# ifconfig eno33554984 -promisc
5)管理IPv6地址格式:
添加:add addr/prefixlen
删除:del addr/prefixlen
2.route命令:路由查看及管理命令:
路由的类型有三种:
主机路由:目标地址为单个IP;
网络路由:目标地址为IP网络;
默认路由:目标为任意网络,0.0.0.0/0.0.0.0
1)查看路由
[root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 eno16777736 172.16.0.0 0.0.0.0 255.255.0.0 U 100 0 0 eno16777736 192.168.41.0 0.0.0.0 255.255.255.0 U 0 0 0 eno33554984
2)添加路由
格式:route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If]
#给主机添加一个网络路由,示例:
给本机eno33554984这个网卡指定一个到10.0.0.0/8的路由,网关为192.168.41
[root@localhost ~]# route add -net 10.0.0.0/8 gw 192.168.41.1 dev eno33554984 [root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 eno16777736 10.0.0.0 192.168.41.1 255.0.0.0 UG 0 0 0 eno33554984 172.16.0.0 0.0.0.0 255.255.0.0 U 100 0 0 eno16777736 192.168.41.0 0.0.0.0 255.255.255.0 U 0 0 0 eno33554984
#给主机添加一个默认网关,示例
route add -net 0.0.0.0/0.0.0.0 gw 192.168.10.1
或者:route add default gw 192.168.10.1
#给主机添加一个主机路由 只需要将-net 改成-host即可。
3)删除路由
格式:route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
#给主机删除一个路由
[root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 eno16777736 10.0.0.0 192.168.41.1 255.0.0.0 UG 0 0 0 eno33554984 172.16.0.0 0.0.0.0 255.255.0.0 U 100 0 0 eno16777736 192.168.41.0 0.0.0.0 255.255.255.0 U 0 0 0 eno33554984 192.168.124.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554984 [root@localhost ~]# route del -net 10.0.0.0/8 gw 192.168.41.1 [root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.0.1 0.0.0.0 UG 100 0 0 eno16777736 172.16.0.0 0.0.0.0 255.255.0.0 U 100 0 0 eno16777736 192.168.41.0 0.0.0.0 255.255.255.0 U 0 0 0 eno33554984 192.168.124.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554984
#删除默认路由:route del default
3.netstat命令:显示网络连接,路由表,接口统计数据,伪装连接及多播成员关系
主要功能:
1)显示路由:netstat -rn
-r:显示内核路由表
-n:数字格式
示例:
[root@localhost ~]# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eno16777736 172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eno16777736 192.168.41.0 0.0.0.0 255.255.255.0 U 0 0 0 eno33554984 192.168.124.0 0.0.0.0 255.255.255.0 U 0 0 0 eno33554984 192.168.124.0 0.0.0.0 255.255.255.0 U 0 0 0 eno33554984
2)显示网络连接
格式: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所有状态的数字格式的连接状况
[root@localhost ~]# netstat -tan Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN tcp 0 52 172.16.249.228:22 172.16.41.1:38249 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN tcp6 0 0 ::1:6010 :::* LISTEN
#-uan 显示udp所有状态的数字格式的连接状况
[root@localhost ~]# netstat -uan Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:9213 0.0.0.0:* udp 0 0 0.0.0.0:55841 0.0.0.0:* udp 0 0 0.0.0.0:68 0.0.0.0:* udp 0 0 0.0.0.0:68 0.0.0.0:* udp 0 0 0.0.0.0:123 0.0.0.0:* udp 0 0 127.0.0.1:323 0.0.0.0:* udp6 0 0 :::38403 :::* udp6 0 0 :::123 :::* udp6 0 0 ::1:323 :::* udp6 0 0 :::57286 :::*
#-tunlp 显示tcp及UDP处于监听状态的以数字格式连接的监听状态进程的状况
[root@localhost ~]# netstat -tulpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1012/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1822/master tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 2263/sshd: root@pts tcp6 0 0 :::22 :::* LISTEN 1012/sshd tcp6 0 0 ::1:25 :::* LISTEN 1822/master tcp6 0 0 ::1:6010 :::* LISTEN 2263/sshd: root@pts udp 0 0 0.0.0.0:9213 0.0.0.0:* 840/dhclient udp 0 0 0.0.0.0:55841 0.0.0.0:* 2410/dhclient udp 0 0 0.0.0.0:68 0.0.0.0:* 2410/dhclient udp 0 0 0.0.0.0:68 0.0.0.0:* 840/dhclient udp 0 0 0.0.0.0:123 0.0.0.0:* 792/chronyd udp 0 0 127.0.0.1:323 0.0.0.0:* 792/chronyd udp6 0 0 :::38403 :::* 840/dhclient udp6 0 0 :::123 :::* 792/chronyd udp6 0 0 ::1:323 :::* 792/chronyd udp6 0 0 :::57286 :::* 2410/dhclient
3)显示接口的统计数据:
格式:netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--verbose|-v] [--program|-p] [--numeric|-n]
#显示所有接口的数据 -i
[root@localhost ~]# netstat -i Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eno16777 1500 14012 0 0 0 946 0 0 0 BMRU eno33554 1500 302 0 0 0 25 0 0 0 BMRU lo 65536 11 0 0 0 11 0 0 0 LRU
#指定接口:netstat -I<IFace> 此处-I之后不能有空格
[root@localhost ~]# netstat -Ieno33554984 Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eno33554 1500 320 0 0 0 27 0 0 0 BMRU
4.ifup/ifdown命令:启用或者禁用某网卡
#ifup/ifdown IFace
原理:通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置;所以如果配置文件不存在,此命令无法实现启用或者禁用网卡接口。
5.配置主机名
# hostname命令:
1)查看:hostname
2)配置:hostname HOSTNAME 配置只在当前系统有效,重启后失效
#针对CentOS 7,可以使用另外的命令:
hostnamectl status:显示当前主机名信息;
hostnamectl set-hostname:设定主机名,永久有效;
[root@localhost ~]# hostnamectl Static hostname: localhost.localdomain Icon name: computer-vm Chassis: vm Machine ID: 95aab33025e949cc85ccb116339b7eac Boot ID: ab8ccd62676d48e9a7b653625eead0cc Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-229.el7.x86_64 Architecture: x86_64
#通过编辑配置文件也可使其永久生效;
配置文件: /etc/sysconfig/network
HOSTNAME=<HOSTNAME>
修改后不会立即生效,需要重读此文件才有效,但是一直生效。
6.DNS服务器指向
#修改配置文件/etc/resolv.conf
nameserver DNS_SERVER_IP
#测试(host/nslookup/dig):
[root@localhost ~]# dig -t A mageedu.com ; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -t A mageedu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4358 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 10 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;mageedu.com. IN A ;; ANSWER SECTION: mageedu.com. 600 IN A 101.200.188.230 ;; AUTHORITY SECTION: mageedu.com. 153286 IN NS v2s1.xundns.com. mageedu.com. 153286 IN NS v2s2.xundns.com. ;; ADDITIONAL SECTION: v2s1.xundns.com. 126456 IN A 183.57.38.184 v2s1.xundns.com. 126456 IN A 113.17.169.37 v2s1.xundns.com. 126456 IN A 115.238.241.21 v2s1.xundns.com. 126456 IN A 115.238.253.250 v2s1.xundns.com. 126456 IN A 124.232.156.76 v2s2.xundns.com. 126456 IN A 116.10.184.143 v2s2.xundns.com. 126456 IN A 121.10.104.13 v2s2.xundns.com. 126456 IN A 115.238.241.20 v2s2.xundns.com. 126456 IN A 115.238.253.252 ;; Query time: 1110 msec ;; SERVER: 172.16.0.1#53(172.16.0.1) ;; WHEN: 五 12月 25 21:27:59 CST 2015 ;; MSG SIZE rcvd: 245
二.iproute家族:
1.ip命令:查看及管理路由,设备,策略路由及隧道功能
格式:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
1)ip link 网络设备配置
#ip link set - 修改设备属性
#ip link show - 显示设备属性
显示属性示例:
[root@localhost ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:f1 brd ff:ff:ff:ff:ff:ff 3: eno33554984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff
或者使用list也可以实现查看显示的效果
[root@localhost ~]# ip link list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:f1 brd ff:ff:ff:ff:ff:ff 3: eno33554984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff
#ip link set后跟比较多,同ifconfig比较相似。
1)up和down 启用或者禁用。示例:eno33554984被禁用
[root@localhost ~]# ip link set eno33554984 down [root@localhost ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:f1 brd ff:ff:ff:ff:ff:ff 3: eno33554984: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff
重新启用eno33554984:
[root@localhost ~]# ip link set eno33554984 up [root@localhost ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:f1 brd ff:ff:ff:ff:ff:ff 3: eno33554984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff
2)#multicast on或multicast off:启用或禁用多播功能;示例:
[root@localhost ~]# ip link set eno33554984 multicast on [root@localhost ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:f1 brd ff:ff:ff:ff:ff:ff 3: eno33554984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set eno33554984 multicast off [root@localhost ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:f1 brd ff:ff:ff:ff:ff:ff 3: eno33554984: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff
3)name NAME:重命名接口
4)mtu NUMBER:设置MTU的大小,默认为1500;
5)netns PID:ns为namespace,用于将接口移动到指定的网络名称空间;
示例:
[root@localhost ~]# ip netns add mynet [root@localhost ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:f1 brd ff:ff:ff:ff:ff:ff 3: eno33554984: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff [root@localhost ~]# ip link set eno33554984 netns mynet [root@localhost ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:f1 brd ff:ff:ff:ff:ff:ff
可以发现这里我们增加了一个自己命名的网络空间:mynet,并将eno33554984移入到了 mynet空间中,所以原先eno33554984接口消失;
[root@localhost ~]# ip netns exec mynet ip link show 1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 3: eno33554984: <BROADCAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff
此时在mynet空间中执行查看接口信息,即可发现消失的eno33554984信息。
[root@localhost ~]# ip netns del mynet [root@localhost ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:f1 brd ff:ff:ff:ff:ff:ff 3: eno33554984: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff
将mynet空间删除,eno33554984即可归来。
6)ip netns:管理用户网络空间
选项:
ip netns list:列出所有的netns
ip netns add NAME:创建指定的netns
ip netns del NAME:删除指定的netns
ip netns exec NAME COMMAND:在指定的netns中运行命令
7)ip address - 协议地址管理,管理网络上的IP地址
<一>格式:ip addr add IFADDR dev IFACE
示例:删除了eno33554984的IP
ifconfig eno33554984 0
# 为eno33554984新增一个IP-192.168.41.3/24
[root@localhost ~]# ip addr add 192.168.41.3/24 dev eno33554984 [root@localhost ~]# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ee:d3:f1 brd ff:ff:ff:ff:ff:ff inet 172.16.249.228/16 brd 172.16.255.255 scope global dynamic eno16777736 valid_lft 78030sec preferred_lft 78030sec inet6 fe80::20c:29ff:feee:d3f1/64 scope link valid_lft forever preferred_lft forever 3: eno33554984: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff inet 192.168.41.3/24 scope global eno33554984 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:feee:d3fb/64 scope link valid_lft forever preferred_lft forever
#为同一个网卡增加第二个地址
[root@localhost ~]# ip addr add 192.168.41.4/24 dev eno33554984 [root@localhost ~]# ip adr list Object "adr" is unknown, try "ip help". [root@localhost ~]# ip addr list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ee:d3:f1 brd ff:ff:ff:ff:ff:ff inet 172.16.249.228/16 brd 172.16.255.255 scope global dynamic eno16777736 valid_lft 77507sec preferred_lft 77507sec inet6 fe80::20c:29ff:feee:d3f1/64 scope link valid_lft forever preferred_lft forever 3: eno33554984: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff inet 192.168.41.3/24 scope global eno33554984 valid_lft forever preferred_lft forever inet 192.168.41.4/24 scope global secondary eno33554984 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:feee:d3fb/64 scope link valid_lft forever preferred_lft forever
# 此时新增的IP在ifconfig下是显示不出来的,如果想要显示,就需要增加一个标签。
ip addr add label NAME,示例:
[root@localhost ~]# ip addr add 192.168.41.5/24 dev eno33554984 label eno33554984:0
[root@localhost ~]# ip addr list eno33554984 3: eno33554984: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ee:d3:fb brd ff:ff:ff:ff:ff:ff inet 192.168.41.3/24 scope global eno33554984 valid_lft forever preferred_lft forever inet 192.168.41.4/24 scope global secondary eno33554984 valid_lft forever preferred_lft forever inet 192.168.41.5/24 scope global secondary eno33554984:0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:feee:d3fb/64 scope link valid_lft forever preferred_lft forever
此时ifconfig也是可以显示eno33554984:0的信息。
# ip address add [broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到;
# ip address add [scope SCOPE_VALUE]:作用域
global:全局可用
link:接口可用; 自己ping自己可以,别人不可以
host:仅本机可用;除了自己可见,别人无法ping。
<二>ip address delete - delete protocol address -删除
格式:ip addr delete IFADDR dev IFACE
示例:删除eno33554984上的192.168.41.5/24的IP
[root@localhost ~]# ip addr del 192.168.41.5/24 dev eno33554984
<三>ip address show - look at protocol addresses-显示接口信息
同:ip addr list [IFACE]:显示接口的地址;
<四>ip address flush - flush protocol addresses--清除接口信息
ip addr flush dev IFACE
8)ip route:管理路由表
ip route add - add new route-添加路由;
ip route change - change route--修改路由;
ip route replace - change or add new one---替换路由,修改已有或者添加新的;
ip route delete - delete route--删除路由;
ip route show--list routes-显示路由
ip route flush - flush routing tables--清空路由;
ip route get - get a single route--获取单条路由;
格式:ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
示例:
[root@localhost ~]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eno33554984 [root@localhost ~]# ip route list default via 172.16.0.1 dev eno16777736 proto static metric 100 10.0.0.0/8 dev eno33554984 proto kernel scope link src 10.0.10.41 172.16.0.0/16 dev eno16777736 proto kernel scope link src 172.16.249.228 metric 100 192.168.0.0/24 via 10.0.0.1 dev eno33554984 192.168.41.0/24 dev eno33554984 proto kernel scope link src 192.168.41.3 192.168.124.0/24 dev eno33554984 proto kernel scope link src 192.168.124.128 192.168.124.0/24 dev eno33554984 proto kernel scope link src 192.168.124.128 metric 100
示例:特指定出去的ip为10.0.10.41的路由网关,由src指定
[root@localhost ~]# ip route add 192.168.1.0/24 via 10.0.0.1 dev eno33554984 src 10.0.10.41 [root@localhost ~]# ip route list default via 172.16.0.1 dev eno16777736 proto static metric 100 10.0.0.0/8 dev eno33554984 proto kernel scope link src 10.0.10.41 172.16.0.0/16 dev eno16777736 proto kernel scope link src 172.16.249.228 metric 100 192.168.0.0/24 via 10.0.0.1 dev eno33554984 192.168.1.0/24 via 10.0.0.1 dev eno33554984 src 10.0.10.41 192.168.41.0/24 dev eno33554984 proto kernel scope link src 192.168.41.3 192.168.124.0/24 dev eno33554984 proto kernel scope link src 192.168.124.128 192.168.124.0/24 dev eno33554984 proto kernel scope link src 192.168.124.128 metric 100
# 增加默认网关:
ip route add default via 172.16.0.1 dev eno16777736
#删除网关:
ip route del TYPE PRIFIX
示例: 删除到192.168.1.0/24的网关
[root@localhost ~]# ip route del 192.168.1.0/24 [root@localhost ~]# ip route list default via 172.16.0.1 dev eno16777736 proto static metric 100 10.0.0.0/8 dev eno33554984 proto kernel scope link src 10.0.10.41 172.16.0.0/16 dev eno16777736 proto kernel scope link src 172.16.249.228 metric 100 192.168.0.0/24 via 10.0.0.1 dev eno33554984 192.168.41.0/24 dev eno33554984 proto kernel scope link src 192.168.41.3 192.168.124.0/24 dev eno33554984 proto kernel scope link src 192.168.124.128 192.168.124.0/24 dev eno33554984 proto kernel scope link src 192.168.124.128 metric 100
#ip route show - list routes-显示地址
#ip route get - get a single route-获得一个路由
格式:ip route get TYPE PRIFIX
#ip route flush - flush routing tables- 清空路由表 ,可以指定网络
格式:TYPE PRIFIX
清空到10.0.0.0/8的路由
[root@localhost ~]# ip route list default via 172.16.0.1 dev eno16777736 proto static metric 100 10.0.0.0/8 dev eno33554984 proto kernel scope link src 10.0.10.41 172.16.0.0/16 dev eno16777736 proto kernel scope link src 172.16.249.228 metric 100 192.168.0.0/24 via 10.0.0.1 dev eno33554984 192.168.41.0/24 dev eno33554984 proto kernel scope link src 192.168.41.3 192.168.124.0/24 dev eno33554984 proto kernel scope link src 192.168.124.128 192.168.124.0/24 dev eno33554984 proto kernel scope link src 192.168.124.128 metric 100 [root@localhost ~]# ip route flush 10.0.0.0/8 [root@localhost ~]# ip route list default via 172.16.0.1 dev eno16777736 proto static metric 100 172.16.0.0/16 dev eno16777736 proto kernel scope link src 172.16.249.228 metric 100 192.168.0.0/24 via 10.0.0.1 dev eno33554984 192.168.41.0/24 dev eno33554984 proto kernel scope link src 192.168.41.3 192.168.124.0/24 dev eno33554984 proto kernel scope link src 192.168.124.128 192.168.124.0/24 dev eno33554984 proto kernel scope link src 192.168.124.128 metric 100
2.ss命令:另一个显示socket的工具
格式: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:
示例:'( dport = :22 or sport = :22)'
#只显示tan状态中22端口的链接
[root@localhost ~]# ss -tan '( dport = :22 or sport = :22 )' State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* ESTAB 0 0 172.16.249.228:22 172.16.41.1:38249 LISTEN 0 128
三.配置文件修改
1.IP/NETMASK/GW/DNS等属性的配置文件
位置:/etc/sysconfig/network-scripts/ifcfg-IFACE,其中IFACE:接口名称;
2.路由的相关配置文件:
/etc/sysconfig/networkj-scripts/route-IFACE
注意:配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通过大量参数来定义接口的属性;其可通过vim等文本编辑器直接修改,也可以使用专用的命令的进行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)
3.对IP/NETMASK/GW/DNS等属性的配置文件 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服务来控制接口;centos6上不建议打开。
3.管理网络服务
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
4.日常工作中我们需要将一些默认路由永久生效,也需要写到配置文件中
文件位置:/etc/sysconfig/network-scripts/route-IFACE
支持两种配置方式,但不可混用;
(1) 每行一个路由条目:
格式:TARGET via GW
例:目标:下一跳:网关
10.0.0.0/24 via 192.168.10.1
# 即到达10.0.0.0/24经由192.168.10.1通过
(2) 每三行一个路由条目:
格式:ADDRESS#=TARGET ADDRESS0=20.0.0.0
NETMASK#=MASK NETMASK0=255.255.255.0
GATEWAY#=NEXTHOP GATEWAY0=192.168.10.2
#即到达达20.0.0.0/24经由192.168.10.2通过
5.给接口配置多个地址,除ip addr之外,ifconfig或配置文件都可以;
(1) ifconfig IFACE_LABEL IPADDR/NETMASK
即:IFACE_LABEL: eth0:0, eth0:1, ...
(2) 为别名添加配置文件;
DEVICE=IFACE_LABEL
BOOTPROTO:网上别名不支持动态获取地址