【网络】route和 IP route的区别|route 和 IP route 添加路由
目录
route和 IP route的区别
route
是一个相当简单的工具,非常适合创建静态路由。为了兼容性,它仍然存在于许多发行版中。
ip route
功能更强大,功能更多,并且可以创建更专业的规则。
route
并非所有路由规则条目都可以用route 显示,route 只显示主路由表中的信息,而NAT路由信息以及和主路由表以外的其他路由表信息必须使用 ip route 工具单独管理和查看。
D.1. route (linux-ip.net):http://linux-ip.net/html/tools-route.html
IP route
IP route是用于 IP 管理的 iproute2 工具套件的另一部分,ip route 提供了用于操作任何路由表的管理工具。操作包括显示路由或路由缓存、添加路由、删除路由、修改现有路由、获取路由和清除整个路由表或路由缓存。使用 ip route 时要记住的一件事是,您可以使用此命令对 255 个路由表中的任何一个进行操作。在 route 命令仅在主路由表(表 254)上运行的情况下,ip route 命令默认情况下在主路由表上运行,但可以通过 table 参数轻松coaxed into使用其他表。
D.2. ip route (linux-ip.net):http://linux-ip.net/html/tools-ip-route.html#tools-ip-route-show
ip命令与ifconfig命令类似,但比ifconfig命令更加强大,主要功能是用于显示或设置网络设备、路由和隧道的配置等,ip命令是Linux加强版的的网络配置工具,用于代替ifconfig命令。
ip命令是Linux管理员非常方便的工具。此工具的唯一缺点是更改是非持久性的,这意味着重新启动后将无法生存。
原文链接:https://blog.csdn.net/qq_35029061/article/details/125967340
ip link list 显示ip链路状态信息
ip address show 除显示所有网络地址
ip route show 显示主路由表信息
ip neigh show 显示邻居表
route 和 IP route 显示路由
route -n
显示现在所有路由
root@Ubuntu:~# route
结果是自上而下, 就是说, 哪条在前面, 哪条就有优先, 前面都没有, 就用最后一条default,
1、第一行的意思就是去往所有目标地址数据包由网关192.168.124.1 通过网卡eth0来转发,Flags那一列中有G时才会使用Gateway
2、第二行:表示去往节点1的eth0的数据由网关192.168.124.254通过本机的eth0来转发
3、第三行:同样是去往节点2的eth0的数据由网关192.168.1244.253通过本机的eth0来转发
4、第四行:意思就是去往192.168.122.0地址的数据包通过virbr0网桥设备来转发
5、第五行:就是说去往192.168.124.0 地址中的数据要通过eth0网卡来转发
#route add -net 192.168.1.0/24 gw 192.168.124.254#图第2行添加命令
#route add -net 192.168.2.0/24 gw 192.168.124.253#图第3行添加命令
其中:
add : 添加一条路由规则
del : 删除一条路由规则
-net : 目的地址是一个网络
-host : 目的地址是一个主机
target : 目的网络或主机
netmask : 目的地址的网络掩码
gw : 路由数据包通过的网关
dev : 为路由指定的网络接口
列出项说明:
ip route解读
default via 192.168.1.1 dev wlan0 192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.100
https://diego.assencio.com/?index=d71346b8737ee449bb09496784c9b344
先解释第二行,所有发往192.168.1.0/24网络的报文必须通过wlan0这个网络接口(wifi网卡)转发,并且使用192.168.1.100作为其source ip. 该ip就是通过DHCP获取的绑定于wlan0这个接口的ip地址
proto kernel的意思是这个路由项是在自动配置阶段由kernel创建的,而scope link的意思是192.168.1.0/24这个子网内的目标ip仅仅在wlan0这个接口上valid.
第一行是默认路由。任何无路由报文都通过wlan0经由默认网关192.168.1.1来转发。
路由表的查看可有以下二种方法:
ip route list table table_number
ip route list table table_name
路由表序号和表名的对应关系在/etc/iproute2/rt_tables中,可手动编辑
查看命令 | 解释 |
---|---|
ip route ip route list table table_name | 显示系统路由 |
ip route list 192.168.1.0/24 | 查看指定网段的路由 |
ip route show [exact] 169.254.0.0/16 | 精准查看具体某一条路由 |
ip route show match 172.18 | 模糊匹配某一条路由 |
ip route show src 172.18.16.0/20 | 仅列出源地址前缀为172.18.16.0/20的路由 |
ip route show via 172.18.31.253 | 仅列出通过前缀选择的为该ip的路由 |
ip -s route show cache 192.168.100.17 | 显示来自路由缓存的统计信息 |
ip route show table local 或:ip route list table local | 查看本地路由表 |
ip route list table main
linux 系统中,可以自定义从 1-252个路由表,其中,linux系统维护了4个路由表:
0#表: 系统保留表
253#表: defult table 没特别指定的默认路由都放在改表
254#表: main table 没指明路由表的所有路由放在该表
255#表: local table 保存本地接口地址,广播地址、NAT地址 由系统维护,用户不得更改
( 路由表序号和表名的对应关系在 /etc/iproute2/rt_tables 文件中,可手动编辑。路由表序号和表名添加完毕后, ip rule add from all table 表名, 然后ip rule list查看 )
参考博客:
Linux Advanced Routing & Traffic Control HOWTO
https://lartc.org/howto/
https://blog.csdn.net/liuqun69/article/details/88888893
route 和 IP route 添加路由
(本章节转自:https://blog.csdn.net/Answer_to_you/article/details/108997735)
进行路由时,根据路由规则来进行匹配,按优先级(pref)从低到高匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的..
路由规则的添加
ip rule add from 192.168.1.10/32 table 1 pref 100
如果pref值不指定,则将在已有规则最小序号前插入
route 添加路由
(注意使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,持久化方法见后面说明)
#添加一条路由(发往192.168.62这个网段的全部要经过网关192.168.1.1)
route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.1.1
#删除一条路由 删除的时候不用写网关
route del -net 192.168.122.0 netmask 255.255.255.0
示例1:添加到主机路由 (指定一个主机-host 192.168.4.2)
route add –host 192.168.4.2 dev eth0:1
route add –host 192.168.4.1 gw 192.168.4.250示例2:添加到网络的路由(指定一个网络-net 192.168.2.0/24)
route add –net IP netmask MASK eth0
route add –net IP netmask MASK gw IP
route add –net IP/24 eth1routeadd -net 192.168.1.11 netmask 255.255.255.0 eth0
routeadd -net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1
routeadd -net 192.168.1.0/24 eth0
routeadd-net192.168.1.0/24gw192.168.1.1
route add -net 192.168.2.0/24 gw 192.168.1.1
route add -host 192.168.2.100/32 gw 192.168.1.1
示例3:添加默认网关route add default gw IP
route add default gw 192.168.1.1
删除路由
route del -net 192.168.2.0/24 gw 192.168.1.1
route del -host 192.168.2.100/32 gw 192.168.1.1
示例和说明:
有两块网卡if1和if2
eth0: 192.168.10.23/255.255.255.0
eth1: 192.168.20.22/255.255.255.0
添加路由命令如下
route add -net 192.168.10.0 netmask 255.255.255.0 dev eth0
route add -net 192.168.20.0 netmask 255.255.255.0 dev eth1
通过上面两个命令, 发往192.168.10.0网段的IP包会通过eth0发送, 发往192.168.20.0网段的IP包会通过eth1发送.
如果其它网段的IP包如何发送? 需要设置一个默认网关, 命令如下
route add default gw 192.168.20.1
通过上面命令, 会将除了这两个网络的IP包都发往192.168.20.1网关, 如何转发到192.168.20.1网关? 在上面的两条路由项中已经定义了, 会通过eth1网口转发,
route 命令说明:
route [-v] [-A family |-4|-6] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If]
简化版
route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
注:虽然可指定网络接口,但是不建议这么做。
参数解释
add:添加一条路由规则
del:删除一条路由规则
-net:目的地址是一个网络
-host:目的地址是一个主机
target:目的网络或主机
netmask:目的地址的网络掩码
gw:路由数据包通过的网关
dev:为路由指定的网络接口
链接:https://www.jianshu.com/p/93392249ef24
IP route 添加路由
注:创建完路由规则若需立即生效须执行#ip route flush cache;刷新路由缓冲
可参数解析如下: &n
From -- 源地址
To -- 目的地址(这里是选择规则时使用,查找路由表时也使用)
Tos -- IP包头的TOS(type of sevice)域Linux高级路由-
Dev -- 物理接口
Fwmark -- iptables标签
添加路由到table 100。
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.183 table 100
查看的时候也要指定table 100: ip route list table 100
命令 | 解释 |
---|---|
ip route add default via 192.168.1.1 | 设置系统默认路由 |
ip route add 192.168.2.0/24 via 192.168.1.1 | 设置192.168.2.0网段的网关为192.168.1.1 |
ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 | 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口 |
ip route add default via 192.168.0.254 dev eth0 | 设置默认网关为192.168.0.254 |
ip route add default via 192.168.1.1 table 1 | 在一号表中添加默认路由为192.168.1.1 |
ip route add 192.168.0.0/24 via 192.168.1.2 table 1 | 在一号表中添加一条到192.168.0.0网段的路由为192.168.1.2 |
ip route add prohibit 209.10.26.51 | 设置请求的目的地不可达的路由 |
ip route add prohibit 209.10.26.51 from 192.168.99.35 | 假设您不想阻止所有用户访问此特定主机,则可以使用该from 选项,阻止了源IP 192.168.99.35到达209.10.26.51 |
ip route change default via 192.168.99.113 dev eth0 | 更改默认路由。此操作等同于先删除,后新增 |
ip route append 192.168.2.0/24 via 192.168.1.12 #追加一个指定网络的路由,为了平滑切换网关使用修改路由
ip route change 192.168.2.0/24 via 192.168.1.11
ip route replace 192.168.2.0/24 via 192.168.1.111删除路由
ip route del 192.168.2.0/24 via 192.168.1.1清空指定网络的路由
ip route flush 192.168.2.0/24 #这个是清理所有192.168.2.0/24相关的所有路由,有时候设置错网关存在多条记录,就需要一次性清空相关路由再进行添加
指定路由metirc
ip route add 192.168.2.0/24 via 192.168.1.15 metric 10添加默认路由
ip route add 192.168.2.0/24 via 192.168.1.1
默认路由到table 100
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.183 table 100
/online/ip_route_ctrl.sh: ip route add default via 192.168.1.1 dev eth0
静态路由
ip route add 192.168.2.0 via 192.168.3.7 dev eth1 table 101linux之路由知识之ip route 命令中的疑惑,这篇问准详细介绍了IP route
https://blog.csdn.net/u011068702/article/details/53899537
查看命令 | 解释 |
---|---|
ip route get 169.254.0.0/16 | 获取到目标的单个路由,并按照内核所看到的方式打印其内容 |
ip route delete
命令 | 解释 |
---|---|
ip route del 192.168.4.0/24 | 删除192.168.4.0网段的网关 |
ip route del default | 删除默认路由 |
ip route delete 192.168.1.0/24 dev eth0 | 删除路由 |
ip route flush
该flush
选项与ip route一起使用时,将清空路由表或删除特定目标的路由
命令 | 解释 |
---|---|
ip route flush 10.38.0.0/16 | 删除特定路由 |
ip route flush table main | 清空路由表 |
添加的路由持久化
我们刚刚添加的路由是临时的,重启后将无法生存。要使路由持久化,您需要手动添加它们。
永久添加静态路由(RHEL,Fedora,CentOS)
我们刚刚添加的路由是临时的,重启后将无法生存。要使路由持久化,您需要手动添加它们。
在/etc/sysconfig/network-scripts/ 目录中,创建一个接口文件route-interface,其中interface属性是您的网络接口名称。在我们的例子中,这将是route-enp0s3
$ vim /etc/sysconfig/network-scripts/route-enps03
接下来,我们将添加路线,如下所示:
10.0.2.0/32 via 192.168.43.1 10.0.2.15 via 192.168.43.1
保存文件并退出。然后重新启动NetworkManager服务
$ sudo systemctl restart NetworkManager
永久添加静态路由(Ubuntu / Debian)
对于Debian发行版,编辑文件 /etc/network/interfaces
$ sudo vim /etc/network/interfaces
追加以下行:
up route add -net 10.0.2.0 netmask 255.255.255.0 gw 192.168.43.1 dev enp0s3
保存并退出文件。最后,要使更改生效,请运行以下命令
$ sudo ifdown enp0s3 && sudo ifup enp0s3
route添加路由持久化:
Linux下配置永久路由的几种方式
命令行添加或删除,默认只在内存中生效。当重启网络或者重启主机后就失效了。为了路由开机加载生效可以将路由信息写到/etc/rc.local或者/etc/sysconfig/static-routes中;
其中写到/etc/rc.local的命令格式原样即可,写到/etc/sysconfig/static-routes中的命令格式如下:
添加到主机的路由:
any host 192.168.101.200 gw 192.168.101.1
添加到网络的路由:
any net 192.168.101.0/24 gw 192.168.101.1
1.在/etc/rc.local里添加路由信息
route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.3.254
#或者
routeadd-net192.168.1.0netmask255.255.255.0gw192.168.1.1
2.在/etc/sysconfig/network里追加
GATEWAY=[网关IP或者网关网卡名称]
GATEWAY=gw-ip
或者 GATEWAY=gw-dev
3./etc/sysconfig 中添加文件
添加永久静态路由(方法一):
[root@localhost ~]# vi /etc/sysconfig/static-routes
any net 192.168.10.0/24 gw 172.16.15.254
any net 192.168.177.0/24 gw 172.16.15.254
添加永久静态路由(方法二):
vi route-ens33 (ens33是centos7的接口形式)
192.168.177.0/24 via 172.16.15.254 dev ens33
192.168.10.0/24 via 172.16.15.254 dev ens33
static-routes文件为路由固化文件。
1./etc/sysconfig目录下,系统一般不会自动生成static-routes文件,需要手工创建。
2.static-routes文件中路由固化的格式
① 添加默认路由
any net 0.0.0.0 netmask 0.0.0.0 gw 10.92.2.1
或者
any net 0.0.0.0/0 gw 10.92.2.1
② 添加网络路由
any net 1.1.1.0 netmask 255.255.255.0 gw 1.1.1.10
或者
any net 1.1.1.0/24 gw 1.1.1.10
/etc/sysconfig/static-router :
any net x.x.x.x/24 gw y.y.y.y
4.开启IP转发
1.临时开启
echo"1">/proc/sys/net/ipv4/ip_forward
2.永久开启
vim/etc/sysctl.conf
修改net.ipv4.ip_forward=1
不同方法的优劣
两种方式添加静态路由对比
写/etc/rc.local
重启服务器生效;
重启网络服务,则静态路由失效;
/etc/rc.local是系统启动后最后运行的一个脚本,因此如果有如NFS需要网络才能挂载的服务需求,则该方式不适合;
写/etc/sysconfig/static-routes
重启服务器生效;
重启网络服务生效:
适合需要网络需求的服务,如NFS;
总结:添加静态路由最好是写到/etc/sysconfig/static-routes中,避免重启网络或者重启主机后路由不生效。
链接:https://www.jianshu.com/p/93392249ef24
ip rule 路由策略数据库管理命令
ip rule show – 列出路由规则 缩写:show、list、sh、ls、l
示例1: # ip ru ls
0: from all lookup local
32762: from 192.168.4.89 lookup fddi153
32764: from 192.168.4.88 lookup fddi153
32766: from all lookup main
32767: from all lookup 253
1.命令
ip rule 路由策略数据库管理命令
2.对象
路由策略数据库的规则用于控制选择路由的算法。
Internet上采用的路由算法一般是基于数据包目的地址的。
而在某些情况下,我们不只是需要通过数据包的目的地址决定路由,可能还需要通过其他一些域:源地址、IP协议、传输层端口甚至数据包的负载。这就叫做:策略路由(policy routing)。
注意:策略路由(policy routing)不等于路由策略(rouing policy)。
在这种情况下,传统的基于目的地址的路由表就无法满足要求了,需要使用路由策略数据库(routing policy database,RPDB)代替,通过它选择执行某些路由。这些规则可以由很多不同的状态,而且它们没有天生的次序,要由系统管理员决定。
RPDB可以 匹配以下的域:
数据包的源地址;
数据包的目的地址;
服务类型(Type of Service);
进入的网络接口;
匹配IP协议和传输层端口也是可能的,不过这要依靠iptables或者ipchains通过fwmark为某些数据包做标记,并重定向。
每个路由策略由一个选择符(selector)和一个操作(action)组成。系统按照顺序搜索路由策略数据库,把选择符和{源地址、目的地址、进入接口、tos、fwmark}等关键词进行匹配,如果匹配成功,就执行action定义的操作。操作或者成功返回,或者失败并且中止路由策略。否则,系统继续查询路由策略数据库。
操作如何定义?最原始的操作是选择下一跳(nexthop)和输出设备(output device)。Cisco IOS使用这种方式,我们姑且把这叫做匹配并设置(match & set)。而Linux的方式则更为灵活,Linux允许的操作包括:基于目的地址的路由表查询以及按照最长匹配的原则从路由表中选择路由。因此,匹配并 设置(match & set)的方式只是一个最简单的特例而已。
再系统启动时,内核会为路由策略数据库配置三条缺省的规则:
优先级 选择符 操作 解释
0 匹配任何条件 查询路由表local(ID 255) 路由表local是一个特殊的路由表,包含对于本地和广播地址的高优先级控制路由。rule 0非常特殊,不能被删除或者覆盖。
32766 匹配任何条件 查询路由表main(ID 254) 路由表main(ID 254)是一个通常的表,包含所有的无策略路由。系统管理员可以删除或者使用
另外的规则覆盖这条规则。
32767 匹配任何条件 查询路由表default(ID 253) 路由表default(ID 253)是一个空表,它是为一些后续处理保留的。对于前面的缺省策略没有匹配到的数据包,系统使用这个策略进行处理。这个规则也可以删除。
不要混淆路由表和策略:规则指向路由表,多个规则可以引用一个路由表,而且某些路由表可以没有策略指向它。如果系统管理员删除了指向某个路由表的所有规则,这个表就没有用了,但是仍然存在,直到里面的所有路由都被删除,它才会消失。
3.规则类型
路由策略规则数据库可以包括如下类型的规则:
unicast 返回从被引用的路由表中发现的路由。
blackhole 丢弃数据包,不做任何反应。
unreachable 产生网络不可达(Network is unreachable)的ICMP错误信息 。
prohibit 产生通讯被禁止(Communication is administratively prohibited)的ICMP错误信息。
nat 把数据报的源地址转换为其它的值。
4.命令
add、delete、show(或者list)
5.ip rule add -- 插入新的规则
ip rule delete -- 删除规则。
缩写:add、a;delete、del、d
参数
type TYPE(default): 这个规则的类型。有效的类型上一节已经介绍过了。
from PREFIX: 匹配的源地址
iif NAME: 选择数据包进入的设备。如果接口是回环设备,这个规则就只匹配源于本机的数据包。这意味着,你可以为本机发出的数据包和要转发的数据包分别建立路由表,使两者完全隔离。
tos TOS或者dsfield TOS: 选择匹配的TOS值
fwmark MARK: 选择要匹配的fwmark值
priority PREFERENCE: 设置这个规则的优先级。每个规则的优先级都应该明确设置为一个唯一的数值。实际上,由于历史的原因,ip roule add命令无需任何优先级的值,也不必是唯一的。如果用户没有在命令中提供优先级的值,内核会自动选择。如果用户提供的优先级值已经存在,内核也不会拒绝这次请求,而是在相同优先级的规则前面插入新的规则。
table TABLEID: 如果规则选择符匹配,就被查询的路由表识别符。
realms FROM/TO: 如果规则匹配和路由表查询成功,选择的realms值。
nat ADDRESS: 设置要进行网络地址转换的IP地址段。ADDRESS或者是进行网络地址转换ip地址段,或者是一个本机地址,甚至可以是0。
警告:使用上面两个命令对路由策略数据库进行的任何修改都不会马上生效。只有使用ip route flush cach命令刷新路由缓存之后才会生效。
示例
通过路由表inr.ruhep路由来自源地址为192.203.80/24的数据包
ip ru add from 192.203.80/24 table inr.ruhep prio 220
把源地址为193.233.7.83的数据报的源地址转换为192.203.80.144,并通过表1进行路由
ip ru add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320
删除无用的缺省规则
ip ru del prio 32767
注:32767和32766都可以删除,而0是不可以删除的。
8.7.ip rule show -- 列出路由规则
缩写:show、list、sh、ls、l
# ip rule ls
0: from all lookup local
200: from 192.203.80.0/24 to 193.233.7.0/24 lookup main
210: from 192.203.80.0/24 to 192.203.80.0/24 lookup main
220: from 192.203.80.0/24 lookup inr.ruhep realms inr.ruhep/radio-msu
300: from 193.233.7.83 to 193.233.7.0/24 lookup main
310: from 193.233.7.83 to 192.203.80.0/24 lookup main
320: from 193.233.7.83 lookup inr.ruhep map-to 192.203.80.144
32766: from all lookup main
#
每行第一部分的数字是规则的优先级,接着是选择符。
关键词lookup后面接着路由表识别符。
如果规则要进行网络地址转换,还需要一个关键词map-to设置转换以后的地址。
上面的示例非常简单,192.203.80.0/24和193.233.7.0/24组成内部网络,但是它们向外发送数据包要通过不同的路由。主机193.233.7.83和外界会话时,地址需要转换为192.203.80.144。
linux的路由表与路由策略
ip route 只是基于目的地址的路由选择
ip rule 路由策略,控制路由选择,可根据源地址,源IP等进行路由选择
路由策略由选择符合操作组成
ip rule add 添加策略
ip rule delete 删除策略
ip rule show 显示策略
使用路由策略可以更好的控制路由走向
下面一个例子显示了使用路由策略的优点:
假设有一台双线服务器
有两张网卡,有电信IP和网通IP地址,实现电信IP访问服务器时,服务器响应使用电信网关,网通IP访问服务器时,服务器响应使用网通网关。
假设电信IP为
222.73.121.100/24 网关 222.73.121..1
网通IP
112.80.1.100/24 网关 112.80.1.1
方法1(静态路由方法):
A.使用电信网关做默认路由,并添加网通的路由条目,并将条目写到/etc/rc.local或者/etc/sysconfig/network里面,以开机时可以加载
在network里面添加GATEWAY=222.73.121.1
添加路由条目如下
route add –net 58.16.0.0/13 gw 112.80.1.1
…
B.为每个网卡设置路由:假设eth0为222.73.121.100/24,eth1为112..80.1.100/24,新建以下文件
/etc/sysconfig/network-scripts/route-eth1
按如下格式添加路由条目
58.16.0.0/13 via 112.80.1.100
缺点是需要添加很多条目的路由条目,并且需要更新,如果有一个网通网段未添加,这个网段的IP就不能访问服务器的。
方法2(根据用户访问的路径设置静态路由):
1. 先在/etc/sysconfig/network里面添加默认路由GATEWAY=222.73.121.1
2. 设置ip rule 策略
vi /etc/iproute2/rt_tables #添加路由表
[root@lamp iproute2]# cat rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
252 dianxin #电信路由表
251 wangtong #网通路由表
#
# local
3. 添加原路返回路由
ip route flush table dianxin
ip route add default via 222.73.121.1 dev eth0 src 222.73.121.100 table dianxin
ip rule add from 222.73.121.100 table dianxin
ip route flush table wangtong
ip route add default via 112.80.1.1 dev eth1 src 112.80.1.100 table wangtong
ip rule add from 112.80.1.100 table wangtong
即让从电信IP过来的请求按照电信路由返回,从网通IP过来的请求从网通路由返回
将上述命令添加至/etc/rc.local中,以便重启可以生效
[root@lamp ~]# ip rule show
0: from all lookup 255
32764: from 112.80.1.100 lookup wangtong
32765: from 222.73.121.100 lookup dianxin
32766: from all lookup main
32767: from all lookup default
重启网络服务可以看到路由策略生效。
:https://blog.csdn.net/u013018618/article/details/80097584
linux下添加路由的方法
(本章节转自:Linux下使用route添加路由-良许Linux教程网 -https://www.lxlinux.net/6753.html)
使用 route 命令
一:使用 route 命令添加
使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法:
#添加到主机的路由#
route add –host 192.168.168.110 dev eth0
# route add –host 192.168.168.119 gw 192.168.168.1#添加到网络的路由#
route add –net IP netmask MASK eth0
# route add –net IP netmask MASK gw IP
# route add –net IP/24 eth1
#添加默认网关
# route add default gw IP
#删除路由#
route del –host 192.168.168.110 dev eth0
#添加一条路由(发往192.168.62这个网段的全部要经过网关192.168.1.1)
route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.1.1
#删除一条路由 删除的时候不用写网关 route del -net 192.168.122.0 netmask 255.255.255.0
二:在linux下设置永久路由的方法:
1.在/etc/rc.local里添加
route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.3.254
2.在/etc/sysconfig/network里添加到末尾 GATEWAY=gw-ip
或者 GATEWAY=gw-dev
3./etc/sysconfig/static-router :
any net x.x.x.x/24 gw y.y.y.y
Route命令的正确用法
使用 Route 命令行工具查看并编辑计算机的 IP 路由表。Route 命令和语法如下所示:
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]
1
-f
清除所有网关入口的路由表。 -p
与 add
命令一起使用时使路由具有永久性。 Command
指定您想运行的命令 (Add/Change/Delete/Print
)。 Destination
指定该路由的网络目标。 mask Netmask
指定与网络目标相关的网络掩码(也被称作子网掩码)。 Gateway
指定网络目标定义的地址集和子网掩码可以到达的前进或下一跃点 IP 地址。 metric Metric
为路由指定一个整数成本值标(从 1
至 9999
),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用。 if Interface
为可以访问目标的接口指定接口索引。若要获得一个接口列表和它们相应的接口索引,使用 route print
命令的显示功能。可以使用十进制或十六进制值进行接口索引。 ?
在命令提示符处显示帮助。 示例 route print
显示 IP 路由表的全部内容
route print 10.*
显示以 10. 起始的 IP 路由表中的路由
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
添加带有 192.168.12.1
默认网关地址的默认路由
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1
向带有 255.255.0.0
子网掩码和 10.27.0.1
下一跃点地址的 10.41.0.0
目标中添加一个路由
route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1
向带有 255.255.0.0
子网掩码和 10.27.0.1
下一跃点地址的 10.41.0.0
目标中添加一个永久路由
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7
向带有 255.255.0.0
子网掩码、10.27.0.1
下一跃点地址且其成本值标为 7
的 10.41.0.0
目标中添加一个路由
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3
向带有 255.255.0.0
子网掩码、10.27.0.1
下一跃点地址且使用 0x3
接口索引的 10.41.0.0
目标中添加一个路由
route delete 10.41.0.0 mask 255.255.0.0
删除到带有 255.255.0.0
子网掩码的 10.41.0.0
目标的路由
route delete 10.*
删除以 10.
起始的 IP 路由表中的所有路由
route change 10.41.0.0 mask 255.255.0.0 10.27.0.25`将带有 `10.41.0.0` 目标和 `255.255.0.0` 子网掩码的下一跃点地址从 `10.27.0.1` 修改为 `10.27.0.25
传统的网络配置命令
-
使用ifconfig命令配置并查看网络接口情况
#示例1: 配置eth0的IP,同时激活设备:
ifconfig eth0 192.168.4.1 netmask 255.255.255.0 up
#示例2: 配置eth0别名设备 eth0:1 的IP,并添加路由
ifconfig eth0:1 192.168.4.2
route add –host 192.168.4.2 dev eth0:1
#示例3:激活(禁用)设备
ifconfig eth0:1 up(down)
#示例4:查看所有(指定)网络接口配置
ifconfig (eth0)
\2. 使用route 命令配置路由表
示例1:添加到主机路由
route add –host 192.168.4.2 dev eth0:1
route add –host 192.168.4.1 gw 192.168.4.250
示例2:添加到网络的路由
route add –net IP netmask MASK eth0
route add –net IP netmask MASK gw IP
route add –net IP/24 eth1
示例3:添加默认网关
route add default gw IP
示例4:删除路由
route del –host 192.168.4.1 dev eth0:1
示例5:查看路由信息
route 或 route -n (-n 表示不解析名字,列出速度会比route 快)
3.ARP 管理命令
示例1:查看ARP缓存
arp
示例2: 添加
arp –s IP MAC
示例3: 删除
arp –d IP
\4. ip
是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具。例如:ifconfig、route
等, 上面的示例完全可以用下面的ip命令实现,而且ip命令可以实现更多的功能.下面介绍一些示例: 4.0 ip命令的语法
ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]
4.1 ip link set–改变设备的属性. 缩写:set、s
示例1:up/down 起动/关闭设备。
# ip link set dev eth0 up
这个等于传统的 # ifconfig eth0 up(down)
示例2:改变设备传输队列的长度。
参数:txqueuelen NUMBER或者txqlen NUMBER
# ip link set dev eth0 txqueuelen 100
示例3:改变网络设备MTU(最大传输单元)的值。
# ip link set dev eth0 mtu 1500
示例4: 修改网络设备的MAC地址。
参数: address LLADDRESS
# ip link set dev eth0 address 00:01:4f:00:15:f1
4.2 ip link show
–显示设备属性. 缩写:show、list、lst、sh、ls、l 、-s
选项出现两次或者更多次,ip会输出更为详细的错误信息统计。
示例:
# ip -s -s link ls eth0
eth0: mtu 1500 qdisc cbq qlen 100
link/ether 00:a0:cc:66:18:78 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
2449949362 2786187 0 0 0 0
RX errors: length crc fifo missed
0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
178558497 1783946 332 0 332 35172
TX errors: aborted fifo window heartbeat
0 0 0 332
这个命令等于传统的 ifconfig eth0
5.1 ip address add-
-添加一个新的协议地址. 缩写:add、a
示例1:为每个地址设置一个字符串作为标签。为了和Linux-2.0的网络别名兼容,这个字符串必须以设备名开头,接着一个冒号,
# ip addr add local 192.168.4.1/28 brd + label eth0:1 dev eth0
示例2: 在以太网接口eth0上增加一个地址192.168.20.0,掩码长度为24位(155.155.155.0),标准广播地址,标签为eth0:Alias:
# ip addr add 192.168.4.2/24 brd + dev eth1 label eth1:1
这个命令等于传统的: ifconfig eth1:1 192.168.4.2
5.2 ip address delete
–删除一个协议地址. 缩写:delete、del、d
# ip addr del 192.168.4.1/24 brd + dev eth0 label eth0:Alias1
5.3 ip address show
–显示协议地址. 缩写:show、list、lst、sh、ls、l
# ip addr ls eth0
5.4.ip address flush–清除协议地址. 缩写:flush、f
示例1 : 删除属于私网10.0.0.0/8的所有地址:
# ip -s -s a f to 10/8
示例2 : 取消所有以太网卡的IP地址
# ip -4 addr flush label "eth0"
-
ip neighbour--neighbour/arp
表管理命令 缩写 neighbour、neighbor、neigh、n 命令 add、change、replace、delete、fulsh、show(或者list) 6.1ip neighbour add
– 添加一个新的邻接条目ip neighbour change
–修改一个现有的条目ip neighbour replace
–替换一个已有的条目 缩写:add、a;change、chg;replace、repl
示例1: 在设备eth0上,为地址10.0.0.3添加一个permanent ARP条目:
# ip neigh add 10.0.0.3 lladdr 0:0:0:0:0:1 dev eth0 nud perm
示例2:把状态改为reachable
# ip neigh chg 10.0.0.3 dev eth0 nud reachable
6.2.ip neighbour delete–删除一个邻接条目 示例1:删除设备eth0上的一个ARP条目10.0.0.3
# ip neigh del 10.0.0.3 dev eth0
6.3.ip neighbour show–显示网络邻居的信息. 缩写:show、list、sh、ls
# ip -s n ls 193.233.7.254 193.233.7.254. dev eth0 lladdr 00:00:0c:76:3f:85 ref 5 used 12/13/20 nud reachable
6.4.ip neighbour flush–清除邻接条目. 缩写:flush、f 示例1: (-s 可以显示详细信息)
# ip -s -s n f 193.233.7.254
使用ip route 命令
-
路由表管理 7.1.缩写 route、ro、r 7.2.路由表 从Linux-2.2开始,内核把路由归纳到许多路由表中,这些表都进行了编号,编号数字的范围是1到255。另外,为了方便,还可以在/etc/iproute2/rt_tables中为路由表命名。 默认情况下,所有的路由都会被插入到表main(编号254)中。在进行路由查询时,内核只使用路由表main。 7.3.
ip route add
– 添加新路由ip route change
– 修改路由ip route replace
– 替换已有的路由 缩写:add、a;change、chg;replace、repl 示例1: 设置到网络10.0.0/24的路由经过网关193.233.7.65
# ip route add 10.0.0/24 via 193.233.7.65
示例2: 修改到网络10.0.0/24的直接路由,使其经过设备dummy
# ip route chg 10.0.0/24 dev dummy
示例3: 实现链路负载平衡.加入缺省多路径路由,让ppp0和ppp1分担负载(注意:scope值并非必需,它只不过是告诉内核, 这个路由要经过网关而不是直连的。实际上,如果你知道远程端点的地址,使用via参数来设置就更好了)。
# ip route add default scope global nexthop dev ppp0 nexthop dev ppp1# ip route replace default scope global nexthop dev ppp0 nexthop dev ppp1
示例4: 设置NAT路由。在转发来自192.203.80.144的数据包之前,先进行网络地址转换,把这个地址转换为193.233.7.83
# ip route add nat 192.203.80.142 via 193.233.7.83
示例5: 实现数据包级负载平衡,允许把数据包随机从多个路由发出。weight 可以设置权重.
# ip route replace default equalize nexthop via 211.139.218.145 dev eth0 weight 1 nexthop via 211.139.218.145 dev eth1 weight 1
7.4.ip route delete
– 删除路由 缩写:delete、del、d 示例1:删除上一节命令加入的多路径路由
# ip route del default scope global nexthop dev ppp0 nexthop dev ppp1
7.5.ip route show – 列出路由 缩写:show、list、sh、ls、l 示例1: 计算使用gated/bgp协议的路由个数
# ip route ls proto gated/bgp |wc
1413 9891 79010
12
示例2: 计算路由缓存里面的条数,由于被缓存路由的属性可能大于一行,以此需要使用-o选项
# ip -o route ls cloned |wc
159 2543 18707
示例3: 列出路由表TABLEID里面的路由。缺省设置是table main。TABLEID或者是一个真正的路由表ID或者是/etc/iproute2/rt_tables文件定义的字符串, 或者是以下的特殊值: all
– 列出所有表的路由; cache
– 列出路由缓存的内容。
ip ro ls 193.233.7.82 tab cache
示例4: 列出某个路由表的内容
# ip route ls table fddi153
示例5: 列出默认路由表的内容
# ip route ls
这个命令等于传统的: route 7.6.ip route flush – 擦除路由表 示例1: 删除路由表main中的所有网关路由(示例:在路由监控程序挂掉之后):
# ip -4 ro flush scope global type unicast
示例2:清除所有被克隆出来的IPv6路由:
# ip -6 -s -s ro flush cache
示例3: 在gated程序挂掉之后,清除所有的BGP路由:
# ip -s ro f proto gated/bgp
示例4: 清除所有ipv4路由cache
# ip route flush cache
*** IPv4 routing cache is flushed.
7.7 ip route get – 获得单个路由 .缩写:get、g 使用这个命令可以获得到达目的地址的一个路由以及它的确切内容。 ip route get命令和ip route show命令执行的操作是不同的。ip route show命令只是显示现有的路由,而ip route get命令在必要时会派生出新的路由。 示例1: 搜索到193.233.7.82的路由
# ip route get 193.233.7.82
193.233.7.82 dev eth0 src 193.233.7.65 realms inr.ac cache mtu 1500 rtt 300
示例2: 搜索目的地址是193.233.7.82,来自193.233.7.82,从eth0设备到达的路由(这条命令会产生一条非常有意思的路由,这是一条到193.233.7.82的回环路由)
# ip r g 193.233.7.82 from 193.233.7.82 iif eth0
193.233.7.82 from 193.233.7.82 dev eth0 src 193.233.7.65 realms inr.ac/inr.accachemtu 1500 rtt 300 iif eth0
-
ip route
– 路由策略数据库管理命令 命令 add、delete、show(或者list) 注意:策略路由(policy routing)不等于路由策略(rouing policy)。 在某些情况下,我们不只是需要通过数据包的目的地址决定路由,可能还需要通过其他一些域:源地址、IP协议、传输层端口甚至数据包的负载。 这就叫做:策略路由(policy routing)。 8.1. ip rule add – 插入新的规则 ip rule delete – 删除规则 缩写:add、a;delete、del、d
示例1: 通过路由表inr.ruhep路由来自源地址为192.203.80/24的数据包
ip ru add from 192.203.80/24 table inr.ruhep prio 220
示例2:把源地址为193.233.7.83的数据报的源地址转换为192.203.80.144,并通过表1进行路由
ip ru add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320
示例3:删除无用的缺省规则
ip ru del prio 32767
8.2. ip rule show – 列出路由规则 缩写:show、list、sh、ls、l
示例1: # ip ru ls
0: from all lookup local
32762: from 192.168.4.89 lookup fddi153
32764: from 192.168.4.88 lookup fddi153
32766: from all lookup main
32767: from all lookup 253
-
ip maddress – 多播地址管理 缩写:show、list、sh、ls、l 9.1.ip maddress show – 列出多播地址 示例1: # ip maddr ls dummy 9.2. ip maddress add – 加入多播地址 ip maddress delete – 删除多播地址 缩写:add、a;delete、del、d 使用这两个命令,我们可以添加/删除在网络接口上监听的链路层多播地址。这个命令只能管理链路层地址。
示例1: 增加 # ip maddr add 33:33:00:00:00:01 dev dummy
示例2: 查看 # ip -O maddr ls dummy
2: dummy
link 33:33:00:00:00:01 users 2 static
link 01:00:5e:00:00:01
示例3: 删除 # ip maddr del 33:33:00:00:00:01 dev dummy
10.ip mroute – 多播路由缓存管理 10.1. ip mroute show – 列出多播路由缓存条目 缩写:show、list、sh、ls、l
示例1:查看 # ip mroute ls
(193.232.127.6, 224.0.1.39) Iif: unresolved
(193.232.244.34, 224.0.1.40) Iif: unresolved
(193.233.7.65, 224.66.66.66) Iif: eth0 Oifs: pimreg
示例2:查看 # ip -s mr ls 224.66/16
(193.233.7.65, 224.66.66.66) Iif: eth0 Oifs: pimreg
9383 packets, 300256 bytes
-
ip tunnel – 通道配置 缩写 tunnel、tunl 11.1.ip tunnel add – 添加新的通道 ip tunnel change – 修改现有的通道 ip tunnel delete – 删除一个通道 缩写:add、a;change、chg;delete、del、d 示例1:建立一个点对点通道,最大TTL是32
# ip tunnel add Cisco mode sit remote 192.31.7.104 local 192.203.80.1 ttl 32
11.2.ip tunnel show – 列出现有的通道 缩写:show、list、sh、ls、l
示例1: # ip -s tunl ls Cisco
-
ip monitor
和rtmon
– 状态监视 ip命令可以用于连续地监视设备、地址和路由的状态。这个命令选项的格式有点不同,命令选项的名字叫做monitor,接着是操作对象: ip monitor [ file FILE ] [ all | OBJECT-LIST ]示例1: # rtmon file /var/log/rtmon.log 示例2: # ip monitor file /var/log/rtmon.log r
查看当前系统是否支持路由转发功能
方式1:
# sysctl net.ipv4.ip_forward#查看
#sysctl -w net.ipv4.ip_forward=1 #立即生效,重启网络失效
# vi /etc/sysctl.conf
==>net.ipv4.ip_forward = 1 #1为开启,0为关闭
#systemctl restart network#重启网络生效,永久
方式2:
#vim /etc/sysconfig/network
==>FORWARD_IPV4=YES #添加
#systemctl restart network#重启网络生效,永久
使用ip rule查看路由策略数据库
ip rule list
在 Linux 系统启动时,内核会为路由策略数据库配置三条缺省的规则:
rule 0 匹配任何条件 查询路由表local(ID 255) 路由表local是一个特殊的路由表,包含对于本地和广播地址的高优先级控制路由。rule 0非常特殊,不能被删除或者覆盖。
rule 32766 匹配任何条件 查询路由表main(ID 254) 路由表main(ID 254)是一个通常的表,包含所有的无策略路由。系统管理员可以删除或者使用另外的规则覆盖这条规则。
rule 32767 匹配任何条件 查询路由表default(ID 253) 路由表default(ID 253)是一个空表,它是为一些后续处理保留的。对于前面的缺省策略没有匹配到的数据包,系统使用这个策略进行处理。这个规则也可以删除。
————————————————
https://blog.csdn.net/liuqun69/article/details/88888893
IP-route管理路由
摘自:https://blog.csdn.net/chengxuyuanyonghu/article/details/39558643
一、高级路由的基础IP ROUTE2
基本命令:
ip link list 显示ip链路状态信息
ip address show 除显示所有网络地址
ip route show 显示主路由表信息
ip neigh show 显示邻居表
linux系统路由表
linux可以自定义从1-252个路由表,
linux系统维护了4个路由表:
0#表 系统保留表
253#表 defulte table 没特别指定的默认路由都放在改表
254#表 main table 没指明路由表的所有路由放在该表
255#表 locale table 保存本地接口地址,广播地址、NAT地址 由系统维护,用户不得更改
路由表的查看可有以下二种方法:
ip route list table table_number
ip route list table table_name
路由表序号和表名的对应关系在/etc/iproute2/rt_tables中,可手动编辑
路由表添加完毕即时生效,下面为实例
ip route add default via 192.168.1.1 table 1 在一号表中添加默认路由为192.168.1.1
ip route add 192.168.0.0/24 via 192.168.1.2 table 1 在一号表中添加一条到192.168.0.0网段的路由为192.168.1.2
注:各路由表中应当指明默认路由,尽量不回查路由表.路由添加完毕,即可在路由规则中应用..
二、高级路由重点之一路由规则 ip rule
进行路由时,根据路由规则来进行匹配,按优先级(pref)从低到高匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的..
ip rule show 显示路由规则
路由规则的添加
ip rule add from 192.168.1.10/32 table 1 pref 100
如果pref值不指定,则将在已有规则最小序号前插入
注:创建完路由规则若需立即生效须执行#ip route flush cache;刷新路由缓冲
可参数解析如下: &n
From -- 源地址
To -- 目的地址(这里是选择规则时使用,查找路由表时也使用)
Tos -- IP包头的TOS(type of sevice)域Linux高级路由-
Dev -- 物理接口
Fwmark -- iptables标签
采取的动作除了指定路由表外,还可以指定下面的动作:
Table 指明所使用的表
Nat 透明网关
Prohibit 丢弃该包,并发送 COMM.ADM.PROHIITED的ICMP信息
Reject 单纯丢弃该包
Unreachable丢弃该包, 并发送 NET UNREACHABLE的ICMP信息
具体格式如下:更强大,使用更灵活,它使网络管理员不仅能
Usage: ip rule [ list | add | del ] SELECTOR ACTION
SELECTOR := [ from PREFIX ] [ to PREFIX ] [ tos TOS ][ dev STRING ] [ pref NUMBER ]
ACTION := [ table TABLE_ID ] [ nat ADDRESS ][ prohibit | reject | unreachable ]
[ flowid CLASSID ]
TABLE_ID := [ local | main | default | new | NUMBER ]
-
策略路由
基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址来选择转发路径...
#/etc/iproute2/rt_tables 此文件存有linux 系统路由表默认表有255 254 253三张表
255 local 本地路由表存有本地接口地址,广播地址,已及NAT地址.
local表由系统自动维护..管理员不能操作此表...
254 main 主路由表 传统路由表,ip route若没指定表亦操作表254.一般存所有的路由..
注:平时用ip ro sh查看的亦是此表设置的路由. -
253 default 默认路由表一般存放默认路由... -
注:rt_tables文件中表以数字来区分表0保留最多支持255张表 -
路由表的查看可有以下二种方法:
#ip route list table table_number
#ip route list table table_name
路由表添加完毕,即可在策略路由表内添加路由例:
#ip route add 192.168.1.0/24 dev eth0 via 192.168.1.66 realm 4
注:发往子网192.168.1.0/24的数据包通过分类4转发配合tc使用,后文有介绍讲解...
#ip route add default via 192.168.1.1 table int1
#ip route add 192.168.1.0/24 via 192.168.1.1 table int2
#ip route add 172.16.0.2/16 via 172.16.0.1 table int3
注:各路由表中应当指明默认路由,尽量不回查路由表.路由添加完毕,即可在路由规则中应用..
#ip rule show 显示路由规则
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
进行路由时,正是根据路由规则来进行匹配,按优先级(pref后数值)从高到低匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的..
策略路由一般手工添加路由表,路由表的添加只需编辑rt_tables文件,规定表序号,表名即可..
ip rule规则添加示例:
#ip rule add from 192.168.1.112/32 [tos 0x10] table test2 pref 999 prohibit
#ip rule add to 192.168.1.2 pref 1000 table test1
#ip rule add from 192.168.1.0/24 pref 1001 table test1
#ip rule add [from 0/0] table test1 pref 1003
#ip rule add fwmark 1 pref 1002 table test2 此句型配合iptables -t mangle应用.如先对数据
包作标记:
#iptables -t mangle -A PREROUTING -p tcp -m multiport
--dports 80,8080,20,21 -s 192.168.1.0/24 -j MARK --set-mark
2.网卡捆绑(网关linux+多网卡)
#modprobe bonding mod=1 miimon=200 primary=eth1 创建bond0,模式为1,主网卡eth1..
#ip addr add dev bond$ 10.0.0.1/24 设置bond0的IP
#ifenslave bond0 eth1 eth2 添加绑定的dev
注:mode=0 轮转均衡(默认模式),此模式MAC频繁切换导致交换机负载大..
mode=1 主备模式 用primary指定网卡
mode=4 常用 802.3ad模式,动态链路采集模式.此模式要求SWITCH捆绑..
miimon=ms 每隔多少毫秒查询链路是否有效.
其它参数如:
arp_interval=ms
arp_ip_target=*.*.*.*
另一种网卡捆绑固化方式:
#vi /etc/modules.conf 加入以下行
alias bond0 bonding
系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0..
#cd /etc/sysconfig/network-scripts
#vi ifcfg-bond0
DEVICE=bond0
IPADDR=11.0.0.1
NETMASK=255.0.0.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
#vi ifcfg-eth0
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
#vi ifcfg-eth1
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
#/etc/init.d/network restart 重启网络服务验证网卡的配置信息备份网卡被加上了NOARP标记
#cat /proc/net/bond0/info 查看bond信息
3.网桥(Linux+多网卡)
配置工具 brctl http://bridge.sourceforge.net/ 源码包名:bridge-utils-*形式
安装第一步:autoconf 后类同于源码包安装..
例.linu+二网卡eth0 eth1 配置成网桥
配置前去除加入网桥的eth0 eth1的IP
#ifconfig eth0/eth1 down
#ifconfig eth0/eth1 0.0.0.0 up
#brctl addbr br0
#brctl addif br0 eth0 eth1
#ip li set dev br0 up
#brctl showmacs br0 显示网桥MAC
撤网桥:
#ip li set dev br0 down
#brctl delif br0 eth0 eth1
#brctl delbr br0
网桥接口处亦可进行流量控制,无Ip的linux网桥可有效防御外界的功击,对linux网桥机的总控安全性高...
贴上一篇网桥应用实例,此实例是网桥的一种扩张应用...
脚本名:start_bridge.sh
#!/bin/sh
brctl addbr net1
brctl addif net1 eth0
ifconfig eth0 down
ifconfig eth0 0.0.0.0 up
ifconfig net1 192.168.5.1 up
#ip ro del 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.28
ip ro del 192.168.1.0/24
#route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.5.2
ip route add default via 192.168.5.2
echo "1" > /proc/sys/net/ipv4/ip_forward
Linux高级路由需结合iptables才能充分体现其功能
查看路由表内容在查看路由表之前,首先使用ip rule show命令来查看目前使用了哪些路由表,接着,再使用ip route show [table id | name]命令来查看路由表的内容。例如,可以使用ip route show table main来查看路由表main的内容,如果省略路由表名称(如ip route show),会默认地查看路由表main的内容。
1. [root@localhost /]# ip rule show
2. 0: from all lookup local
3. 32766: from all lookup main
4. 32767: from all lookup default
5. [root@localhost /]#
6. [root@localhost /]# ip route show table main
7. 10.10.15.0/25 dev eth0 proto kernel scope link src 10.10.15.46
8. 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10
9. default via 10.10.15.1 dev eth0
10. [root@localhost /]#
在默认情况下,系统有三个路由表,这三个路由表的功能如下:
local:路由表local包含本机路由及广播信息。例如,在本机上执行ssh 127.0.0.1时,就会参考这份路由表的内容,在正常情况下,只要配置好网卡的网络设置,就会自动生成local路由表的内容,我们应该也不必修改其内容。
main:使用传统命令route -n所看到的路由表就是main的内容。Linux系统在默认情况下使用这份路由表的内容来传输数据包,因此,其内容极为重要,在正常情况下,只要配置好网卡的网络设置,就会自动生成main路由表的内容。
default:最后是default路由表,这个路由表在默认情况下内容为空;除非有特别的要求,否则保持其内容为空即可。
在此使用路由表main的内容进行解释,以下是图10-10路由表main的内容,因为在主机上有eth0及eth1两块网卡,且为其设置的IP分别是10.10.15.46/25及192.168.1.10/24,因此,路由表内的第.行即是告诉系统,如果有数据包要送到10.10.15.0/25这个网段,就直接将数据包由eth0接口送出即可,而本机临近这个网段的IP是10.10.15.46,第.行则是设置到192.168.1.0/24的路由,其含义与第.行完全相同;以上这两行是只要将计算机网卡上的IP设置好,并在网络服务重启之后,默认就会生成的路由,无需特别的设置。最后一行.则指:如果数据包不是送往10.10.15.0/25及192.168.1.0/24网段,那么数据包将统一转发给10.10.15.1主机去处理,而10.10.15.1就是我们在网络配置中所设置的“默认网关”。
1. [root@localhost /]# ip route show table main
2. 10.10.15.0/25 dev eth0 proto kernel scope link src 10.10.15.46
3. 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10
4. default via 10.10.15.1 dev eth0
5. [root@localhost /]#
2. 添加路由
添加路由在此还是一样采用ip命令而不是route命令,下例首先使用ip route show.命令显示路由表main的内容,接着再使用ip route add命令将所需的路由添加到路由表main中.,最后再次使用ip route show命令将路由表main的内容打印出来,此时就可以在路由表main之中看到刚才添加的路由了。
1. [root@localhost /]# ip route show table main
2. 10.10.15.0/25 dev eth0 proto kernel scope link src 10.10.15.46
3. 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10
4. default via 10.10.15.1 dev eth0
5. [root@localhost /]#
6. [root@localhost /]# ip route add 192.168.2.0/24 via 10.10.15.50 table main
7. [root@localhost /]#
8. [root@localhost /]# ip route show table main
9. 10.10.15.0/25 dev eth0 proto kernel scope link src 10.10.15.46
10. 192.168.2.0/24 via 10.10.15.50 dev eth0
11. 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10
12. default via 10.10.15.1 dev eth0
13. [root@localhost /]#
如果要添加的路由并未出现在现有的路由表中,又该如何处理呢?在此请先有一个概念,单纯添加路由表并无意义,因为新增出来的路由表,系统默认是不会去使用的,如果要将路由添加到main以外的路由表,只有先添加“规则”才能确定新的路由表名称(Table ID),有了新的路由表之后,才会把路由添加到新的路由表中。
我们使用下列示例来说明这个过程。首先使用ip rule show.来查询RPDB的当前状态,可以看到目前只有三条默认规则,接着,再使用ip rule add命令来添加一条规则.,此时系统内就多了一个有用的路由表,其路由表ID为10,我们可以立即使用ip route show命令来查看这个新的路由表.,其内容默认为空,接着可以在这个新路由表中添加路由,在此使用iproute add命令来添加路由,我们决定凡是来自于192.168.2.0/24网段的数据包,都从eth1接口将数据包送离本机,因此,必须完整编写eth1接口的路由。首先将临近eth1接口的路由填入.,告诉系统本机与192.168.1.0/24网段的通信都通过eth1接口来处理,接着填入这个路由表的默认路由.,最后使用ip route show命令显示路由表10的内容。
1. [root@localhost ~]# ip rule show
2. 0: from all lookup local
3. 32766: from all lookup main
4. 32767: from all lookup default
5. [root@localhost ~]#
6. [root@localhost ~]# ip rule add from 192.168.2.0/24 table 10
7. [root@localhost ~]#
8. [root@localhost ~]# ip route show table 10
9. [root@localhost ~]#
10. [root@localhost ~]# ip route add 192.168.1.0/24 dev eth1 table 10
11. [root@localhost ~]# ip route add default via 192.168.1.254 table 10
12. [root@localhost ~]#
13. [root@localhost ~]# ip route show table 10
14. 192.168.1.0/24 dev eth1 scope link
15. default via 192.168.1.254 dev eth1
16. [root@localhost ~]#
3. 删除路由
可以使用ip命令来方便地删除路由,我们使用以下示例来说明如何删除路由。首先将路由表10的内容显示出来.,可以看到路由表10中当前有两条路由,接着使用ip route del命令删除默认路由.,在此别忘了指定我们所要删除的是路由表10,否则默认会删除路由表main的默认路由,接着再使用ip route show 命令查看路由表10.,此时路由表10的默认路由已经不存在了,再次使用ip route del命令删除192.168.122.0/24的路由.,最后可以看到路由表10中已经没有任何路由了。
1. [root@localhost ~]# ip route show table 10
2. 192.168.1.0/24 dev virbr0 scope link
3. default via 192.168.1.254 dev eth1
4. [root@localhost ~]#
5. [root@localhost ~]# ip route del default table 10
6. [root@localhost ~]#
7. [root@localhost ~]# ip route show table 10
8. 192.168.1.0/24 dev virbr0 scope link
9. [root@localhost ~]#
10. [root@localhost ~]# ip route del 192.168.1.0/24 table 10
11. [root@localhost ~]#
12. [root@localhost ~]# ip route show table 10
13. [root@localhost ~]#
1. 查看策略数据库
要查看策略数据库的内容,可以使用ip rule show命令,或者可以使用ip rule ls。如下是命令执行后所得到的输出结果,在这些数据中,可以看到系统的三条默认规则,而这三条规则默认分别对应于local、mail及default三个路由表。
1. [root@localhost /]# ip rule show
2. 0: from all lookup local
3. 32766: from all lookup main
4. 32767: from all lookup default
2. 添加规则
在添加规则时,必须先确定好“条件”、“优先级别”及“路由表ID”,此后才可以执行添加规则的操作。关于这三个参数的含义,我们根据图10-5再说明一次:
条件
条件是用来决定哪类数据包可以符合这项规则,而可用来匹配的字段为Source IP、Destination IP、Type of Service、fwmark及dev等,这些字段的使用方式如下:
Source IP:
根据来源端IP来决定数据包参考哪个路由表发送出去。以下两个示例分别指出,如果数据包的来源端IP是192.168.1.10,就参考路由表10;如果来源端IP为192.168.2.0/24网段的IP,就参考路由表20。
1. ip rule add from 192.168.1.10 table 10
2. ip rule add from 192.168.2.0/24 table 20
Destination IP:
根据目的端IP来决定数据包参考哪个路由表发送出去。以下两个示例分别指出,如果数据包的目的端IP是168.95.1.1,就参考路由表10;如果目的端IP是168.95.0.0/24网段的IP,就参考路由表20。
1. ip rule add to 168.95.1.1 table 10
2. ip rule add to 168.96.0.0/24 table 20
fwmark:
fwmark指第3章所提到过的nfmark,如果你已忘了nfmark的含义,不妨参考第2.2.6节。将fwmark作为匹配条件时,必须搭配Netfilter一起使用, 这看起来很麻烦, 却是最灵活的匹配条件。如图10-8所示,某公司对外有三条ADSL,我们希望所有HT T P 协议经由第一条ADS L ,SMTP及POP3经由第二条ADSL,其余流量则经由第三条ADSL。可以使用如下的命令组合来达到这样的目的:
图10-8 fwmark示例
1. iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 80 -j MARK --set-mark 1
2. iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 25 -j MARK --set-mark 2
3. iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 110 -j MARK --set-mark 2
4. iptables -t mangle -A FORWARD -i eth3 -j MARK --set-mark 3
5. ip rule add fwmark 1 table 1
6. ip rule add fwmark 2 table 2
7. ip rule add fwmark 3 table 3
首先使用Netfilter的managle机制针对特定的数据包设置MARK值,在此将HTTP数据包的MARK值设置为1,SMTP及POP3数据包的MARK值设置为2,其余数据包则设置MARK值为3。接着,再根据fwmark条件来判断数据包的MARK值,如果MARK值为1,则参考路由表1将数据包送出;MAKR值为2时,则参考路由表2将数据包送出;最后,MARK值为3的数据包则参考路由表3送出。
以上示例只是一个概念而已,如果真要完整体现出这个示例的所有功能,还需要注意许多细节,稍后将使用详细的示例讲解这部分内容,在此只要首先了解fwmark与Netfilter结合使用的概念即可。
dev:
最后,还可以使用数据包输入的接口来作为判断依据,如图10-9所示,我们希望凡是由eth2接口送入的数据包都由eth0接口转发出去,由eth3接口送入的数据包都由eth1接口转发出去。以下命令组合将能满足我们的要求:
1. ip rule add dev eth2 table 1
2. ip rule add dev eth3 table 3
图10-9 接口示例
3. 优先级别
前面介绍了规则中“条件”的使用方式,接下来要讨论的是优先级别。优先级别用数字来表示,其范围可由0~4亿多,堪称天文数字,我们实际上不可能在一台PC上设置如此庞大的路由机制。
1. [root@localhost ~]# ip rule show
2. 0: from all lookup local
3. 32766: from all lookup main
4. 32767: from all lookup default
5. [root@localhost ~]#
6. [root@localhost ~]# ip rule add from 192.168.1.0/24 table 1
7. [root@localhost ~]# ip rule add from 192.168.2.0/24 table 2
8. [root@localhost ~]#
9. [root@localhost ~]# ip rule show
10. 0: from all lookup local
11. 32764: from 192.168.2.0/24 lookup 2
12. 32765: from 192.168.1.0/24 lookup 1
13. 32766: from all lookup main
14. 32767: from all lookup default
如以上示例,我们执行ip rule show命令所显示内容的第一个字段就是优先级别,数字越小,代表优先级别越高,也代表这条规则可以排得越靠前,如此数据包在进行条件匹配时,就会越早匹配到这条规则,从输出的数据中,默认优先级别0、32766及32767已被占用,因此,在添加规则时,如果没有特别设置优先级别,那么,优先级别默认会从32766开始递减,如32765、32764……,如果我们需要特别设置优先级别,可以在ip rule add命令的最后加上prio XXX参数。如下例所示:
1. [root@localhost ~]# ip rule show
2. 0: from all lookup local
3. 32766: from all lookup main
4. 32767: from all lookup default
5. [root@localhost ~]#
6. [root@localhost ~]# ip rule add from 192.168.1.0/24 table 1 prio 10
7. [root@localhost ~]# ip rule add from 192.168.2.0/24 table 2 prio 20
8. [root@localhost ~]#
9. [root@localhost ~]# ip rule show
10. 0: from all lookup local
11. 10: from 192.168.1.0/24 lookup 1
12. 20: from 192.168.2.0/24 lookup 2
13. 32766: from all lookup main
14. 32767: from all lookup default
路由表ID
在Linux的基于策略的路由中,路由表用ID来表示,但如有必要,还可以用ID与名称对照表将ID转换成名称,关于这部分请参考第10.2.1节。
4. 删除规则
ip命令提供的删除规则的方式十分灵活,例如,要删除下列第2条规则,可以分别使用“优先级别”、“条件”及“路由表”当中任何一个唯一的值来设置所需删除的规则,如下:
ip rule del prio 10
ip rule del from 192.168.1.0/24
ip rule del table 1
ip rule del from 192.168.1.0/24 table 1 prio 10
1. [root@localhost ~]# ip rule show
2. 0: from all lookup local
3. 10: from 192.168.1.0/24 lookup 1
4. 20: from 192.168.2.0/24 lookup 2
5. 32766: from all lookup main
6. 32767: from all lookup default
7. [root@localhost ~]#