【问题标题】:Site-to-Site VPN with Strongswan, DNS server, overlapping subnets)具有 Strongswan、DNS 服务器、重叠子网的站点到站点 VPN)
【发布时间】:2021-06-22 06:14:45
【问题描述】:

我需要使用远程 VPC (IKEv2 + IPSec) 创建一个site-to-site VPN。双方都使用对方的一些网络资源,这些服务主机名使用 DNS 服务器(每侧一个)映射到 IP。 A 面使用Fortigate,B 面使用StrongSwan

网络如下所示,其中Side B 可以访问subnets A1, A2, A3,而Side A 可以访问subnet B

这是我在 B 面使用的配置

/etc/ipsec.config

conn %default
  keyexchange=ikev2
  mobike=no
  authby=psk

conn sideA
  left=%defaultroute
  leftid=GATEWAY_B_PUBLIC_IP
  leftsubnet=SUBNET_B
  right=GATEWAY_A_PUBLIC_IP
  rightid=GATEWAY_A_PRIVATE_IP
  rightsubnet=SUBNET_A1,SUBNET_A2,SUBNET_A3
  type=tunnel
  auto=start

问题是Subnet A4Subnet B 重叠,因此此配置不起作用。 VPN Gateway B 是运行 Ubuntu 20 的虚拟机,因此可以自定义。

【问题讨论】:

    标签: dns vpn nat ipsec strongswan


    【解决方案1】:

    解决方案

    我已按照以下方式更改了ipsec.conf

    conn %default
      keyexchange=ikev2
      mobike=no
      authby=psk
    
    conn sideA
      left=%defaultroute
      leftid=GATEWAY_B_PUBLIC_IP
      leftsubnet=VIRTUAL_SUBNET_B
      right=GATEWAY_A_PUBLIC_IP
      rightid=GATEWAY_A_PRIVATE_IP
      rightsubnet=SUBNET_A1,SUBNET_A2,SUBNET_A3
      type=tunnel
      auto=start
    

    VIRTUAL_SUBNET_B 是一个不与左侧或右侧重叠的虚拟子网。

    并创建了以下 NAT 规则:

    iptables -t nat -A PREROUTING -s SUBNET_Ax -d VIRTUAL_SUBNET_B -j NETMAP --to SUBNET_B
    iptables -t nat -A POSTROUTING -s SUBNET_B -d SUBNET_Ax -j NETMAP --to VIRTUAL_SUBNET_B
    

    /etc/sysctl.conf中添加以下行

    net.ipv4.ip_forward = 1
    net.ipv4.conf.all.rp_filter = 2
    net.ipv4.conf.default.rp_filter = 2
    

    【讨论】: