我正在按照这个教程http://wiki.debian.org/OpenVPN#TLS-enabled_VPN和这一个http://users.telenet.be/mydotcom/howto/linux/openvpn.htm创buildopenvpn连接到我的远程局域网。
但是这两个例子都假设两个局域网都有不同的地址(例如192.168.10.0/24和192.168.20.0/24,请查看这张图片i.stack.imgur.com/2eUSm.png)。
不幸的是,在我的情况下,本地和远程LAN都有192.168.1.0/24地址。 我可以直接在openvpn服务器上连接(我可以ping通并用sshlogin),但是我看不到远程局域网上的其他设备(没有提到通过浏览器访问这些设备) 。 不知道解决问题可能是这个原因吗? 如果没有 – 如何定义路由,所以我可以ping远程局域网中的其他设备?
你沉没了 所有的机器都使用相同的子网。 你如何build议他们能够区分本地和远程主机? 你唯一的select可能是从每个站点的VPN主机进行一些表单或端口转发。 这将为less数服务工作,但将是一个长期支持的噩梦。
你真的只需要咬下子弹,重新编号的网站之一。
我的猜测是你没有掌握一些核心的networking基础知识。 我强烈build议你阅读这个关于IPv4子网划分的Serverfault问答。 这将帮助你更好地理解你目前困难背后的原因 。
即使这个问题已经得到解答,这里还有另外一个select:
NETMAP目标来翻译一切 如果您select192.168.2.0/24作为一方的替代子网,则可以使用此规则来转换networking:
iptables -t nat -A POSTROUTING -o tap0 -j NETMAP --to 192.168.2.0/24
在我看来,NETMAP实际上是确保networking不会相互冲突的一个非常有效的方法。 许多路由器使用相同的私有地址空间,有时没有办法改变你不拥有的networking(例如,在网吧,公共WLAN中)的设置。 是的,你可以改变你自己的networking使用一个相当不寻常的地址空间,但是一些提供者分发locking的设备没有办法改变,这将需要你添加更多的networking设备。 哦,有时候只需要input10.0.0.x而不是192.168.214.x就可以了。
TL; DR:虽然在专业设置中不可取,但NETMAP可能派上用场。
下面是一个例子,它允许我在两边使用10.0.0.x,并通过OpenVPN连接。 而不是推动真正的路由到客户端,你使用一个不常见的子网:
OpenVPN的
push "route 10.11.12.0 255.255.255.0"
NETMAP
iptables -t nat -A PREROUTING -d 10.11.12.0/24 -j NETMAP --to 10.0.0.0/24
源NAT (假设你使用的是OpenVPN默认的10.8.0.0/24子网)
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j SNAT --to-source PUBLICIP
即使使用默认的网关replace,这也可以很好地工作。 如果您使用自己的DNS,可能会变得麻烦:
push "dhcp-option DNS 10.11.12.1"
这是因为尽pipe您可以访问DNS服务器(位于10.0.0.1),但它将基于其子网返回地址,而不是NETMAPed。 这可能有办法。 我正在考虑BIND的观点,例如,不知道Samba是否有这样的能力。