网络拓扑如下:
| |
| |
eth1 eth3
---------------
| |
| firewall |
---------------
eth0
|
|
内网eth0:(192.168.0.0/24) eth0:192.168.0.1
教育eth3:(202.a.b.0/24) eth3:202.a.b.1 网关202.a.b.254
电信eth1:(61.c.d.0/24) eth1:61.c.d.1 网关61.c.d.254
出口有教育网和电信网,教育网可以路由出去,电信网只能通过NAT出去
现在校内一个局域网想通过做NAT,实现局域网内的用户访问教育网从
教育网端口走,电信网从电信网端口走,这两个端口往出走的时候都
采用NAT的方式出去。
看了前边的帖子,自己也实验了好几种方式,但都没能成功,所以上来再问问
两种思路
1、一开始我的思路是只需要在fw上做路由缺省路由电信61.c.d.254,然后设置教育网络到
教育网出口202.a.b.254,在eth1和eth3上分别作SNAT,从两个地址出去。
具体做法是所有教育网网络路由走202.a.b.254,缺省路由走61.c.d.254,所有的路由信息
加在main表里。这种方法也成功了
#ip route add to 58.154.0.0/15 via 202.a.b.254 table main
#ip route add to 58.192.0.0/12 via 202.a.b.254 table main
。
。
。(省略若干行)
#ip route add to 222.192.0.0/12 via 202.a.b.254 table main
#ip route add default via 61.c.d.254 table main
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth3 -j SNAT --to 202.a.b.1
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to 61.c.d.1
#ip route flush cache
网络全部可以通,但是性能没有经过测试。
不知道有没有好的测试方法,另外那位给看看有没有需要改进或者更好的方法来实现。
2、看了前边的策略路由的帖子,不是很明白,按照说的做了一下,如下执行的,还是不行
# echo "200 NetEdu" >> /etc/iproute2/rt_tables
# ip route replace default via 202.a.b.254 table NetEdu
# ip rule add fwmark 1 table NetEdu
# iptables -t nat -F
# iptables -t mangle -F
# iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 教育网网络 -j MARK --set-mark 1
(中间的省略)
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 教育网网络 -j SNAT --to 202.a.b.1
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 61.c.d.1
# ip route flush cache
不知道为啥不通,如果要借助200 NetEdu这种ip rule的方式在nat的时候必需要--set-mark 1做这个吗
而且我看着每个教育网网络都要加SNAT的语句,不知道和方法1那一个性能更好一些
期待能有人指点一下,或者那位有更好的脚本最好能共享一下,先谢过了
[ 本帖最后由 wualing 于 2006-10-24 17:56 编辑 ]
platinum 回复于:2006-10-24 12:40:34
不用那么麻烦,上面的方法是以前讨论过的策略路由的高级用法
你只需下面方法就可以
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
ip route replace default via 电信网关
ip route add 教育网地址 via 教育网网关
wualing 回复于:2006-10-24 12:45:57
谢谢platinum,前边策略路由的方法看得稀里糊涂的,和这种简单方法实现有什么区别吗?
sccdxp 回复于:2006-10-24 14:31:39
开机的时候运行一个脚本
然后设置默认网关是电信
下面包含了大部分的教育网地址
route add -net 58.192.0.0 netmask 255.240.0.0 gw 教育网网关
route add -net 59.64.0.0 netmask 255.240.0.0 gw 教育网网关
route add -net 121.48.0.0 netmask 255.254.0.0 gw 教育网网关
route add -net 125.216.0.0 netmask 255.248.0.0 gw 教育网网关
route add -net 162.105.0.0 netmask 255.255.0.0 gw 教育网网关
route add -net 166.111.0.0 netmask 255.255.0.0 gw 教育网网关
route add -net 202.4.128.0 netmask 255.255.224.0 gw 教育网网关
route add -net 202.38.2.0 netmask 255.255.254.0 gw 教育网网关
route add -net 202.38.64.0 netmask 255.255.192.0 gw 教育网网关
route add -net 202.38.140.0 netmask 255.255.254.0 gw 教育网网关
route add -net 202.38.184.0 netmask 255.255.248.0 gw 教育网网关
route add -net 202.38.192.0 netmask 255.255.192.0 gw 教育网网关
route add -net 202.112.0.0 netmask 255.248.0.0 gw 教育网网关
route add -net 202.120.0.0 netmask 255.254.0.0 gw 教育网网关
route add -net 202.127.216.0 netmask 255.255.248.0 gw 教育网网关
route add -net 202.127.224.0 netmask 255.255.224.0 gw 教育网网关
route add -net 202.179.240.0 netmask 255.255.240.0 gw 教育网网关
route add -net 202.192.0.0 netmask 255.240.0.0 gw 教育网网关
route add -net 203.91.120.0 netmask 255.255.248.0 gw 教育网网关
route add -net 210.25.0.0 netmask 255.255.0.0 gw 教育网网关
route add -net 210.26.0.0 netmask 255.254.0.0 gw 教育网网关
route add -net 210.28.0.0 netmask 255.252.0.0 gw 教育网网关
route add -net 210.32.0.0 netmask 255.240.0.0 gw 教育网网关
route add -net 211.64.0.0 netmask 255.248.0.0 gw 教育网网关
route add -net 211.80.0.0 netmask 255.248.0.0 gw 教育网网关
route add -net 218.192.0.0 netmask 255.248.0.0 gw 教育网网关
route add -net 219.216.0.0 netmask 255.248.0.0 gw 教育网网关
route add -net 219.224.0.0 netmask 255.248.0.0 gw 教育网网关
route add -net 219.242.0.0 netmask 255.254.0.0 gw 教育网网关
route add -net 219.244.0.0 netmask 255.252.0.0 gw 教育网网关
route add -net 222.16.0.0 netmask 255.240.0.0 gw 教育网网关
route add -net 222.192.0.0 netmask 255.240.0.0 gw 教育网网关
[ 本帖最后由 sccdxp 于 2006-10-24 14:34 编辑 ]
platinum 回复于:2006-10-24 14:32:42
引用:原帖由 wualing 于 2006-10-24 12:45 发表
谢谢platinum,前边策略路由的方法看得稀里糊涂的,和这种简单方法实现有什么区别吗?
有区别,前者的应用更灵活,可操作性更多,当然也更复杂更难理解
wualing 回复于:2006-10-24 14:44:59
谢谢sccdxp,platinum,先用简单的做了,复杂的再慢慢测试!
wualing 回复于:2006-10-24 15:55:22
路由还是按前边的那样,现在这样做了,只有教育的可以通,不知道什么原因
[root@FireWall shorewall]# iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
eth0_masq all -- 0.0.0.0/0 0.0.0.0/0
eth3_masq all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain eth0_masq (1 references)
target prot opt source destination
SNAT all -- 192.168.0.0/24 0.0.0.0/0 to:61.c.d.1
Chain eth3_masq (1 references)
target prot opt source destination
SNAT all -- 192.168.0.0/24 0.0.0.0/0 to:202.a.b.1
[root@FireWall shorewall]#
教育网的可以通,电信的不通不知道怎么回事
sccdxp 回复于:2006-10-24 16:59:22
电信的网关设置了没有呢?能ping通网关么?默认网关在/etc/sysconfig/network在这个地方设置。
sccdxp 回复于:2006-10-24 17:01:50
然后在iptables的nat文件中只要这句吧
*nat
-A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
COMMIT
nat表中不需要那么复杂吧。
[ 本帖最后由 sccdxp 于 2006-10-24 17:04 编辑 ]
wualing 回复于:2006-10-24 17:33:10
已经好了,但是有时候会不通,电信网关设置了用的是ip route replace设置的,因为是和shorewall防火墙一起用,所以这样比较统一一些
另外用ip route add 加的路由重启就没有了,如果不想加启动脚本的话,有没有办法,应该可以存在一个文件里边吧
[ 本帖最后由 wualing 于 2006-10-24 17:35 编辑 ]
wualing 回复于:2006-10-24 17:55:46
引用:原帖由 sccdxp 于 2006-10-24 17:01 发表
然后在iptables的nat文件中只要这句吧
*nat
-A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
COMMIT
nat表中不需要那么复杂吧。
这个方法是没问题提,改成上边的目的只是为了多实验实验,和shorewall结合使用起来。
谢谢各位的帮助。我自己在多试试吧!
platinum 回复于:2006-10-24 19:10:45
我 2 楼的时候我就给过你答案了。。。。。。。
yangprc 回复于:2006-10-24 19:36:36
我贴一下我的,也是教育网,不过另外的是网通.我开始还以为楼主也是天津的呢.呵呵 cernet是一个路由表.cernet-ip这个文件包含了教育网的ip地址段.
/sbin/ip route add 172.26.48.0/24 dev eth1 src 172.26.48.4 table cernet
/sbin/ip route add 218.68.241.0/24 dev eth0 src 218.68.241.155 table cernet
/sbin/ip route add default via 172.26.48.1 dev eth1 table cernet
ips=$(cat cernet-ip)
for ip in $ips
do
/sbin/ip rule add to $ip table cernet
done
wualing 回复于:2006-10-24 21:17:30
谢谢yangprc和platinum。感谢yangprc的code。platinum的方式是操作最简单的了。
huanghaojie 回复于:2006-10-27 16:14:25
一直没有这样的环境,但又非常想试,有没有什么模拟的方法可以用做这些东西呀。
hnxhlgj 回复于:2006-10-28 11:06:47
楼上的哥哥可以说说你的具体方法吗?不知道你这种方法可以实现自动切换不,当一根线掉了可以自动上到别一个线上吗?
hnxhlgj 回复于:2006-10-28 11:07:26
楼上的哥哥能帮我一下吗?我的QQ:363562852
5iwww 回复于:2006-11-30 15:08:26
引用:原帖由 platinum 于 2006-10-24 12:40 发表
不用那么麻烦,上面的方法是以前讨论过的策略路由的高级用法
你只需下面方法就可以
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
ip route replace default via 电信网关
ip rou ...
电信网关是指是什么?
内网eth0:(192.168.0.0/24) eth0:192.168.0.1
教育eth3:(202.a.b.0/24) eth3:202.a.b.1 网关202.a.b.254
电信eth1:(61.c.d.0/24) eth1:61.c.d.1 网关61.c.d.254
网关61.c.d.254?还是eth1:61.c.d.1 ? snat的时候如何判断是走eth3 还是走 eth1?
5iwww 回复于:2006-11-30 15:26:25
如果你使用 -j MASQUERADE 做 NAT,那么你的数据包会根据不同的 nexthop 来动态修改 WAN 地址
希望这个就是答案。。。
platinum 回复于:2006-11-30 15:42:17
引用:原帖由 5iwww 于 2006-11-30 15:26 发表
如果你使用 -j MASQUERADE 做 NAT,那么你的数据包会根据不同的 nexthop 来动态修改 WAN 地址
希望这个就是答案。。。
恩,正是如此,MASQUERADE 会自动根据不同的 nexthop 去做相应的 SNAT
bleach 回复于:2006-12-01 11:52:17
看以前的帖说 MASQUERADE 没有SNAT 速度快的噢 多了一个步骤
platinum 回复于:2006-12-01 12:51:36
这是一个功能与性能权衡的问题了,其实慢也慢不了多少,但确实是慢,这点是可以肯定的
|