是否可以通过两个互联网连接访问服务器

是否可以通过两个互联网连接访问服务器

如何制作:

在此处输入图片描述

有:

  • 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

相关内容