10.3 ifdown:禁用网络接口
10.3.1 命令详解
【命令星级】 ★★★★☆
【功能说明】
ifdown命令用于禁用指定的网络接口。和ifup命令相同,ipdown命令其实是一个Shell脚本,有Shell基础的读者可以使用which命令来找到这个脚本并读一读。ifdown命令读取配置文件/etc/sysconfig/network和/etc/sysconfig/network-scripts/ifcfg-<configuration>对网络接口进行相应的操作。
【语法格式】
ifdown [iface]
ifdown [网络接口]
**说明:**在ifdown命令及后面的网络接口里,每个元素直接都至少要有一个空格。
10.3.2 使用范例
**范例10-8:**禁用指定的网络接口。
[root@centos6 ~]# ifdown eth1 #关闭eth1网卡。
[root@centos6 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:A3:21:26
inet addr:10.0.0.202 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea3:2126/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1152 errors:0 dropped:0 overruns:0 frame:0
TX packets:902 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:111941 (109.3 KiB) TX bytes:112515 (109.8 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
#提示:eth1网卡信息已消失。
[root@centos7 ~]# ifdown eth1
Device 'eth1' successfully disconnected.
[root@centos7 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.201 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::4122:b9af:997b:a6ff prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:23:c8:7a txqueuelen 1000 (Ethernet)
RX packets 468 bytes 44473 (43.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 355 bytes 44162 (43.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:23:c8:84 txqueuelen 1000 (Ethernet)
RX packets 13 bytes 1346 (1.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 31 bytes 2948 (2.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#CentOS 7设置后,eth1网卡已经没有IP信息了。
10.4 route:显示或管理路由表
10.4.1 命令详解
【命令星级】 ★★★★☆
【功能说明】
route命令可以显示或管理Linux系统的路由表,route命令设置的路由主要是静态路由。
【路由的概念】
计算机与计算机之间的数据传输必须得经由网络,而网络可以通过直接连接两台计算机的方式或者是以一个或一个以上的节点来构成。
数据传输首先会通过源主机传送到一个网络节点,然后这个网络节点会根据“约定”将数据传送到另一个网络节点,另一个网络节点再将数据传输到下一个节点,依此类推,最终把数据传输到目标主机。
这就是数据传送的一个完整过程,而每个网络节点就是一个路由,“约定”就是路由规则,数据传输就是根据路由规则依次传输下去的。
【路由的分类】
路由分为静态路由和动态路由。
Linux上配置的路由都属于静态路由。静态路由规则是系统管理员使用route命令加入的,也就是通过手动输入的方式来加入路由规则。
动态路由就是无需手动输入路由的规则,其路由规则是本机与不同的机器彼此经过路由程序(Routing daemon)相互交换路由规则而来的。
【语法格式】
route [option]
route [选项]
**说明:**在route命令及后面的选项里,每个元素直接都至少要有一个空格。
【选项说明】
表10-3针对该命令的参数选项进行了说明。
表10-3 route命令的参数选项及说明
10.4.2 使用范例
**范例10-9:**查看当前系统路由表信息。
[root@centos7 ~]# route #默认情况下,route命令会将IP地址进行DNS解析生成主机名。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
[root@centos7 ~]# route -n #使用-n选项不进行DNS解析,这样会加快显示速度。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
命令结果说明具体如下。
- Destination:表示网络号,也就是network的意思。
- Gateway:连出网关地址,也就是说该网络是通过该IP连接出去的,如果显示0.0.0.0,则表示该路由是直接由本机传送出去的。如果有IP显示,则表示本条路由必须经过该IP的转接才能连接出去。
- Genmask:表示子网掩码地址,也就是netmask。Destination和Genmask将组合成一个完整的网络。
- Flags:路由标记信息,通常会有下面几种不同的标记。
- U(route is up):表示此路由当前为启动状态。
- H(traget is a host):目标路由是一个主机(IP)而非网络。
- R(reinstate route for dynamic routing):使用动态路由时,恢复路由信息标识。
- G(use gateway):表示需要通过外部的主机(gateway)来转接传递数据。
- M(modified from routing daemon or redirect):表示路由已经被修改了。
- D(dynamically installed by daemon or redirect):已经由服务设定为动态路由。
- !(reject route):这个路由将不会被接受(用来抵挡不安全的网络)。
- Metric:需要经过几个网络节点(hops)才能到达路由的目标网络地址。
- Ref:参考到此路由规则的数目。
- Use:有几个转送数据包参考到了此路由规则。
- Iface:路由对应的网络设备接口。
命令输出结果的第二行(0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0)是系统的默认网关,表示去任何地方(0.0.0.0)都发给10.0.0.254,因为是默认网关,所以放在了最后一条。路由也是有顺序的,如果不符合任何一条规则就交给默认网关来处理。
命令输出结果的第三行(10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0)表示主机所在的网段为10.0.0.0,若数据传送目标是在同一网段,则可直接通过eth0转发数据包。
**范例10-10:**删除和添加默认网关。
默认网关就是数据包不匹配任何设定的路由规则最后流经的地址网关!网关按字面意思就是网络的关口,相当于我们家里房子的门一样,如果外出就要经过房门,数据包也是一样。下面来看一下删除和添加默认网关的方法:
[root@centos7 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
[root@centos7 ~]# route del default #删除网关方法1。
[root@centos7 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
#第2行的网关已经删除。
[root@centos7 ~]# route add default #直接这样添加是不行的,因为系统不知道你的网关是多少。
SIOCADDRT: No such device
[root@centos7 ~]# route add default gw 10.0.0.254 #添加网关方法1,需要指明网关地址10.0.0.254或其他正确的地址。
[root@centos7 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
#第2行网关已添加。
[root@centos7 ~]# route del default gw 10.0.0.254 #删除网关方法2。
[root@centos7 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
[root@centos7 ~]# route add default gw 10.0.0.254 dev eth0 #添加网关方法2,使用dev指明网络设备,适用于有多块网络设备的主机。
[root@centos7 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
#特别强调:实际上route add default gw 10.0.0.254就相当于route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.254。
**范例10-11:**配置网络路由(去往某一网络或网段的路由)。
一般多网段之间互相通信,会希望建立一条优先路由,而不是通过默认网关,这时就可以配置网络路由。还是拿房子作比喻,你现在不是要出门,而是要去卧室或卫生间,去卧室就要经过卧室的门,去卫生间就要经过卫生间的门,这里的卧室和卫生间的门就可以认为是去往某一网段的路由,而不是默认路由(即房子的大门)。
在实际工作中也会有类似的需求,即两个不同的内部网络之间互相访问,而不是出网访问。
图10-1 添加一条道192.168.1.0/24的网络路由
在图10-1中,有两个网段10.0.0.0/24和192.168.1.0/24,现在想要实现10网段的机器访问192网段的机器,其中有一台机器有两块网卡,eth0的IP地址为192.168.1.200,eth1的IP地址为10.0.0.200。那么配置网络路由会有以下几种方法。
方法1:
route add -net 192.168.1.0/24 gw 10.0.0.200
#192.168.1.0/24等效于192.168.1.0 netmask 255.255.255.0.
方法二:
route add -net 192.168.1.0 netmaksk 255.255.255.0 dev eth1 #指定设备而不是地址。
route add -net 192.168.1.0/24 dev eth1
在想要访问192网段的每台10网段的机器上执行上面的命令,那么就只是执行该命令的主机能够访问192网段;但若在10网段的
网关10.0.0.254 上执行上面的命令,则10网段的机器都能访问192网段。
扩展知识:删除网络路由。
route del -net 192.168.1.0/24 dev eth1
以上配置在重启网络时都会失效,如果希望永久生效,则有如下几种方法。
方法一:
vim /etc/sysconfig/network-scripts/route-eth1 #默认不存在此文件。
加入如下内容:
192.168.1.0/24 via 10.0.0.254
**提示:**写到配置里,重启网络服务和重启系统都会生效!
方法二:
vim /etc/sysconfig/static-routes #默认不存在此文件。
加入如下内容:
any net 192.168.1.0/24 gw 10.0.0.254
**提示:**写到配置里,重启网络服务和重启系统都会生效!
方法三:
vim /etc/rc.local
加入如下内容:
route add -net 192.168.1.0/24 gw 10.0.0.254
**提示:**方法一推荐在生产环境下使用,方法三写到/etc/rc.local里只在开机时加载,在手工重启网络后悔失效,但是重启系统后会生效!
如果是配置默认路由网关,则可以写在网卡配置里,代码如下:
[root@centos7 ~]# grep GATEWAY /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=10.0.0.254
**范例10-12:**配置和删除主机路由(就是去往某个主机地址的路由)。
route add -host 192.168.2.13 dev eth2
route add -host 202.81.11.91 dev lo
例如:keepalived或heartbeat高可用服务器对之间使用单独的网卡接心跳线通信时,就会用到以上的主机路由。
删除主机路由的方法如下:
route del -host 192.168.2.13 dev eth2