如何使用 iptables 启用 Windows 共享?

如何使用 iptables 启用 Windows 共享?

我在 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 时,我非常想访问这些共享。

从我在 Google 上搜索到的信息来看,netbios 有点像让 FTP 在 NAT 防火墙上工作,即必须对防火墙进行一些操作才能使其工作。

为了让 FTP 能够穿过 NAT 防火墙,我必须加载

modprobe ip_conntrack
modprobe ip_conntrack_ftp 

所以FTP服务器要与客户端建立的连接是耦合的。

Netbios 是否需要类似的处理才能工作?

答案1

您能检查基本网络连接吗?从 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”的(已编辑)输出,以便我们了解实际的防火墙规则。

相关内容