这似乎是一个热门话题,但我找不到任何解决我遇到的相同问题的方法。
设置如下:我在 linksys WRT54GL 上有一个 DD-WRT 路由器(版本 14896)。
我在局域网中有一个文件服务器,在广域网外有一个客户端服务器。我的客户端可以通过广域网端口连接到VPN。它获得IP 192.168.66.6。(省略192.168转发)
从客户端(mac 通过 wan 连接到 vpn)我无法 ping 66.1、66.2、66.5 或内部服务器 54.50 或内部 lan 路由器 54.1。我可以说它确实到达了路由器,因为 ping 会导致 wan 灯闪烁(我将间隔设置为 .01 以确保它
从路由器(ssh 进入路由器)我无法 ping 通客户端 66.6 或路由 66.2,但我可以 ping 通服务器 66.1
为了测试目的,VPN 路由器和客户端都插入另一个 DHCP 路由器,因此从技术上讲它不是通过互联网连接的。该范围是 192.168.1.0/24
这是mac客户端连接时的路由表:
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.254 UGSc 55 0 en0
default 192.168.66.5 UGScI 0 0 tun0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 63 285476 lo0
169.254 link#4 UCS 0 0 en0
192.168.1 link#4 UCS 3 0 en0
192.168.1.64/32 link#4 UCS 1 0 en0
192.168.1.64 b8:e8:56:44:b7:52 UHLWI 0 25 lo0
192.168.1.65 30:10:e4:4d:ce:28 UHLWI 0 3 en0
192.168.1.69 0:23:12:fa:8:f8 UHLWI 0 0 en0 689
192.168.1.77 98:fc:11:7c:d3:e4 UHLWIi 2 21412 en0 1155
192.168.1.254/32 link#4 UCS 1 0 en0
192.168.1.254 60:fe:20:61:bb:31 UHLWIir 60 752 en0 1200
192.168.54 192.168.66.5 UGSc 0 0 tun0
192.168.66 192.168.66.5 UGSc 0 0 tun0
192.168.66.5 192.168.66.6 UHr 3 0 tun0
192.168.66.5/32 link#13 UCS 0 0 tun0
路由器的路由表
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.254 0.0.0.0 255.255.255.255 UH 0 0 0 vlan1
192.168.66.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
192.168.54.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 vlan1
192.168.66.0 192.168.66.2 255.255.255.0 UG 0 0 0 tun0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 vlan1
我的 openvpn 服务器配置
push "route 192.168.54.0 255.255.255.0"
push "dhcp-option DNS 192.168.66.1"
server 192.168.66.0 255.255.255.0
dev tun0
proto udp
cipher AES-256-CBC
auth SHA512
keepalive 10 120
dh /tmp/openvpn/dh.pem
ca /tmp/openvpn/ca.crt
cert /tmp/openvpn/cert.pem
key /tmp/openvpn/key.pem
client-to-client
management localhost 5001
我的防火墙命令:
iptables -I INPUT 1 -p udp --dport 1194 -j ACCEPT
iptables -I FORWARD 1 --source 192.168.66.0/24 -j ACCEPT
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
除了上面的内容之外,我还尝试添加这些内容
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT
此外,VPN 路由器上的防火墙也已禁用。我尝试了多种 iptables 规则组合并调整了一些其他设置,但仍然无法解决这个问题。
来自客户端的路由测试:
#: route get 192.168.66.1
route to: 192.168.66.1
destination: 192.168.66.0
gateway: 192.168.66.5
interface: tun0
#: route get 192.168.54.1
route to: 192.168.54.1
destination: 192.168.54.0
mask: 255.255.255.0
gateway: 192.168.66.5
interface: tun0
从 VPN 服务器进行路由测试:
#: ip route get 192.168.66.6
192.168.66.6 via 192.168.66.2 dev tun0 src 192.168.66.1
cache mtu 1500 advmss 1460
答案1
我不知道这有多大帮助,但使用 DD-WRT OpenVPN GUI 对我来说很好。我还没有让 CLI 工作:
我有一个远程 OpenVPN 服务器,可以很好地与我的 PC 和 Android 手机配合使用。我最近将 dd-wrt 放在我的路由器上,一台 D-Link DIR-825 和一台 Netgear r7000;我现在只使用 r7000。我在路由器上有一个 USB 棒,例如,它可以在启动时很好地设置交换文件并将其添加到交换中。
我已经通过剪切粘贴服务器上创建的 .ovpn 文件的元素在路由器中设置了 OpenVPN 客户端。这工作正常。
但是,我想轻松地为不同的服务器使用备用客户端 ovpn 文件,而不必删除/覆盖、剪切和粘贴新信息到路由器中。因此,我在 USB 上放入了几个客户端 ovpn 文件,我知道这些文件在我的 PC 和手机上可以正常工作。
我尝试使用这些备用 ovpn 文件,首先禁用路由器中的 OpenVPN 服务,然后检查我是否仍能通过 ISP 从我的 PC 收到 ping。通过作为路由器的 ssh 登录 shell,我尝试使用 openvpn file.ovpn 启动新的 OVPN 服务。它没有起作用——我的 PC 没有远程 ping。然后我终止了 openvpn 进程,并恢复了对 ISP 的 ping。我还通过浏览器重新启动了 dd-wrt OpenVPN 服务,并恢复了我原来的 OVPN 服务。
因此,一切似乎都运行正常,除了无法通过命令行启动任何备用 OVPN 服务
openvpn file.ovpn
添加 --daemon 没有什么区别:
请注意,当在 GUI 中禁用 OVPN 服务时,中没有文件/tmp/openvncl/
。为了遵循 GUI 发出的相同调用(请参阅ps
),我将 route-up.sh 和 route-down.sh 从那里复制到我的 sda1 目录中。
然后我跑了
xovpn.sh server
xovpn.sh
在哪里/tmp/mnt/sda1/
#!/bin/sh
killall openvpn
/usr/sbin/openvpn --config /tmp/mnt/sda1/$1.ovpn --route-up /tmp/mnt/sda1/route-up.sh --down-pre /tmp/mnt/sda1/route-down.sh --daemon
(本练习的目的是能够简单地使用 CLI 来更改服务器。)
此命令在 下显示正常,ps
就像使用 GUI 时一样。但是,我根本无法连接到互联网。我在 3 台服务器上尝试了此操作 - 我自己和两台来自 privatetunnel 的服务器 - 所有这些服务器在我的 PC 和手机上都运行良好。