使用 OpenVPN 远程访问本地网络资源

使用 OpenVPN 远程访问本地网络资源

我已经为此绞尽脑汁一个星期了,所以终于想向专家求助了。非常感谢大家的帮助。

[注:最初在 ServerFault 上发布了这篇文章,后来有人说这里是更好的选择。]

我正在尝试做什么:我的本地(家庭)网络上有一些资源,我希望能够远程访问。我需要能够在远程计算机和 iOS 设备上访问它们。最后一点意味着我必须使用 TUN 而不是 TAP,因为 iOS OpenVPN 客户端不支持 TAP。(当我在公共 wifi 信号不稳定的区域时,能够使用此 VPN 访问更广泛的互联网也很好,但这是次要目标。)

我目前所做的:我有一台旧的 Linksys e1200 路由器,上面刷了 DD-WRT 并支持 OpenVPN(具体来说是 DD-WRT v24-sp2 (06/07/14) vpnkong),并且已成功设置 OpenVPN 并从主路由器转发端口,以便我可以远程连接到它。(我知道我可以连接,因为当我远程登录 VPN 时,我可以访问路由器管理页面。)但是,一旦我的远程客户端连接上,我就无法访问 LAN 资源。

我一直在尝试各种 OpenVPN 配置/端口转发/iptables 命令,但似乎什么都不起作用。话虽如此,我对这种级别的网络配置还很陌生,正在尝试学习路由的工作原理,所以如果我做了一些愚蠢的事情,请告诉我;一切都是可以改变的。

我的设置

<The Internets>
     |
     |
--------------------------------
|   DSL modem                  |
|   Internal IP: 192.168.1.254 |
--------------------------------    
       |    
       |
-------------------------------          ----------------------------------
| Main router                 |          |  DD-WRT router running OpenVPN | 
|  192.168.1.67 from modem    | -------- |  IP:  10.0.0.17                |
|  Internal IP:  10.0.0.1     |          |  Subnet Mask: 255.255.255.0    |
|  Subnet Mask: 255.255.255.0 |          |  Gateway:  10.0.0.1            |
|  Hands out:  10.0.0.32-254  |          |  OpenVPN is server             |
|                             |          |       10.0.1.16/225.255.255.240|
-------------------------------          ----------------------------------
      |                                              |
      |                                              | 
Other things connected here       And some connected here as well, for testing

我很确定 DSL 调制解调器和主路由器的端口转发正确,因为我能够远程连接 DD-WRT 路由器和 OpenVPN。我在端口 443 上通过 TCP 运行。(我确实意识到我在这里使用了双重 NAT,如果这是个问题,我可以更改它。如果这在某种程度上有帮助,我也可以将 OpenVPN 服务器直接插入 DSL 调制解调器。)

我还知道,当我将电脑硬插入 DD-WRT 路由器时,我可以访问我想要的所有 LAN 资源。所以至少它在本地工作正常。

我当前的 OpenVPN 配置

server 10.0.1.16 255.255.255.240
push "dhcp-option DNS 10.0.0.1"
push "route 10.0.1.0 255.255.254.0"
push "route 10.0.0.0 255.255.254.0"
route 10.0.1.0 255.255.254.0
route 10.0.0.0 255.255.254.0
dev tun0
proto tcp
port 443
keepalive 15 30
cipher AES-256-CBC
daemon
verb 5
mute 5 
comp-lzo 
duplicate-cn 
tls-server 
client-to-client 
dh /tmp/openvpn/dh.pem c
a /tmp/openvpn/ca.crt 
cert /tmp/openvpn/cert.pem 
key /tmp/openvpn/key.pem 
management localhost 14 

我当前在 OpenVPN 路由器上安装的防火墙

iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
iptables -I FORWARD 1 --source 10.0.0.0/23 -j ACCEPT
iptables -t nat -s 10.0.0.0/23 -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -J ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT

其他随机(有用?)信息:在 OpenVPN 路由器上,我禁用了 WAN 和 DHCP。在“设置 > 高级路由”屏幕中,我将操作模式设置为“RIP2 路由器”(我的主路由器也是 RIP2 路由器)。

DD-WRT 上的路由表:

Destination  Subnet Mask        Gateway     Flags   Metric  Interface
10.0.1.18    255.255.255.255    0.0.0.0     UH      0       tun0
10.0.1.16    255.255.255.240    10.0.1.18   UG      0       tun0
10.0.0.0     255.255.255.0      0.0.0.0     U       0       LAN & WLAN
10.0.0.0     255.255.254.0      10.0.1.18   UG      0       tun0
169.254.0.0  255.255.0.0        0.0.0.0     U       0       LAN & WLAN
0.0.0.0      0.0.0.0            10.0.0.1    UG      0       LAN & WLAN

我很乐意发布其他有用的信息。再次感谢您!提前致谢。

答案1

简单是一件美好的事情。

最好在您的设备上使用 Mega / dropbox 客户端。如果您需要打印到本地打印机,请安装 CloudPrint (Android) 或适用于 iOS 的版本。

否则,请采取简单的 VPN 路线并使用 TeamViewer VPN。确保客户端和主机网络上的 IP 范围不同。VPN 可能很棘手,只要 1 个错误的偏好,它就不会按预期工作。

我会交换路由器并将当前的主路由器变成一个简单的哑交换机,可以接受来自“新”主路由器的 DHCP。

相关内容