我在 Internet 服务器上的端口 8090 上运行了一个专有服务(实际上是在 VBoxHeadless VM 上运行并从主机捕获此端口)。
Nmap 显示主机和虚拟机上的端口 8090 均已打开。服务似乎已正常启动(并根据要求停止)。Telnet 能够从远程客户端连接到该端口(但 telnet 中没有显示任何数据,因此我无法确定它是否正常工作)。其他服务(例如 Postfix 和 Dovecot)也在虚拟机中运行(尽管是 Debian Lenny,而我感兴趣的主机和客户机运行 Ubuntu Lucid),并且同一台虚拟机上的 Samba 共享运行正常。
但是客户端(Windows,通过 Internet 通过 OpenVPN(正在运行 - Samba 在其上运行良好)连接到主机)说它无法在端口 8090 上访问该服务。
是什么阻止了它?可能是 app-armour/selinux/hosts.allow 之类的东西吗?该服务 100% 是手动安装的(按照手册操作),没有脚本)。
更新,更具体地说。我自己设置了所有内容,大部分都是默认配置,没有特殊的路由/防火墙。OpenVPN 客户端和服务器配置来自 OpenVPN 文档(当我没有使用虚拟机时,它们曾经工作过),iptables 规则(主机和虚拟机上的)现在设置为接受所有并且不执行任何特殊操作,我只打算在系统完全正常工作后保护它们。hosts.allow/deny 似乎是空的(所有内容都是 #-ed,因为它是开箱即用的)。
正如我上面所述,OpenVPN 隧道似乎运行良好,因为 ping 没有任何问题,并且通过 445 端口访问 Samba 也运行良好(但如果不使用 OpenVPN,则无法通过互联网访问)。OpenVPN 配置中没有设置特殊的访问/路由规则,iptables 中也没有。路由方案很简单 - 客户端请求服务器主机(可以通过它运行的 OpenVPN 或直接通过互联网访问),然后 VirtualBox 的 natpf 规则捕获特定端口并将它们带到虚拟机(有 2 个虚拟机,没有冲突,一个运行邮件服务器,另一个运行 Samba+FireBird+AbraAppServer(最后一个是实际有问题的服务))。
我对 app-armour/selinux 或 Ubuntu Lucid 中的任何内容一无所知 - 可能是吗?请记住,如果它在那里,它是默认设置的,就像它是 Ubuntu 10.04 Server 中的开箱即用功能一样。
答案1
iptables -L
并检查那里的链条,端口 8090 上的某些数据包可能存在奇怪的阻止规则。hosts.allow 是另一个需要检查的。
使用 VPN 时需要检查的一件事是路由器配置。VPN 子网是否被识别?路由器上是否有任何明确的允许/拒绝规则?如果有,它们允许/拒绝什么,VPN 子网是否包含在其中?您是否在路由器上为端口 8090 设置了端口转发/直通?
由于您直接通过 VPN 连接到计算机而不是路由器,因此您可能需要设置一条规则,当(且仅当)数据来自您的 VPN 子网/地址时,将流量从端口 X 转发到端口 8090,然后尝试通过 VPN 访问端口 X。如果此方法有效,则说明本地计算机在允许流量到端口 8090 时存在问题;如果此方法无效,则您可以仔细查看路由器的配置,因为 OpenVPN 的 NAT/防火墙穿越似乎无法在您的网络上正常工作。