首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过OpenVPN接口路由Tinyproxy传出连接

通过OpenVPN接口路由Tinyproxy传出连接
EN

Server Fault用户
提问于 2021-01-10 17:33:46
回答 1查看 1.1K关注 0票数 0

我创建了一个Ubuntu16.04LXD容器,并在其中安装了Stunnel、Tinyproxy和OpenVPN客户端。

其目标是通过Stunnel连接到Tinyproxy,并强制Tinyproxy使用OpenVPN的接口进行传出连接。

Stunnel -> Tinyproxy运行良好--浏览器中的页面正在按预期加载,但是,当我启动OpenVPN服务时,客户端的Stunnel会随着超时而失败,浏览器一直在等待响应。

由于Tinyproxy 1.8.3 (ubuntu16.04的最新版本)不支持将传出连接绑定到特定接口的选项,所以我不得不让OpenVPN通过其tun0接口添加默认路由。

OpenVPN客户端作为expexted工作-来自容器的所有数据包都通过VPN。带有容器的主机是具有公共IP的远程主机。DNAT被安装到容器中。

我真的不熟悉路由内部,我只能设置SNAT/DNAT和过滤与iptables。因此,我不明白问题的根源。

以下是环境最重要的参数:

ifconfig

代码语言:javascript
复制
$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:16:3e:5f:46:ba
          inet addr:10.227.60.197  Bcast:10.227.60.255  Mask:255.255.255.0
          inet6 addr: fe80::216:3eff:fe5f:46ba/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16291 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15632 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5044056 (5.0 MB)  TX bytes:4171187 (4.1 MB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2446 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2446 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:2483699 (2.4 MB)  TX bytes:2483699 (2.4 MB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.3  P-t-P:10.8.0.3  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:252 (252.0 B)  TX bytes:252 (252.0 B)

路线

代码语言:javascript
复制
$ route -v -e
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         10.8.0.1        128.0.0.0       UG        0 0          0 tun0
default         10.227.60.1     0.0.0.0         UG        0 0          0 eth0
10.8.0.0        *               255.255.255.0   U         0 0          0 tun0
10.227.60.0     *               255.255.255.0   U         0 0          0 eth0
128.0.0.0       10.8.0.1        128.0.0.0       UG        0 0          0 tun0
 10.227.60.1     255.255.255.255 UGH       0 0          0 eth0

特效

代码语言:javascript
复制
...
accept = 10.227.60.197:8081
connect = 127.0.0.1:8080
...

丁丙氧基

代码语言:javascript
复制
...
Port 8080
Listen 127.0.0.1
...

vpnclient.conf

代码语言:javascript
复制
dev tun
proto udp
remote  1195
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
key-direction 1
verb 3
#route-nopull 
...

iptable为空。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-01-13 17:27:50

问题在于路由表的配置。

我注意到在删除OpenVPN添加的路由时:

代码语言:javascript
复制
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         10.8.0.1        128.0.0.0       UG        0 0          0 tun0

尝试执行ping 8.8.8.8 -I tun0并同时使用tcpdump -nn icmp监视数据包,回复icmp请求实际上击中了eth0,但不再继续。经过一些调查,我发现,由于服务器有两个接口,所以tun0也应该有一个单独的路由表和它的规则。

最后,我将tinyproxy更新为最新版本,以便能够指定出站接口,并禁用OpenVPN以推送默认路由,如我删除的路径。

然后,我将表添加到/etc/iproute2/rt_tables中:

代码语言:javascript
复制
...
12 vpn

在此表和规则中添加了路由:

代码语言:javascript
复制
ip route add 10.8.0.0/24 dev tun0 src 10.8.0.3 table vpn
ip route add default via 10.8.0.1 dev tun0 table vpn

ip rule add from 10.8.0.3/32 table vpn
ip rule add to 10.8.0.3/32 table vpn

在那之后,一切都如愿以偿。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1049272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档