作者 主題: iptables redir的問題  (閱讀 3424 次)

0 會員 與 1 訪客 正在閱讀本文。

cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
iptables redir的問題
« 於: 2011-07-16 16:26 »
我寫了一個shell,當滿足條件時於NAT執行下述命令
iptables -A PREROUTING -t nat -p tcp --dport 80 -j DNAT --to 192.168.254.254:3210
我希望滿足條件時,可以讓user的port 80封包轉到NAT的apache listen 3210
其條件為斷線成立時

但我發現當斷線成立時,因client端的網頁是使用domain的方式,故在轉址前會送出dns port 53的封包
但該封包因斷線事實成立,所以無法繞送到internet的dns查詢,於是timeout後client端會無法顯示網頁

有想過在NAT另啟bind,在條件滿足時多做
iptables -A PREROUTING -t nat -p udp --dport 53 -j DNAT --to 192.168.254.254:53
但該bind還是需要到internet問(除非本身有cache)

想問有何方式可解決上述問題



Nansen

  • 活潑的大學生
  • ***
  • 文章數: 212
    • 檢視個人資料
Re: iptables redir的問題
« 回覆 #1 於: 2011-07-16 16:34 »
您是要做阻擋頁面吧,小弟的做法是本機的Bind做dns forward
不一定要出網際網路LAN裡面有台DNS可以查就好

沒DNS還有個做法就是把apache吐出的網頁4xx、5xx系列訊息改成導向NAT那台的http://IP/

cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
Re: iptables redir的問題
« 回覆 #2 於: 2011-07-16 16:59 »
這我有興趣,該如何做,謝謝
不過,apache吐出的網頁應該是對方的apache,應該不是我的NAT吐的吧

沒DNS還有個做法就是把apache吐出的網頁4xx、5xx系列訊息改成導向NAT那台的http://IP/

« 上次編輯: 2011-07-16 17:03 由 cisco3662 »

Nansen

  • 活潑的大學生
  • ***
  • 文章數: 212
    • 檢視個人資料
Re: iptables redir的問題
« 回覆 #3 於: 2011-07-16 17:28 »
如同您前面所說的
"滿足條件時,可以讓user的port 80封包轉到NAT的apache listen 3210"

這時候HTTP的要求是對NAT上的apache送出
不過原始的http要求可能是任何路徑,例如 http://www.google.com/codesearch
這時候假如apache上沒有/codesearch這個路徑就會吐出404
可以直接把這個404訊息改成阻擋畫面就好了

cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
Re: iptables redir的問題
« 回覆 #4 於: 2011-07-16 17:45 »
我的疑問是
當跟NAT的apache要求前,會先送port 53的封包來解析client端的http host,因為我的情境是斷線,也就是說NAT對外是斷線的,所以client無法得到port 53的解析封包

這時是還沒套用下列規則的
iptables -A PREROUTING -t nat -p tcp --dport 80 -j DNAT --to 192.168.254.254:3210


Nansen

  • 活潑的大學生
  • ***
  • 文章數: 212
    • 檢視個人資料
Re: iptables redir的問題
« 回覆 #5 於: 2011-07-16 20:34 »
如果說實際上的斷線,除非Client第一次連接這個domain要不然應該會有DNS快取
小弟的純利用apache的做法是假設網路是通的被"阻擋"的狀況下
如果說連NAT都無法對外的斷線要對外解DNS確實是有問題,那就把本機的Bind設定成任何domain都會解成NAT的IP吧
這樣應該能達成您要的效果,不過會有副作用,Client雖然看到了這個訊息,但是在網路連通後會因為DNS快取的關係連不到該去的地方

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
Re: iptables redir的問題
« 回覆 #6 於: 2011-07-16 22:39 »
有兩條對外線路
備援那條想用 proxy

方向該是 routing 而不是 nat 喔


cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
Re: iptables redir的問題
« 回覆 #7 於: 2011-07-18 09:04 »
只有一條外線的情境
另外Nansen學長提及的方式我有想過,也是因為dns cache的問題所以放棄
想了好久,一直沒有好的解決方式

忽然想到,若我把本機的Bind設定成任何domain都會解成NAT的IP,refresh設成1分鐘,這樣可確保一分鐘後cache會更新,待會來試試
« 上次編輯: 2011-07-18 17:15 由 cisco3662 »

cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
Re: iptables redir的問題
« 回覆 #8 於: 2011-07-18 17:36 »
對了,請問本機的Bind設定成任何domain都會解成NAT的IP該如何設定??謝謝

cisco3662

  • 鑽研的研究生
  • *****
  • 文章數: 739
    • 檢視個人資料
Re: iptables redir的問題
« 回覆 #9 於: 2011-07-25 18:59 »
如果說實際上的斷線,除非Client第一次連接這個domain要不然應該會有DNS快取
小弟的純利用apache的做法是假設網路是通的被"阻擋"的狀況下
如果說連NAT都無法對外的斷線要對外解DNS確實是有問題,那就把本機的Bind設定成任何domain都會解成NAT的IP吧
這樣應該能達成您要的效果,不過會有副作用,Client雖然看到了這個訊息,但是在網路連通後會因為DNS快取的關係連不到該去的地方

請問一下caching dns如何設定成任何domain都會解成NAT的IP,謝謝