我最近为我的家设置了一个 VPN(使用 Ubuntu 主机和 PPTP,请参阅底部的链接),这样无论身在何处我都可以访问我的服务器,到目前为止,它的工作情况都符合我的要求。我已经设置好,任何通过 VPN 连接的远程计算机都可以进入并访问网络上的任何计算机。我遇到的问题是,通过 VPN 连接的计算机无法被网络内部的任何计算机访问。
因此,假设计算机 1 的 IP 为 192.168.0.10 并且物理上位于网络上,而计算机 2 的 IP 为 [更正,它是192.168.0.101而不是 192.168.1.101(所有内容都在同一个子网上)]并通过 VPN 连接。
计算机 2 可以 ping 通计算机 1 并访问 Windows 共享,但由于某种原因,计算机 1 无法 ping 通计算机 2 或访问 Windows 共享。
不可否认,它确实可以实现我最初的愿望(计算机 2 能够访问网络),但如果它像其他任何计算机一样出现在网络上,我可以看到一些潜在的用途,因此它可以 ping 通其他每台计算机(包括通过 VPN 连接的其他计算机),并且其他每台计算机都可以 ping 通它。
有什么建议可以解决这个问题吗?这只是 VPN 的工作方式,实际上没有问题吗?
我使用了以下指南:http://forums.bit-tech.net/showthread.PHP?t=132029。我还需要使用一些:http://pigtail.net/nicholas/pptp/我需要打开“/etc/sysctl.conf”并取消注释“#net.ipv4.conf.default.forwarding=1”行
编辑 我已经对计算机 1 到计算机 2 以及计算机 2 进行了跟踪路由。
计算机 1 到计算机 2:作为第一跳到达 PPTP 服务器,但超时。
计算机 2 到计算机 1:到达 PPTP 服务器作为第一跳。到达计算机 1 作为第二跳。
答案1
ping 功能正在发挥作用,这很有趣。但实际上它不应该如此。
可能的问题在于路由。如果您使用192.168.0.x
内部地址和192.168.1.x
VPN 地址,内部计算机将不知道如何与 VPN 计算机通信。对于子网外的任何地址192.168.0
,它们会将请求转发到您的路由器(没有更好的说明)。
由于 VPN 机器不在该/24
子网中,它们将转到您的默认路由(192.168.0.1
)并被路由器立即丢弃,因为它也不知道如何处理它们。
有两种方法可以解决这个问题:
在所有内部计算机上设置手动路由,或在路由器中设置单个静态持久路由。
如果你的路由器允许,最简单的解决方案就是在其路由表中添加一条路由
方法和支持将根据您的路由器而有所不同,但要点是您希望所有流向192.168.1.0/24
(或192.168.1.0
网络掩码255.255.255.0
,相同的东西)的流量都发往192.168.0.xxx
您xxx
的 VPN 服务器的内部地址。
如果您需要更多详细信息,或者想要发布您的特定路由器以获得更好的说明,我/我们将尽力提供更多帮助。
编辑:
另一个选择是更改 PPTPd 配置以提供192.168.0.x
地址(确保它们在内部路由器的 DHCP 服务器分配的范围之外)。这样就不需要路由了,因为所有内容都将位于同一个广播域中(该default.forwarding=1
线路实际上将您的服务器变成了一个巨大的交换机)。