使用 Strongswan 实现站点到站点 VPN 和远程访问 VPN

使用 Strongswan 实现站点到站点 VPN 和远程访问 VPN

我最近在两个不同的站点部署了 Strongswan IKEv2 远程访问 VPN,并使用了两个不同的 ubuntu 服务器。一切运行良好,但现在我想使用站点到站点 VPN“合并”这两个站点,这样我就可以只留下一个远程访问 VPN 并访问两个子网。问题是如何做到?我的想法是在两个站点之间使用 strongswan 建立 IPSec 隧道,并在两个站点的路由器上使用静态路由来管理流量。

站点配置如下:

A) 
Only One Public IP : x.x.x.x
Subnet : 10.5.5.0/24

B)
One Usable Public IP : x.x.x.x
Subnet : 192.168.5.0/24

问题是:

  1. 我可以在同一个 strongswan 实例上运行这两个服务 (IKEv2 远程访问和 IPSec 隧道) 吗?我的答案是否定的,如果是这种情况,我准备使用另外两个 ubuntu 服务器作为网关添加一个新的 strongswan 实例。
  2. 但是,如果我在站点中使用两个不同的服务器,就会出现另一个问题,每个站点只有一个公共 IP,我该如何解决 IPSec 和 IKEv2 之间的冲突,因为两者都应该使用相同的端口?我可以更改 IPSec 隧道使用的端口吗?或者也许我不需要为 IPSec 隧道进行端口转发?

这是我对IPSec隧道的参考。 https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/

有什么办法可以让这个烂摊子恢复正常吗?我是否总是需要两个不同的 IP 地址来运行两个 VPN 服务器?OpenSource DMVPN 能帮上忙吗?

提前致谢。

答案1

回答你的问题

  1. 是的,您可以在同一个 StrongSwan 实例上运行远程访问(又名 Roadwarrior)和站点到站点隧道。
  2. 您可以通过身份验证方法区分站点到站点连接和远程访问连接。

这是一个工作设置

connections {
  site {
    pools = ipv4, ipv6

    local {
      auth = pubkey
      certs = site1.example.com.pem
      id = site1.example.com
    }

    remote {
      auth = pubkey
      cacerts =  MyCA.cer
      id = "CN=site2.example.com"
    }

    children {
        site {
            local_ts  = 10.218.2.0/24, ::/0
            remote_ts = 10.218.1.0/24, 2001:470:ffff::/64
        }
    }
  }

  win {
    pools = ipv4, ipv6

    local {
      auth = pubkey
      certs = site1.example.com.pem
      id = site1.example.com
    }
    remote {
      auth = pubkey
      cacerts =  LloydsCertificateAuthorityG2.cer
    }
    children {
      win {
        local_ts = 0.0.0.0/0, ::/0, 10.218.1.0/24, 2001:470:ffff::/64
      }
    }
  }
}

pools {
  ipv4 {
    addrs = 10.218.2.3-10.218.2.254
    dns = 10.218.1.99
    netmask = 255.255.255.0
    subnet = 10.218.2.0/24,10.218.1.0/24
  }

  ipv6 {
    addrs = 2001:470:ffff:2::3-2001:470:ffff:2::ffff
    dns = 2001:470:ffff::99/64
    subnet = 2001:470:ffff:2::/64,2001:470:ffff::/64
  }
}

站点 2 使用 IKEv2 协议和机器证书 CN=site2.example.com 进行连接

证书存储在站点 1 的

/etc/swanctl/rsa/site1.example.com.pem (private key)
/etc/swanctl/x509/site1.example.com.pem (public key)
/etc/swanctl/x509ca/MyCa.cer (Root CA)

使用以下方法重新加载配置swanctl --load-all

为远程访问客户端启用 NAT

iptables -t nat -A POSTROUTING -s 10.218.2.0/24,10.218.1.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.218.2.0/24,10.218.1.0/24 -o eth0 -j MASQUERADE

相关内容