如何在 Ubuntu 18.04 中使用 StrongSwan IKEv2 创建拆分隧道

如何在 Ubuntu 18.04 中使用 StrongSwan IKEv2 创建拆分隧道

我一直在尝试使用 StrongSwan IKEv2 协议从我的 Ubuntu 18.04 服务器(客户端)到 Watchguard Firebox 设置拆分隧道。最后,我希望这是一个站点到站点的连接,但我首先只从一侧开始。

我已经能够成功连接到 Watchguard 并获得了 IP 地址,但我不想让所有流量都通过隧道发送,只针对某些子网。我已通过添加了路由,在ip route add连接建立后,如果我正在运行,tcpdump我可以看到流量 (192.168.1.0/24) 正在通过我设置的接口,但我没有收到回复。任何帮助都将不胜感激。

这是 IPSec 的配置文件。
我取出了服务器地址和用户名。就像我说的,我有一个成功的连接。注释掉了,rightsubnet因为我想通过命令来定义它ip route。如果我取消注释并建立连接,我可以成功 ping 定义的每个子网,但这不会分离流量,最终我将制定规则以仅允许某些设备访问 VPN。

conn dealers
  right=xxxxxxxx
  rightid="O=WatchGuard, OU=Fireware, CN=ike2muvpn Server"
  #rightsubnet=192.168.1.0/24,192.168.20.0/24,192.168.40.0/24,192.168.3.0/24,192.168.5.0/24
  rightauth=pubkey
  leftsourceip=%config
  leftid=xxxxxxxx
  leftauth=eap-mschapv2
  eap_identity=%identity
  auto=add

这是我的ip route桌子

default via 192.168.2.1 dev eth0 proto dhcp src 192.168.2.196 metric 100
10.0.10.0/24 via 192.168.115.1 dev dealers_tunnel 
192.168.1.0/24 via 192.168.115.1 dev dealers_tunnel 
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.196 
192.168.2.1 dev eth0 proto dhcp scope link src 192.168.2.196 metric 100 
192.168.115.0/24 dev dealers_tunnel proto kernel scope link src 192.168.115.29

我有一个脚本,它将连接 vpn,然后设置接口并添加路由。为了测试,我只添加了 192.168.1.0/24 网络。

#!/bin/bash
#
#./ikev2-up.sh
#

/usr/sbin/ipsec up dealers

ip tunnel add dealers_tunnel local 10.0.10.1 remote 192.168.115.29 mode are til 255
ip link set dealers_tunnel up
ip addr add 192.168.115.29/24 dev dealers_tunnel

ip route add 192.168.115.0/24 dev dealers_tunnel
ip route add 10.0.10.0/24 via 192.168.115.1 dev dealers_tunnel
ip route add 192.168.1.0/24 via 192.168.115.1 dev dealers_tunnel

我还没有设置任何规则iptables -L


Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

iptables -t nat -L

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

我知道我遗漏了一些东西,但就是想不通。再次感谢您的帮助

答案1

如果您进行配置(假设对等方允许这样做),并且对等方也分配了虚拟 IP 地址(由客户端通过 请求),rightsubnet=0.0.0.0/0则您不需要隧道设备。leftsourceip=%config

charon.install_routes只需通过strongSwan 禁用路线安装即可strongswan.conf然后通过自定义安装自己的路线上下脚本在 中配置leftupdown。使用 updown 脚本很重要,因为客户端事先不知道虚拟 IP 地址。只有来自该虚拟 IP 的数据包才会匹配 IPsec 策略并进行隧道传输,因此通过源路由强制执行这一点很重要。

例如,要将流量隧道传输到192.168.115.0/24您可以使用类似以下脚本(默认情况下,strongSwan 在表 220 中安装路由以避免与主表中的路由冲突,因此我将在这里使用相同的脚本):

#!/bin/bash

set -o nounset
set -o errexit

case "${PLUTO_VERB}" in
    up-client)
        ip route add 192.168.115.0/24 dev "${PLUTO_INTERFACE}" src "${PLUTO_MY_SOURCEIP}" table 220
        ;;
    down-client)
        ip route del 192.168.115.0/24 table 220
        ;;
esac

相关内容