比如 tincd 创建了一个 vpn0 接口,地址是 192.168.200.2,掩码 255.255.255.0。现在只有目的地址为 192.168.200.0/24 的包会从 vpn0 这个接口出去,然后被 tincd 处理再从另外一个接口发送出去。
我想要把这个 VPN 作为全局的,但是如果我现在强行把 vpn0 接口作为默认路由,任何包都是发不出去的(个人猜测是任何包从 vpn0 出去后,被 tincd 处理,又会再从 vpn0 出去再被 tincd 接受,形成一个死循环)。
我知道类似的实现 openvpn 是可以实现全局模式的 VPN 的,不知道 tinc 之类能否通过手动修改路由表之类的来实现全局模式( tinc 文档似乎没有提到任何全局模式)。
1
wwqgtxx 2018-06-18 20:28:13 +08:00
自己用 ip route 设置路由表呀
|
2
realpg 2018-06-18 20:33:56 +08:00
直接自己手动设置路由表就是了……愿意怎么设怎么设
|
5
ipwx 2018-06-18 20:42:24 +08:00
你先瞅一眼你的 default 和你的 vpn 路由是怎么写的,一般来说像这样:
default via XX.XX.XX.XX dev ethX onlink 192.168.200.0/24 via YY.YY.YY.YY dev vpn0 然后你瞅一眼你的 VPN 服务器 IP 是啥,比如 ZZ.ZZ.ZZ.ZZ 然后: ip route add ZZ.ZZ.ZZ.ZZ/32 via XX.XX.XX.XX dev ethX onlink ip route add 0.0.0.0/1 via YY.YY.YY.YY dev vpn0 ip route add 128.0.0.0/1 via YY.YY.YY.YY dev vpn0 |
6
cnt2ex OP @realpg
我正文里也说了,我猜测的是,如果把 tun 设备直接作为全局路由,那么会形成死循环,不知道你到底看没看我正文说的。 网上随便找了一篇引用 https://www.cnblogs.com/woshiweige/p/4532207.html |
7
ipwx 2018-06-18 20:44:49 +08:00
|
8
cnt2ex OP @ipwx
实际上你这个我也试过了(这个我的确没有提到,因为我觉得我思路可能完全是错的),我甚至在服务器那边加上了 NAT 的规则也没能把包发过去。 我按照你那样的改法,ping 服务器 ZZ.ZZ.ZZ.ZZ 是能 ping 通的,但是 ping 其他任何地址都是不行的,但是通过 192.168.200.0 接口依然不行。 |
9
ipwx 2018-06-18 20:58:41 +08:00
|
10
noe132 2018-06-18 22:02:36 +08:00
静态路由表了解一下。
我曾今在大学时,用路由器搭建 VPN server,然后路由器作为 Client 连接手机热点,其他电脑通过校园网连接路由器 vpn server 通过手机热点上网。 手动设置一下路由就行了。设置 0.0.0.0/32 的流量 从路由器连接手机热点的 ip 走,然后设置内网网段 172.0.0.0.0/24 走路由器的上一级端口,把内网网段的路由跃点数设置小于 0.0.0.0/32 的跃点数即可。 |
11
bao3 2018-06-18 22:42:45 +08:00
直接路由表就可以了,路由是先匹配细路由再匹配粗路由,先匹配 metric 低的再匹配高,最后匹配 default,除非你不停地指向自己造成 routing loop 否则不可能有问题。
|
12
ioiioi 2018-06-18 22:45:41 +08:00 2
我知道你所说的意思,你可以参考下官方的文档:
https://www.tinc-vpn.org/examples/redirect-gateway/ |
13
wwqgtxx 2018-06-18 22:58:03 +08:00
@cnt2ex 你可以试试把你添加路由表的命令贴上来给大家看看你到底是哪里没有设置对导致的死循环,一般原因都是忘记设置 vpn 服务器的特例路由,或者是你设置错了。你这样直接否定别人的正确操作却不贴上你自己的做法别人也没法给你找原因
|
14
Tyanboot 2018-06-19 01:00:05 +08:00 via Android
#5 说的没错,你还得检查对端服务器有没有开启 IP 转发,以及有没有对应的 iptables masquerade 的规则。
除此以外 tincd 的工作模式有 router 模式和 switch 模式,根据你的描述 tun 设备的话应该是用了 router 模式,可以尝试改成 switch 模式,并把 via 的地址改成对端地址(另一台作为出口设备上 tap 分配的地址)。 当然如果你只是想实现一个全局 VPN,还可以尝试更简单暴力的 shadowvpn。 |
15
tempdban 2018-06-19 01:23:56 +08:00 via Android
“不知道你到底看没看我正文里说的”
... |
16
yegle 2018-06-19 03:09:40 +08:00
OpenVPN 的解决方法是,不动系统默认路由,而是加一条`0.0.0.0/1`的路由到 TUN 的网关。这样绝大多数 IP 都能走 TUN 网关,但是到系统原默认网关的流量不走 TUN。
参考: https://serverfault.com/questions/312860/why-openvpn-use-network-0-0-0-0-netmask-128-0-0-0-as-default-route |
17
defunct9 2018-06-19 06:09:07 +08:00 via iPhone
开 ssh,让我上去试试
|
19
snail1988 2018-06-19 09:42:24 +08:00
@cnt2ex 楼主别急 先学习一下路由表,和 iptables 转发
你现在基础都不懂,即使按照文章通了,以后也难处理相关的问题 |
20
cnt2ex OP 感谢前面给的官方文档。
看到有人收藏就顺便写下咋解决的吧。 问题不是出在系统的路由表上。 而是 tincd 自己内部也维护了一个路由表,所以得在 tincd 的配置里把 subnet 也对应修改掉(改成 0.0.0.0 )。 |
21
chunchu 2019-08-27 22:05:50 +08:00
我也遇到了类似的问题,不过我的与你还是有点不同。
A B C 192.168.0.* <---> 192.168.0.130 111.111.111.111 <---> Internet 10.0.2.70 <---> 10.0.2.251 tinc tinc 想通过 iptables 设置达到目的,不知道该怎么写 iptables。 |
22
chunchu 2019-08-27 22:09:59 +08:00
|
23
chunchu 2019-08-27 22:11:20 +08:00
|