我已经为此绞尽脑汁一个星期了,所以终于想向专家求助了。非常感谢大家的帮助。
[注:最初在 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。