欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

linux中路由、策略路由的配置

程序员文章站 2022-03-23 09:27:42
路由 网关:到其他网段的出口 动态路由:是路由器自动创建的路由表,当网络结构发生变化时,路由器会更具网络情况自动修改路由表。 静态路由:手动制定的路由表,网卡架构发生变化时需要手动修改路...
路由

网关:到其他网段的出口

动态路由:是路由器自动创建的路由表,当网络结构发生变化时,路由器会更具网络情况自动修改路由表。
静态路由:手动制定的路由表,网卡架构发生变化时需要手动修改路由表。

启用路由

临时启用路由功能

[root@snat ~]# cat /proc/sys/net/ipv4/ip_forward
1

永久启动路由功能

[root@snat ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

[root@snat ~]# sysctl -p    #读取配置文件
net.ipv4.ip_forward = 1
设置路由

临时路由

[root@snat ~]# route add -net 192.168.80.0 netmask 255.255.255.0 gw 192.168.6.1

永久路由

[root@snat ~]# vim /etc/sysconfig/network-scripts/route-eth1
ADDRESS0=192.168.7.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.6.1
路由表

查看在linux中所有的路由表

[root@ecs-wyy-snt ~]# cat /etc/iproute2/rt_tables 
#
# reserved values
#
255 local   #本地路由表
254 main    #主要路由表,使用命令ip route 或者 route -n 打印的都是这个路由表中的内容
253 default  #可以存放默认路由,如果不指定该表,默认路由存放在main表中
0   unspec  

格式:路由表的编号 路由表的名称

查看制定路由表中的路由

[root@snat ~]# ip route show table test
default via 192.168.6.1 dev eth1

查看默认的主路由表中的路由

default via 192.168.6.1 dev eth1 
[root@snat ~]# ip route
169.254.169.254 via 192.168.6.1 dev eth0  proto static 
192.168.6.0/24 dev eth0  proto kernel  scope link  src 192.168.6.39 
192.168.6.0/24 dev eth1  proto kernel  scope link  src 192.168.6.36 
192.168.6.0/24 dev eth2  proto kernel  scope link  src 192.168.6.20 
169.254.0.0/16 dev eth0  scope link  metric 1002 
169.254.0.0/16 dev eth1  scope link  metric 1005 
169.254.0.0/16 dev eth2  scope link  metric 1006 
default via 192.168.6.1 dev eth0  proto static 

[root@snat ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.169.254 192.168.6.1     255.255.255.255 UGH   0      0        0 eth0
192.168.6.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

0.0.0.0         192.168.6.1     0.0.0.0         UG    0      0        0 eth0

Destination :目标地址     
Gateway : 网关
Genmask:子网掩码
Flags :网络标记,U 正在启用,UG 此路由必须制定网关,H 目标是一个主机
Metric :经过几个路由
Ref    
Use :路由使用的次数
Iface :网卡
配置策略路由

在路由器上创建多个路由表,创建规则,可以根据数据包的源地址和应用层协议或者负载选择不同的路由表,进行路径的选择。

使用实例如果一个公司出口出有两条线路(联通、移动),如果配置领导上网使用联通、普通员工上网使用移动。需要写两个路由表,一个是配置联通线路的路由表、另外一个是移动线路的路由表。策略路由根据不同的源IP选择不同的路由表。

实例:一台服务器上的两个网卡在同一网段 服务器 网卡1 网卡2 网关 服务器A 192.168.0.100 192.168.0.200 192.168.0.1 服务器B 192.168.0.300   192.168.0.1

设置路由表名对于的编号

[root@ecs-wyy-snt ~]# vim /etc/iproute2/rt_tables

32000     test

增加test路由表中的默认路由

[root@ecs-wyy-snt ~]# ip route add default via 192.168.0.1 dev eth1 table test

设置策略路由,
从192.168.0.200来的包,使用路由表test,pref的值是策略路由的优先级。

[root@ecs-wyy-snt ~]# ip rule add from 192.168.0.200 table test pref 32000
实例:在公司的网络中有两个出口,一个电信一个联通,不同的IP访问走不同的路径 服务器 网卡1 网卡2 网卡3 网关 服务器A 192.168.6.182     192.168.6.39 服务器B 192.168.6.66     192.168.6.39 router 192.168.6.39 192.168.0.200 (映射公网IP 139.159.221.28) 192.168.5.120 (映射公网IP 139.159.228.71)  

本次测试在route在linux服务器上部署

[root@ecs-wyy-snt ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
实验环境配置(可省略)

为保证多个网卡配置公网IP之后能够上网需要配置策略路由

外网能够通过公网访问该服务器

增加路由表

[root@ecs-wyy-snt ~]# vim /etc/iproute2/rt_tables
32000   test
32001   test1

配置策略路由保证使用公网IP能远程登录。本次测试的实验环境比较复杂,由于公网IP是映射到服务上的,故需要做策略路由的配置。

[root@ecs-wyy-snt ~]# ip route add default via 192.168.0.1 dev eth1 table test
[root@ecs-wyy-snt ~]# ip rule add from 192.168.0.200 table test pref 32000

[root@ecs-wyy-snt ~]# ip route add default via 192.168.5.1 dev eth2 table test1
[root@ecs-wyy-snt ~]# ip rule add from 192.168.5.120 table test1 pref 32001

配置NAT转发(实现上网)

[root@ecs-wyy-snt ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

[root@ecs-wyy-snt ~]# sysctl -p
[root@ecs-wyy-snt ~]# iptables -t nat -I POSTROUTING -s 192.168.6.182/32 -j SNAT --to-source 192.168.0.200
[root@ecs-wyy-snt ~]# iptables -t nat -I POSTROUTING -s 192.168.6.66/32 -j SNAT --to-source 192.168.5.120


[root@router ~]# iptables-save

# Generated by iptables-save v1.4.7 on Sat Dec 16 23:23:51 2017

*nat
:PREROUTING ACCEPT [2636:117755]
:POSTROUTING ACCEPT [6:366]
:OUTPUT ACCEPT [6:366]
-A POSTROUTING -s 192.168.6.66/32 -j SNAT --to-source 192.168.5.120 
-A POSTROUTING -s 192.168.6.182/32 -j SNAT --to-source 192.168.0.200 
COMMIT

# Completed on Sat Dec 16 23:23:51 2017


# Generated by iptables-save v1.4.7 on Sat Dec 16 23:23:51 2017

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1450:149349]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j ACCEPT 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT

# Completed on Sat Dec 16 23:23:51 2017

You have new mail in /var/spool/mail/root
路由器上配置策略路由

确保两张路由表上有默认上网的路由

[root@ecs-wyy-snt ~]# cat /etc/iproute2/rt_tables 
#

# reserved values

#
255 local
254 main
253 default
0   unspec
32000   test
32001   test1
#

# local

#

[root@ecs-wyy-snt ~]# ip route show table test
default via 192.168.0.1 dev eth1 
[root@ecs-wyy-snt ~]# ip route show table test1
default via 192.168.5.1 dev eth2 

增加策略路由

[root@router ~]# ip rule add from 192.168.6.182 lookup test pref 31000

[root@router ~]# ip rule add from 192.168.6.66 lookup test1 pref 31001