我在一台有公网 IP 的服务器上设置了一个 OpenVPN 服务器(VPN ip=10.8.0.1)。实验室里有一台工作站(Ubuntu),有学校 IP,可以访问学校内网资源。
我希望我的 Android 手机和 Windows PC 能够访问这些资源。因此我:
OpenVPN 服务器配置:
dev tun
拓扑子网
服务器 10.8.0.0 255.255.255.0
客户端配置目录 /etc/openvpn/server/ccd
推送“路由 10.8.0.0 255.255.255.0”
推送“路由网关 10.8.0.3”将我的工作站连接到服务器并获取 ip 10.8.0.3,其 ccd 配置(相当于客户端配置)是:
ifconfig-推 10.8.0.3 255.255.255.0
在工作站中,使用 iptables 并添加了一些项目:
$ sudo iptables -t filter -S
-P 输入接受
-P 转发接受
-P 输出接受
$ sudo iptables -t nat -S
-P 预路由接受
-P 输入接受 -P
输出接受-P
后路由接受
-A 后路由 -s 10.8.0.0/24 -o wlx0810752b55c9 -j MASQUERADE我家里的电脑的ccd配置是:
ifconfig-push 10.8.0.5 255.255.255.0
推送“路由网关 10.8.0.3”
推送“重定向网关 def1 旁路 dhcp”
推送“dhcp 选项 DNS 8.8.8.8”结果1 该电脑无法连接到互联网。该电脑的路由表为:
路线打印 -4
0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.21 35
0.0.0.0 128.0.0.0 10.8.0.3 10.8.0.5 291
128.0.0.0 128.0.0.0 10.8.0.3 10.8.0.5 291
后两项是“redirect-gateway def1”添加的,没有删除原始默认网关。我很好奇为什么 def1 可以重定向流量?因为原始默认网关仍然存在并且具有更好的度量,因此没有流量会通过 VPN。
结果 2 我的 Android 手机也无法做到这一点。
$ busybox ip route show table all
default via 10.183.93.203 dev ccmni0 table 1002
default dev tun0 src 10.8.0.4
10.8.0.0/24 dev tun0 table 1015
10.8.0.0/24 dev tun0 src 10.8.0.4 ...
我确保工作站没有接收流量:
$ sudo tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
$
我研究过很多与此相关的主题,但没有可行的解决方案。所以,任何人都可以帮助我,任何建议我都会很感激!
答案1
在服务器的 ccd 目录中,工作站文件应包含 iroute 请尝试一下,我正在尝试做同样的事情,但不使用访问服务器,而是使用 Linux 客户端作为网关,如下所示 https://www.youtube.com/watch?v=b7qr0laM8kA