Linux

如何使用 iptables 啟用 Windows 共享?

  • September 7, 2011

我在 CentOS5 上有一個 OpenVPN 伺服器,我想通過 VPN 啟用 Windows 共享。

當我嘗試訪問 Windows 共享時,會發生記錄。沒有錯誤或任何東西。

我的 iptables 規則是預設規則加上這些:

iptables -I INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

modprobe ip_conntrack
modprobe ip_conntrack_ftp 

我嘗試添加這些,但沒有通過 VPN 啟用 Windows 共享。

IPTABLES="/sbin/iptables"
LAN="eth0"

$IPTABLES -A INPUT -i $LAN -p tcp --dport 137 -j ACCEPT  # NetBIOS name service tcp
$IPTABLES -A INPUT -i $LAN -p udp --dport 137 -j ACCEPT  # NetBIOS name service udp
$IPTABLES -A INPUT -i $LAN -p udp --dport 138 -j ACCEPT  # NetBIOS datagram service
$IPTABLES -A INPUT -i $LAN -p tcp --dport 139 -j ACCEPT  # NetBIOS session service File/printer sharing and other operations
$IPTABLES -A INPUT -i $LAN -p tcp --dport 445 -j ACCEPT  # Used by Win2k/xp when NetBIOS over TCP/IP is disabled - Microsoft Common Internet File System
$IPTABLES -A INPUT -i $LAN -p udp --dport 445 -j ACCEPT
#$IPTABLES -A INPUT -i $LAN -p tcp --dport 901 -j ACCEPT  # used by SWAT (GUI configuration tool for samba)

有誰知道可能出了什麼問題,也許如何解決?

更新

我的設置看起來像這樣。OpenVPN 伺服器路由所有私有子網,因此當我連接時,我可以通過 SSH 和 ping 伺服器,而我通常在沒有 OpenVPN 連接的情況下無法訪問。

我已經在 Windows、Mac 和 Linux 客戶端上測試了 VPN。

在專用網路上有一個 samba 伺服器。當我使用 Windows 電腦連接 VPN 時,我非常想訪問這些共享。

據我所知,當netbios有點像讓FTP在某種意義上的NAT防火牆上工作時,必須對防火牆做一些事情才能使這項工作。

為了讓 FTP 通過 NAT’ed 防火牆工作,我必須載入

modprobe ip_conntrack
modprobe ip_conntrack_ftp 

因此 FTP 伺服器想要與客戶端建立的連接是耦合的。

netbios 需要類似的處理才能工作是否正確?

你能檢查基本的網路連接嗎?從 Windows openvpn 客戶端,您可以 ping Samba 伺服器嗎?Samba 伺服器可以 ping Windows openvpn 客戶端嗎?通過IP地址?按名字?

您可能還需要從 openvpn 中推送 WINS 資訊,類似於:

push "dhcp-option WINS 192.168.1.2"

或任何充當您網路中的 WINS 伺服器的東西。在這種情況下,您的客戶端應該能夠通過名稱解析 Samba 伺服器。

我不必為 Netbios 載入額外的模組,例如 ip_conntrack。

您可能還想發布“iptables -L -n”和“iptables -L -n -t nat”的(編輯的)輸出,以便我們可以看到實際的防火牆規則是什麼。

引用自:https://serverfault.com/questions/308870