我想要的是:
我想连接到 OpenVPN,并且我的预定义 IP 地址列表通过该连接路由(tun0
)。所有其他流量不受影响(通过eth0
)。
我已尝试过:
- 我想确保
ufw
这不是问题所在,所以我禁用了它(ufw disable
)。 - 我想确保
iptables
这不是问题所在,因此我重置了它,结果如下:
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
(应该可以接受任何连接)
我成功做到了:
- 我可以连接到 OpenVPN 服务器
- 我可以 ping 通 OpenVPN 服务器主机 (
10.8.0.1
) - 我可以 ping 到其他连接的主机(对于此用例不需要,但我可以)
无效的方法:
- 访问 OpenVPN 网络之外的任何内容(
10.8.0.x
)
我如何配置东西:
在客户端,我手动设置路由(在conf文件中):
route-nopull
route 54.175.222.246 255.255.255.255
route 10.8.0.0 255.255.255.0
(54.175.222.246
是 的 IP 地址http://httpbin.org/
)
这实际上将内容发送到 OpenVPN 服务器;日志:
Jan 1 12:02:08 bare2 ovpn-server[25265]: client-deskserver/77.251.109.156:45958 UDPv4 WRITE [229] to [AF_INET]77.251.109.156:45958: P_DATA_V1 kid=0 DATA len=228
Jan 1 12:02:08 bare2 ovpn-server[25265]: client-deskserver/77.251.109.156:45958 UDPv4 WRITE [229] to [AF_INET]77.251.109.156:45958: P_DATA_V1 kid=0 DATA len=228
Jan 1 12:02:08 bare2 ovpn-server[25265]: client-deskserver/77.251.109.156:45958 UDPv4 READ [101] from [AF_INET]77.251.109.156:45958: P_DATA_V1 kid=0 DATA len=100
Jan 1 12:02:08 bare2 ovpn-server[25265]: client-deskserver/77.251.109.156:45958 UDPv4 READ [101] from [AF_INET]77.251.109.156:45958: P_DATA_V1 kid=0 DATA len=100
Jan 1 12:02:08 bare2 ovpn-server[25265]: client-deskserver/77.251.109.156:45958 TUN WRITE [64]
Jan 1 12:02:08 bare2 ovpn-server[25265]: client-deskserver/77.251.109.156:45958 TUN WRITE [64]
Jan 1 12:02:08 bare2 ovpn-server[25265]: client-deskserver/77.251.109.156:45958 TUN READ [123]
Jan 1 12:02:08 bare2 ovpn-server[25265]: client-deskserver/77.251.109.156:45958 TUN READ [123]
然而,要么服务器没有将其重定向到公共互联网连接,或者http 服务器发回的任何内容都不会被 OpenVPN 服务器接收或重定向。我不知道是哪种情况,也不知道如何解决其中任何一个问题。(我发现的大多数帖子都是关于发送全部通过 OpenVPN 进行通信,而不是具体的交通;那些是关于具体的交通,谈到允许东西通过iptables
,但这些事情没有帮助)
有什么建议么?
答案1
在网上搜索了半天,终于找到了这个帖子。
简而言之,我要做的就是:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
(我还必须启用 ipv4 转发,但我很久以前就已经这样做了