iptables啟動NAT時IP_FORWARD的問題(已爬過文)

這個版面主要討論 debian 在 server 端的應用問題, server 種類繁多..舉凡 Web Server 、 File Server、 DHCP Server..等等。

版主: 阿信

iptables啟動NAT時IP_FORWARD的問題(已爬過文)

文章claudwu » 週六 9月 16, 2006 2:04 am

之前已經有照無痛起步設定過/etc/sysctl.conf的IP_FORWARD
然後用了最簡單的語法執行NAT
代碼: 選擇全部
iptables -A POSTROUTING -t nat -o ppp0 -s 192.168.1.0/24 -j MASQUERADE

一陣子下來好像都很正常

然後開始建立基本的防火牆
我照鳥哥私房菜的script去改

結果遇到了有些網址能連,有些不能連的問題
爬了文,知道要打開IP_FORWARD
那現在也把/etc/network/options的ip_forward也設下去了
也還是一樣...
可是只開NAT沒問題,設了那些有的沒的就掛掉?

可以幫我trace一下嘛?

我的環境:
對外eth0上面掛ppp0( ADSL撥接式)
對內eth1 192.168.1.1
裡面只有一台電腦是.171

iptables的script如下:
代碼: 選擇全部
  EXTIF="ppp0"
  INIF="eth1"
  INNET="192.168.1.0/24"        # This is for NAT's network

  /sbin/iptables -F
  /sbin/iptables -X
  /sbin/iptables -Z
  /sbin/iptables -F -t nat
  /sbin/iptables -X -t nat
  /sbin/iptables -Z -t nat
  /sbin/iptables -P INPUT   DROP
  /sbin/iptables -P OUTPUT  ACCEPT
  /sbin/iptables -P FORWARD ACCEPT
  /sbin/iptables -t nat -P PREROUTING  ACCEPT
  /sbin/iptables -t nat -P POSTROUTING ACCEPT
  /sbin/iptables -t nat -P OUTPUT      ACCEPT

  /sbin/iptables -A INPUT -i lo   -j ACCEPT

  /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  AICMP="0 3 3/4 4 11 12 14 16 18"
  for tyicmp in $AICMP
  do
    /sbin/iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
  done

  iptables -A POSTROUTING -t nat -o ppp0 -s 192.168.1.0/24 -j MASQUERADE

  /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 1046 -j ACCEPT        # SSH
  /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 1863 -j ACCEPT        # auth
  /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 80 -j ACCEPT          # www

  iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 4662  -j DNAT --to 192.168.1.171:4662
  iptables -t nat -A PREROUTING -p udp -i $EXTIF --dport 4672  -j DNAT --to 192.168.1.171:4672
  iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 1863  -j DNAT --to 192.168.1.171:1863

[/code]
claudwu
懵懂的國中生
懵懂的國中生
 
文章: 156
註冊時間: 週二 3月 29, 2005 5:33 pm

文章cshjssy » 週六 10月 28, 2006 7:10 pm

加入
iptables -A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
看看!
我也不知道這是做什麼用的!再請知道的人補充....

你的狀況和我之前一樣,開機後直接設定/etc/sysctl.conf的IP_FORWARD
iptables -A POSTROUTING -t nat -o ppp0 -s 192.168.1.0/24 -j MASQUERADE
就可以正常使用

但加入
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -F -t nat
/sbin/iptables -X -t nat
/sbin/iptables -Z -t nat
清除iptables後 再設定就會有,有的可以連有的不能連的狀況

後來用iptables-save查看清除前的iptables,就有
-A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
這行,把它加回去之後就一切正常了!!

祝好運!!
cshjssy
可愛的小學生
可愛的小學生
 
文章: 55
註冊時間: 週四 7月 15, 2004 5:45 pm
來自: 新竹

文章訪客 » 週日 10月 29, 2006 7:47 am

不知 Debian/Ubuntu 動了啥手腳,必須加上那行設定,
其他非 based on Debian 都無此情形(至少玩過 2x 幾種 Linux)。
訪客
 

文章claudwu » 週三 11月 08, 2006 10:30 pm

hmmm
有人回了啊...可是我解決了

我後來自己有發現要這樣弄...
原因是好像是因為使用pppoe連線
ppp的控制header會佔用掉預期外的空間
使得原本算好好的TCP封包超過最大可接受的大小
加上那排可以限制TCP segment最大到1460(原來是1500)
(pmtu,也可以自己填入指定大小,不過是另外一個參數,懶了自己google吧)
如此就不會產生過常而被認為無效的封包了

所以說,不是debian動了啥手腳,是debian沒動手腳,所以還需要自行設定進去
claudwu
懵懂的國中生
懵懂的國中生
 
文章: 156
註冊時間: 週二 3月 29, 2005 5:33 pm


回到 debian server

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客