拥有这种网络布局https://i.stack.imgur.com/NQXDl.jpg我可以使用 mode=switch 和 tinc 使其工作,但不能使用 mode=routed
这些是网络详细信息
论量子 这些是路由/配置(提示,外部 IP 已被混淆为 1.1.1.1)
netstat -rn4
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 1.1.1.1 UGS vtnet0
8.8.8.8 1.1.1.1 UGHS vtnet0
10.1.5.0/24 link#2 U vtnet1
10.1.5.1 link#2 UHS lo0
10.1.6.0/24 tinc0 US tinc0
127.0.0.1 link#4 UH lo0
172.16.0.0/24 link#7 U tinc0
172.16.0.5 link#7 UHS lo0
1.1.1.0/29 link#1 U vtnet0
1.1.1.1 link#1 UHS lo0
ifconfig vtnet1 | grep inet
inet 10.1.5.1 netmask 0xffffff00 broadcast 10.1.5.255
ifconfig tinc0 | grep inet
inet 172.16.0.5 netmask 0xffffff00 broadcast 172.16.0.255
使用此 tinc 主机条目
Address=1.1.1.1 655
Subnet=10.1.5.0/24
Cipher=aes-256-cbc
Digest=sha256
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
在火箭上(提示,外部 IP 已被混淆为 2.2.2.2)
netstat -rn4
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 2.2.2.2 UGS vtnet0
8.8.8.8 2.2.2.2 UGHS vtnet0
10.1.5.0/24 tinc0 US tinc0
10.1.6.0/24 link#2 U vtnet1
10.1.6.1 link#2 UHS lo0
2.2.2.0/29 link#1 U vtnet0
2.2.2.2 link#1 UHS lo0
127.0.0.1 link#4 UH lo0
172.16.0.0/24 link#7 U tinc0
172.16.0.6 link#7 UHS lo0
ifconfig vtnet1 | grep inet
inet 10.1.6.1 netmask 0xffffff00 broadcast 10.1.6.255
ifconfig tinc0 | grep inet
inet 172.16.0.6 netmask 0xffffff00 broadcast 172.16.0.255
使用此 tinc 主机条目
Address=2.2.2.2 655
Subnet=10.1.6.0/24
Cipher=aes-256-cbc
Digest=sha256
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
更多细节
当从量子到火箭进行操作时ping -S 10.1.5.1 10.1.6.1
,我看到 FW 上 ICMP 包通过了防火墙,但它从未到达火箭,没有阻止或通过。
问题
我的设置有什么问题,为什么 mode=routed 不起作用?
答案1
经过一段时间的思考后,我发现有两个问题阻碍了我更早地找到解决方案:
1. 这其实是一个机会主义的事情
这是我所拥有的/你需要的: 对彼此而言
- 安装https://github.com/EugenMayer/tinc-opnsense,请参阅 README 了解更多信息
- 按照自述文件创建你的网络,
/usr/local/etc/tinc/example
如果你愿意的话,可以使用作为样板
量子
- 您需要创建一个 Gateway Rocket,将其配置为以“动态”方式通过 tinc0(不要在 Gateway 字段中输入 IP,请参阅下面的问题并更新)
- 您需要通过 TINCGW 到 10.1.6.0/24 的路由
- 在接口部分添加您的 tinc0 接口,将其命名为 TINCLAN。您可以配置 ipv4 地址,也可以不配置,这无关紧要。如果配置,请使用 tinc-up 配置的地址。这样做使您能够为 TINCLAN 创建 FW 规则 - 我们将需要它。提示:接口已创建为 tinc0 而不是 tun0,因为否则您无法在 opnsense 中添加它,因为所有 tun* 都被过滤掉了(遗留错误)
- 允许 TINCLAN 2 TINCLAN 的 FW 规则
- 允许 TINCLAN 2 LAN 的 FW 规则(Lan 为 10.1.5.0/24)
火箭
- 您需要创建一个 Gateway Rocket,将其配置为使用“动态”通过 tinc0(不要在 Gateway 字段中输入 IP,请查看下面的问题并更新)
- 您需要通过 TINCGW 到 10.1.5.0/24 的路由
- 在接口部分添加您的 tinc0 接口,将其命名为 TINCLAN。请参阅上面的 quantum
- TINCLAN 选项卡上的 FW 规则“dest TINCLAN”允许 TINCLAN 2 TINCLAN
- TINCLAN 选项卡上的 FW 规则“目标 LAN”允许 TINCLAN 2 LAN(Lan 为 10.1.6.0/24)
这个问题/ 欺骗了我:当您重新启动 tincd 时,tinc0 接口会丢失其 IP 并且路由会被自动删除,启动 tincd 不会重新添加这些路由。要么您需要 opnsense 来强制重新应用它们,要么重新启动服务器,或者最有可能的是,但这些路由会进入 tinc-up。然而,我并没有找到一个完美的解决方案,但也许这也超出了这个问题的范围。
当你启动 tincd 并设置路由后,一切就都应该正常工作。
2. 打字错误,不重要(第二个问题很愚蠢,但给了我一个教训)
我实际上放的是子网 10。0rocket hosts/rocket 文件中的 .6.0/24 而不是 10.1.6.0/24 - 这阻止了 tinc 级别的软件包
更新 1
最后,我还解决了 1 的故障/明显的设置问题。你需要的是
- 创建网关 TINCGW 时,不要在“网关”字段中输入网关 IP - 因此它是
s dynamic. This way the route is created to be
10.1.6.0/24 tinc0`,而不是 ip 172.16.0.5 .. 这样,当您结束 tincd 并且 tinc0 丢失其 ip 时,该路由不会被删除,因为 tinc0 仍然存在。因此,这在 tincd 重新启动或类似情况下仍然存在。
我稍后会将其合并到我的答案中,以便人们了解问题/工作流程。