如何制作:
有:
- Centos 6.5
- WAN1 eth0 44.44.44.44(DEFROUTE=是)
- WAN2 ppp0 95.95.95.95(DEFROUTE=否)
- HTTP 服务器工作并且仅在 eth0 上可用
- DNS 服务器正常运行,但 eth0 中的 53 端口被阻止
- 仅在 eth0 上可用 ping
- 客户端可以通过 eth0 访问 HTTP 并 PING
- ISP 在 eth0 中阻止端口 53
- ISP 在 ppp0 中阻止端口 80
需要:
- 客户端 PC 必须能够 PING eth0 和 ppp0
- 客户端 PC 必须能够保持对 eth0 中 HTTP 的访问
- 客户端 PC 必须能够访问 ppp0 中的 DNS
我尝试这样做,但直到最后才明白如何做:
echo 2 ppp0_OUT >> /etc/iproute2/rt_tables
ip route add default via 95.95.95.95 dev ppp0 table ppp0_OUT
iptables -A PREROUTING -i ppp0 -t mangle -j MARK --set-mark 2
ip rule add fwmark 2 table ppp0_OUT
ip route flush cache
sysctl -w net.ipv4.conf.eth0.rp_filter=0
sysctl -w net.ipv4.conf.ppp0.rp_filter=0
问题:
1)如何让客户端PC能够同时通过eth1和ppp0访问服务器
2)客户端 PC 必须能够通过 ppp0 访问 DNS 并通过 eth0 访问 HTTP
答案1
答案很简单:)
只需要:
- 如果客户端 PC 通过 WAN1 连接,他必须通过 WAN1 获取答案
- 如果客户端 PC 通过 WAN2 连接,他必须通过 WAN2 获取答案
答案:WAN1有选项DEFROUTE=是当 WAN1 启动时,他是:
# ip route
....
default via 44.44.44.44 dev eth0 proto static
广域网2没有默认路线!!!我们需要为 WAN2 创建默认路由,执行此操作的简单脚本:
#!/bin/bash
###
# echo 202 out_ppp0 >> /etc/iproute2/rt_tables
ip route flush table out_ppp0
ip rule del table out_ppp0
IP_ppp0=$(/sbin/ifconfig ppp0 | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
ip rule add from $IP_ppp0 table out_ppp0
ip route add default via $IP_ppp0 dev ppp0 table out_ppp0