分类: LINUX
2005-12-29 02:38:55
局域网通过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的策略路由