Linux

是否可以從兩個網際網路連接訪問伺服器

  • June 27, 2014

如何做到這一點:

在此處輸入圖像描述

有:

  • 美分 6.5
  • WAN1 eth0 44.44.44.44(DEFROUTE=yes)
  • WAN2 ppp0 95.95.95.95 (DEFROUTE=no)
  • HTTP 伺服器工作且僅在 eth0 中可用
  • DNS 伺服器工作,但埠 53 在 eth0 中被阻止
  • ping 僅在 eth0 中可用
  • 客戶端可以通過 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訪問伺服器

  1. 客戶端 PC 必須可以通過 ppp0 訪問 DNS 並通過 eth0 訪問 HTTP

這是非常簡單的答案:)

只需要:

  • 如果客戶端 PC 通過 WAN1 連接,他必須通過 WAN1 得到答案
  • 如果客戶端 PC 通過 WAN2 連接,他必須通過 WAN2 得到答案

答案:WAN1 有選項DEFROUTE=yes,當 WAN1 啟動時,他是:

# ip route 
....
default via 44.44.44.44 dev eth0  proto static 

WAN2**沒有預設路由!!!**我們需要為 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

引用自:https://serverfault.com/questions/608099