- 论坛徽章:
- 0
|
5可用积分
实际测试的服务器采用debian6(内核2.6.32)
配置如下:
eth0:外网1,接口IP:10.0.1.2/24 网关:10.0.1.1
eth1:外网2,接口IP:10.0.2.2/24 网关:10.0.2.1
eth2:内网,接口IP:192.168.10.0/24
内网测试PC ,IP:192.168.10.120 通过交换机连接到eth2
设置iptables:对内网IP 192.168.10.120 打标签1
iptables -t mangle -A PREROUTING -s 192.168.10.120 -j MARK --set-mark 0x1
设置nat:
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j MASQUERADE
设置两个策略路由表table10和table20:
ip route add default via 10.0.1.1 table 10
ip route add 192.168.10.0/24 dev eth2 table 10
ip route add default via 10.0.2.1 table 20
ip route add 192.168.10.0/24 dev eth2 table 20
设置策略路由规则:、标志位1的走出口eth0
/bin/ip rule add fwmark 1 priority 100 table 10
通过以上配置后发现无法上网,tcpdump显示返回数据包无法进行nat转换!
例如 在PC 上 ping 218.201.25.131
在eth2 上只能抓到 源地址为192.168.10.120 目的地址为218.201.25.131 的request 包 没有reply包
在eth0 上可以抓到 源地址为10.0.1.2 目的地址为218.201.25.131 的request 包 和 源地址为218.201.25.131 目的地址为10.0.1.2 的reply 包 |
最佳答案
查看完整内容
检查一下conntrack,按理说conntrack会把返回报文的目的ip改成内网ip的(关注一下应答方向的的counter是不是在增加)。同时检查一下ip route cache,对应答报文(注意是dnat后的,即目的ip已被修改为内网ip)的路由是不是eth0?会不会是反向路由检查的限制(检查一下接口的rp_filter配置)?对于dnat之后的应答报文(来自eth0)218.201.25.131 -> 192.160.10.120,如果rp_filter开启,会内部检查一下,逆向的报文(192.160.10.120- ...
|