[求助]linux 如何在两个 tun 之间转发数据包?

2015-04-24 21:33:50 +08:00
 ihciah

在同一台机器(A)上同时开了一个openvpn的服务端和客户端
客户端连接B主机,设备tun3,10.8.0.x
服务端对其他机器提供ovpn服务,设备tun9,10.9.0.1
如何将tun9的数据包经过tun3中转呢?

谢谢!

4955 次点击
所在节点    Linux
6 条回复
aarwwefdds
2015-04-24 22:35:16 +08:00
你需要策略路由。。用ip route命令新建一个路由表1。用ip rule 将来自10.9.0.1/16的数据包走路由表1 然后设定路由表1的默认路由到tun3设备的网关

一般的做法还得到“B”设置返回的路由,不过如果你不介意多次NAT,可以用iptables直接设置NAT表POSTROUTING链默认指向MASQUERADE就可以了
catinsnow
2015-04-24 22:36:56 +08:00
定义个路由表默认走tun3, 用策略路由 ip rule让10.9.0段IP lookup 这个表。
tmqhliu
2015-04-24 22:43:30 +08:00
内核开启转发功能,然后再添加路由即可
ihciah
2015-04-24 23:26:13 +08:00
感谢大家!
问题解决:
iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -o tun3 -j MASQUERADE

发现虽然转了两层openvpn,浏览网页正常,DNS正常,iOS的ingress依旧提示无法建立安全连接QAQ
opkgopkg
2015-04-25 12:07:19 +08:00
萌。
liuchen9586
2015-04-26 09:10:39 +08:00
https://www.v2ex.com/t/180070

也许我写的这个教程能帮到你

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/186118

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX