打开OpenVPN服务器后面的子网LAN

我在我的工作networking上build立了一个OpenVPN服务器,并且能够通过vpn从远程机器访问服务器。 但是我不能解决如何访问服务器后面的局域网。

networking布局是:

---------- ------- -------- ---------------- |Internet|-->|Modem|-->|Switch|-->|OpenVPN Server| ---------- ------- -------- ---------------- 

服务器是一个Ubuntu服务器。 我在服务器上启用了IP转发。

我们的网关/调制解调器是一个Linksys的WAG54G2,并连接到一个WinXP机器。

有谁知道如何打开OpenVPN服务器上的子网?

这个设置是CentOS特定的,但是你的安装可能是类似的。 configuration也是为2.0版本,2.1系列似乎使用不同格式的configuration文件。 它还假定您使用两个Linux机器来执行此操作,而不仅仅是joinWindows XP端点 – 所以您需要对正在使用的Windows XP安装进行修改。 在这个例子中,地址是随机select的,所以下面是它们的分配方式:

  • 1.1.1.1是面向互联网的服务器的公共地址
  • 2.2.2.2是你家里面向互联网的服务器的公共地址
  • 192.168.1.0/24是你工作的networking
  • 192.168.1.1是1.1.1.1的机器的内部地址
  • 192.168.1.254将是具有1.1.1.1的机器的VPN端点
  • 192.168.2.0/24是你家的networking
  • 192.168.2.1是具有2.2.2.2的机器的内部地址
  • 192.168.2.254将是具有2.2.2.2的机器的VPN端点

  • 1.1.1.1和2.2.2.2 都只能通过端口1194上的防火墙接收stream量。 从其他地方接受stream量是没有意义的,它会减less潜在的攻击。

秘密静态密钥

使用静态键将是最简单的。 阅读说明如何制作一个。 这里是以root身份从1.1.1.1开始的简短版本:

 openvpn --genkey --secret > /etc/openvpn/secret.key chmod 600 /etc/openvpn/secret.key scp /etc/openvpn/static.key [email protected]:/etc/openvpn/secret.key ssh [email protected] chmod 600 /etc/openvpn/secret.key exit 

本地示例(工作LAN)configuration:

假设OpenVPN在启动时读取/etc/openvpn的内容,您可以将此文本放置在工作机器上的/etc/openvpn/home-vpn (1.1.1.1)。

 #daemon home-vpn local 1.1.1.1 remote 2.2.2.2 proto tcp-server port 1194 dev tun0 ifconfig 192.168.1.254 192.168.2.254 route 192.168.2.0 255.255.255.0 192.168.1.254 6 route-delay 5 verb 3 nice 1 secret /etc/openvpn/secret.key comp-lzo passtos 

示例远程(家庭LAN)configuration:

假设OpenVPN在启动时读取/etc/openvpn的内容,您可以将此文本放在您的主机(2.2.2.2)上的/etc/openvpn/work-vpn

 #daemon work-vpn local 2.2.2.2 remote 1.1.1.1 proto tcp-server port 1194 dev tun0 ifconfig 192.168.2.254 192.168.1.254 route 192.168.1.0 255.255.255.0 192.168.2.254 6 route-delay 5 verb 3 nice 1 secret /etc/openvpn/secret.key comp-lzo passtos 

评论

这里的例子有openvpn服务,运行时优先级为1; 如果你不希望这样做,删除整个读取nice 1行,让它像其他程序一样运行。 压缩通过两端的压缩实现, passtos允许TOS数据包在整个VPN中生存。 如果你喜欢的话,这两个也可以被禁用。 有些人会注意到6的路由成本似乎有点高,这是真的,它可以低得多(取决于设置4-5),但是6提供足够的“达到”子网和额外的路由。

最后,因为我在凌晨1点31分发布这个消息,我确定我忘记了一些东西或者标记了错误的东西,所以请随时查看设置并仔细检查。

完整答案。

  • 看到Avery Payne的详细笔记,这一切都在那里。

简答。

  • 远程客户端需要通过VPN连接将stream量路由到您的LAN
  • 局域网主机需要将VPN专用局域网的stream量路由到OpenVPN服务器

中等答案。

远程客户端

当您的OpenVPN客户端连接到OpenVPN服务器时,客户端现在将拥有至less2个IP地址。

  • “IP地址A”客户端用于连接到Internet和OpenVPN服务器
  • 由OpenVPN客户端设置的“IP地址B”

问题是,在正常的情况下,你的客户端不知道在你的局域网里面的IP范围的通信量。 客户端通常会有一个默认网关(即,我向哪里发送stream量的目的地,我不知道)转发给您的ISP。

解决这个问题的更好办法是让OpenVPN客户端在成功build立VPN隧道后设置路由。 看看OpenVPN服务器configuration的推送function。 例如:

推“路由LAN-IP子网”

(如果你的远程客户端是Windows的话,你可能需要在客户端configuration中添加下面的内容)

路线方法EXE

上述的组合应该使远程客户端通过VPN传输到局域网主机,但是现在你需要让局域网主机知道在哪里发送响应。

局域网主机

如果你只是通过OpenVPN服务器进行工作以外的连接,那么你可以确保那个VPN服务器是你局域网的默认网关。 除此以外, …

  • 在局域网主机上,通过你的OpenVPN服务器为“IP地址B”子网设置一个路由到网关
  • 你可以连接你的局域网和openvpnnetworking。
  • 将您的LAN中的机器添加到vpn。