Networking

為什麼 iptables 仍然阻止我的 samba?

  • August 18, 2011

我目前正在與 iptables 和 samba 戰鬥。

我讀到 samba 需要在 tcp 和 udp 上打開埠 137-139 和 445。

這是我的 iptables 配置的相關部分

...
# forward valid incoming connections from lan to lan-services chain
-A INPUT -i eth1 -s 192.168.17.0/24 -p udp -m conntrack --ctstate NEW -j LANSERV
-A INPUT -i eth1 -s 192.168.17.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j LANSERV
...
# samba
-A LANSERV -p tcp -m tcp --sport 137:139 --dport 137:139 -j ACCEPT
-A LANSERV -p udp -m udp --sport 137:139 --dport 137:139 -j ACCEPT
-A LANSERV -p tcp -m tcp --sport 445 --dport 445 -j ACCEPT
-A LANSERV -p udp -m udp --sport 445 --dport 445 -j ACCEPT

好的,192.168.17.* 是我連接到 eth1 的本地子網。這些規則有什麼問題?samba 是否需要更多埠?

它絕對是防火牆,因為 -A INPUT -i eth1 -s 192.168.17.0/24 -j ACCEPT在頂部添加使 samba 工作。

編輯:我正在嘗試從 Windows 7 機器連接。

“源埠”是指遠端機器將數據包發送到您的伺服器的埠。很少,如果有的話,客戶端到伺服器的數據包是從它們到達的同一個遠端埠發送的。這是由於大多數作業系統的限制規定普通使用者不能打開低於某個限制的埠(在 Linux 中是低於 1024 的任何埠)。

因此,被定向到您的機器的數據包的源埠很可能來自遠端主機上的一個隨機的、高編號的埠。本質上,埠號並不重要,也可以不指定。

上面的規則預期數據包來自遠端埠 137-139,如果沒有,則不會擷取它們。刪除--sport 137:139它,它應該接受從遠端機器的隨機高埠到您的埠 137-139 的流量。

引用自:https://unix.stackexchange.com/questions/18948