我最近在两个不同的站点部署了 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
问题是:
- 我可以在同一个 strongswan 实例上运行这两个服务 (IKEv2 远程访问和 IPSec 隧道) 吗?我的答案是否定的,如果是这种情况,我准备使用另外两个 ubuntu 服务器作为网关添加一个新的 strongswan 实例。
- 但是,如果我在站点中使用两个不同的服务器,就会出现另一个问题,每个站点只有一个公共 IP,我该如何解决 IPSec 和 IKEv2 之间的冲突,因为两者都应该使用相同的端口?我可以更改 IPSec 隧道使用的端口吗?或者也许我不需要为 IPSec 隧道进行端口转发?
这是我对IPSec隧道的参考。 https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/
有什么办法可以让这个烂摊子恢复正常吗?我是否总是需要两个不同的 IP 地址来运行两个 VPN 服务器?OpenSource DMVPN 能帮上忙吗?
提前致谢。
答案1
回答你的问题
- 是的,您可以在同一个 StrongSwan 实例上运行远程访问(又名 Roadwarrior)和站点到站点隧道。
- 您可以通过身份验证方法区分站点到站点连接和远程访问连接。
这是一个工作设置
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