策略路由的使用一例

局域网通过NAT连上internet的机器 代理其他机器上网 不使用NAT的方法

怎么察看每个路由项通过的包   希望知道的指点指点

 
|-------------------------|--------------------------|
|192.168.100/24               |          192.168.0.1/24      |
|                                    |                                    |
|                               SERVER2                       SERVER1
|                                    |                                    |
|                                    |                                    |
|                                    |                                    |
|        LAN2                     |        LAN1                      |  
|-------------------------|--------------------------|
LAN1 -  SERVER1 :
eth0 - A.B.C.D  公网IP  
eth1 - 192.168.0.1

LAN2 -  SERVER2 :
eth0 - 192.168.0.249
eth1 - 192.168.100.254

LAN1 可以通过server1连上internet
LAN2 如果要连internet一般 使用的方法是在server2上面进行NAT, 2个命令就OK

1> echo "1" > /proc/sys/net/ipv4/ip_forward
2> iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j SNAT --to 192.168.0.249

其实1命令执行以后 从192.168.100.0这个子网内的机器 的包 可以通过SERVER2路由到192.168.0.0这个网络
但是 192.168.0.0这个网络收到这个包以后 给于回应时并不知道 怎么把包回复给 192.168.100.0这个网络的机器

也就是server2 知道去往两个网络的路由
所以问题在于  如何让192.168.0.0这个网络的client知道怎么去往192.168.100.0这个网络

在192.168.0.0这个网络的client的网关都已经设置成server1的内网地址 也就是192.168.0.1
那么这个时候

在我们对server1做了策略路由后 SERVER1中添加去往192.168.100.0的路由项
就可以实现两个LAN的通讯了

为了安全 不影响原本的路由表  我们在新的路由表中进行
server1:

1) shell > echo "100  t1" >> /etc/iproute2/ip_tables   #新建t1表

2) shell > ip ro add 192.168.100.0/24 via 192.168.0.249 dev eth1 table t1
 #添加t1表的路由项 去往192.168.100.0这个网络的包通过192.168.0.249来路由
     添加了 这个路由项以后  从server1上面测试的时候 server1的包已经可以到达192.168.100.0/24这个网络了
     但是 192.168.0.0 中其他的机器无法到达192.168.100.0/24 , 我们还需要添加一个策略

3) shell > ip ru show
   shell > ip ru add to 192.168.100.0/24 table t1
 这样192.168.0.0 中其他的机器收发包的时候就可以使用上面的via 192.168.0.249 dev eth1这个规则了

 这时两个网络可以通过路由来通讯了   在192.168.100.0/24这个网络的client, 也可以通过指定GATEWAY=192.168.0.1
 来进行连上internet了

如果需要的话 可以把t1表删掉 放到我们的main表里面
4) shell > ip ro add 192.168.100.0/24 via 192.168.0.249 dev eth1
上面命令没有指定放到t1表里面 就是放到mian表  然后把t1表删除
   shell > ip ro del 192.168.100.0/24 table t1


流量分割 (扩充表) :
策略路由  的策略(rule) 常用的还有fwmark , to net , from net , 一般步骤都是先建立表,  然后再定义策略

负载均衡 (扩充路由项) :
 方法就是 一个路由项中指定多个出口 使用nexthop与weight来进行

例如 我们对上面的例子 t1表中的那条路由项 改变一下
shell > ip ro add 192.168.100.0/24 via 192.168.0.249 dev eth1 table t1   #正常方法 没有负载均衡的方式

# 指定 table 不能放在最后 否则语法错误
shell > ip ro add 192.168.100.0/24  table t1 nexthop via 192.168.0.249 dev eth1 weight 1
 nexthop via 192.168.0.101 dev eth1 weight 1

  但是  不知道怎么察看每个路由通过的包   希望知道的指点指点
注: 参考johnbull的策略路由

上一篇: linux主要系统服务介绍
下一篇: L-Blog的三个洞

目前还没有人评论,您发表点看法?
发表评论

评论内容 (必填):