ipsec / strongswan – 如何使用route命令将远程路由器用作本地网关

好吧,这应该是一个容易的,但它使我疯狂。

场景:

网站A(旧金山)网站B(哥伦比亚)

两个站点都通过IPSec成功连接(openswan,debian 8):

站点A —————网站B
10.2.0.1 <== inet ==> 10.3.0.1

我可以成功从SiteA PING 10.3.0.1 …. 10.3.0.0子网中的10个电话分机连接到SiteA。 甜,没问题。

但是请注意10.3.0.1 IS NOT LISTED作为SiteA的内核路由表下的任何地方,但是如果我从10.2.0.1开始ping,它就可以工作。

问题:

好。 我只是在SiteB中添加了一个SIP路由器10.11.208.93。 SiteA需要为10.11.208.94,并且必须能够通过10.3.0.1达到10.11.208.93。 我已经在SiteB的10.3.0.1上成功添加了这个桥。

当我尝试通过SiteA中的10.3.0.1创build到SIP路由器的静态路由时,路由命令说主机不可达。 但我可以从SiteA ping 10.3.0.1。

ip route add -net 10.11.208.92/30通过10.3.0.1

SIOADDR:主机无法访问

问题是:在哪里/如何强壮(ipsec)configurationlinux路由表通过隧道达到10.3.0.1? 它不会显示在路由表上。

如果我可以ping通10.3.0.1,为什么不能使用它作为路由到达它后面的子网,已经有一个工作隧道了?

strongSwan默认在路由表220中安装路由。 你可以看到这些与ip route list table 220

添加路由不会让您的stream量通过隧道。 IPsec是基于策略的(您可以使用ip xfrm policy查看这些ip xfrm policy ),所以如果您有一个允许在例如10.2.0.0/16和10.3.0.0/16之间的stream量的IPsec策略,则实际上只有匹配的stream量通过隧道传输。 从10.11.208.94到10.11.208.93发送的数据包不是这种情况。 因此,您必须明确添加涵盖这些IP的隧道。