News

319 因為 10M/2M 的光纖GW變更造成無法聯線

Contributed by TyroneYeh on Mar 19, 2010 - 10:54 PM

因為 10M/2M 的網路 Gateway 我在 Firewall 中寫固定的,變更後造成無法連線!!

正常是不會 Default Gateway 只有一個! 就不用寫在 Firewall 設定裡面!

其實網路架構很簡單,只是又在 Gentoo Linux 上再以 PPPoE 播接取得一個固定 IP: 

Internet <-[ 10M/2M ]-> Wireless AP <-[ Wireless ]-> Gentoo Linux Server (PPPoE)

原來的 wlan0 會有一個 default gateway,PPPoE 播接的又會有另外一個!

這樣的時候就要做 Multi Route 的設定,不然無法連線,我是用 Shorewall 來做 Firewall 的,其實也就是用 Shorewall 設定一些規則,他會產生 iptables 的條件,設定就比較簡單不用記 iptables 的指令,一般策略(policy)是設定都拒絕在一個一個服務的開,那在 Shrewall 有一些基本設定都設好後,只要在規則(rules)設定像:

HTTP/ACCEPT    all    fw

就可以開 80 port 從所有來源都可以到 Firewall(fw)也就是本機,他就會看你有幾個網路區域(Zones)自動產生 iptables 的指令如:

-A loc12fw -p tcp -m tcp --dport 80 -m comment --comment "HTTP" -j ACCEPT
-A loc2fw -p tcp -m tcp --dport 80 -m comment --comment "HTTP" -j ACCEPT

也可以利用 Shorewall 來幫忙設定多路由(multi route),不過這塊可能有點複雜,我也說不清楚!但怕 hinet 再改我的 Default Gateway,寫了一個 Shell 來檢查:

#!/bin/bash

FWPATH=/etc/shorewall
PPPGW=`ifconfig ppp0 | grep "P-t-P" | awk '{print $3}' | awk 'BEGIN {FS=":"} {print $2}'`
FWGW=`cat ${FWPATH}/providers | grep ppp0 | awk '{print $6}'`

# Debug need be mark cp ..
##FWGW="192.168.1.254"


if [ -n $PPPGW -a -n $FWGW -a $PPPGW != $FWGW ]
then

cat ${FWPATH}/masq | sed "s/${FWGW}/$PPPGW/" > /tmp/masq
/bin/cp -b /tmp/masq ${FWPATH}/

cat ${FWPATH}/providers | sed "s/${FWGW}/$PPPGW/" > /tmp/providers
/bin/cp -b /tmp/providers ${FWPATH}/

/etc/init.d/shorewall restart

fi
並以排程來執行,如果發現 Gateway 跟 Firewall Gateway 就取代 firewall 的 Gateway!!
 
Links
  1. http://siryeh.com/index.php?module=news&func=display&sid=58&theme=Printer