iptables 轉送除本機伺服器之外的所有內容

iptables 轉送除本機伺服器之外的所有內容

這些是我正在使用的規則:

iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables --table nat --append POSTROUTING --out-interface wlan5 -j MASQUERADE
iptables --append FORWARD --in-interface wlan3 -j ACCEPT

我的 wlan5 為 192.168.1.100,wlan3 為 10.0.0.1。我讓我的筆記型電腦成為一個帶有 2 個 wifi 卡的 wifi 中繼器。

所以人們連接到 wlan3,網關是 10.0.0.1,所有內容都重新導向到 wlan5 [gw 192.168.1.1]。

現在,這效果很好,除了我無法存取筆記型電腦上託管的本機 HTTP 伺服器。它託管在我的筆記型電腦上,作為 localhost 或 10.0.0.1 運行:

$ curl -I 10.0.0.1
HTTP/1.1 301 Moved Permanently
Date: Tue, 26 Feb 2013 02:35:32 GMT
Server: Apache/2.2.22 (Ubuntu)
Location: http://10.0.0.1/index.php
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1

好的,這就是問題所在。我的共享網路 [wlan3] 上 IP 為 10.0.0.20 的客戶端嘗試存取 10.0.0.1:80,但無法連線:

$ wget http://10.0.0.1                                       
Connecting to 10.0.0.1 (10.0.0.1:80)
wget: can't connect to remote host (10.0.0.1): Connection refused

可以ping通10.0.0.1,甚至可以ping通外部IP。所以它有互聯網連接,這是重點,但它無法訪問 HTTP,我相信是因為 iptables 規則。錯誤發生後,我在筆記型電腦的系統日誌中看到以下內容:

Feb 25 21:36:19 toshi kernel: [57806.285170] Inbound IN=wlan3 OUT= MAC=9c:b7:0d:a5:45:67:a8:26:d9:3e:04:21:08:00 SRC=10.0.0.20 DST=10.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=28282 DF PROTO=TCP SPT=58343 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0 

那麼問題來了,要如何排除將IP請求轉送到10.0.0.1而不轉送到wlan5呢?

謝謝

答案1

編輯:再一次,在我認為問題已解決後,它再次停止工作,而我沒有發出更多 iptables 命令。我不明白為什麼它一直有效,然後又不起作用。 >.<


我發現了一個不同的 iptables 命令,可以將我的互聯網從 1 個 [長距離] wifi 設備共享到另一個 [內部]:

iptables -t nat -A POSTROUTING -o wlan5 -j MASQUERADE

而不是問題中的 iptables 命令。這使得我仍然可以訪問互聯網,並且仍然可以從 10.0.0.20 訪問 10.0.0.1 上的 http/ssh。

答案2

iptables-save 輸出您發布的內容在過濾器表中顯示了以下自訂鏈:INBOUND、OUTBOUND、LOG_FILTER、LSI 和 LSO。 Firestarter 建立了 5 個鏈,所有的名稱與此完全相同。

我確定您的問題是由 Firestarter 引起的。打開它並檢查它是否真的被禁用。

參考:

相關內容