我使用 VPN 只是为了获得专用/静态 IP(因为我的家庭网络有动态 IP,因为它的电缆)。我不在乎隐藏我的身份等。我在运行 Tomato 固件的路由器上使用 OpenVPN 客户端设置了 VPN。
我想要的是,当流量进入 VPN IP 并到达我的路由器时,根据流量来自的 IP,它会被重定向到我家庭网络中的特定设备。我的网络中的每个设备都分配有一个静态 IP,过去我使用过使用 PPTP 的不同 VPN,而且它刚好起作用,例如 Tomato 的常规端口转发规则运行良好,并且根据流量来自何处,它会自动路由到连接到我的路由器的正确设备。
但是现在我使用的 VPN 使用 OpenVPN 而不是 PPTP,看来 Tomato 中的端口转发规则不再起作用了?我不知道如何根据端口号和发送请求的 IP 将流量发送到家庭网络中的正确设备。我注意到 Tomato 中 OpenVPN 客户端设置页面中的“路由策略”选项卡,但这对我来说毫无意义。
我需要在 Tomato 的某个地方添加某种脚本吗?一些 iptables 规则之类的?我不能直接使用 Tomato 中的端口转发配置页面,这似乎很奇怪。或者我只需要启用/禁用 OpenVPN 客户端配置页面中的某些选项?我对此并不了解,任何建议都将不胜感激
答案1
我认为我的Reddit 上的问题可能会对你有帮助。
我将在这里重复一下:
因此,在查看了提供 VPN 的协会,我们最终得到了以下解决方案。
192.168.1.1
是路由器的默认IP,可以在http://192.168.1.1/basic-network.asp。YYY.YYY.YYY.YYY
是 VPN 隧道的 IP。
要存储在 VPN 启动时运行的自定义脚本,请使用浏览器启用 JFFShttp://192.168.1.1/admin-jffs2.asp. 保存设置,部分服务将会重新启动(/jffs/ 将会被挂载)。
路由器上的 Telnet:
telnet 192.168.1.1
root
使用您通常用于访问 Tomato 的密码登录。在 /jffs/ 中创建并编辑脚本:
vi /jffs/vpnup.sh
将以下内容添加到脚本中:
#!/bin/sh # Script to be run when the VPN is brought up # Use the VPN to route all packets through the tunnel. iptables -t nat -A PREROUTING -s 0.0.0.0/0 -d YYY.YYY.YYY.YYY -j WANPREROUTING # Apply the port forwarding rules to the tunnel. iptables -I FORWARD 1 -i tun11 -s 0.0.0.0/0 -d 0.0.0.0/0 -m state --state NEW -j wanin
Esc
通过输入,:
,w
,q
然后保存并退出 viEnter
。使脚本仅可由 root 读取和执行:
chmod 700 /jffs/vpnup.sh
退出 telnet 会话:
exit
将以下行添加到“自定义配置”表单控件中http://192.168.1.1/vpn-client.asp在“高级”选项卡中:
up /jffs/vpnup.sh
保存设置。
(重新)启动您的 VPN。
每次启动 VPN 时,都应更新 iptables 以通过 VPN 路由所有流量,并将端口转发规则应用于其隧道。
一些有用的调试命令:
ip addr show
(在路由器)ip route show
(在路由器)iptables -nvL
(在路由器)iptables -t nat -nvL
(在路由器)tcpdump -ni any port 80
(在服务器)
我希望这会有所帮助或会有所帮助。