AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1097369
Accepted
Flo
Flo
Asked: 2022-03-31 02:22:43 +0800 CST2022-03-31 02:22:43 +0800 CST 2022-03-31 02:22:43 +0800 CST

Strongswan / Ipsec 多个 roadwarrior 连接不同的子网

  • 772

我正在尝试设置一个 StrongSwan VPN 服务器,它应该托管多个(Windows 10 - 内部 vpn 客户端)roadwarrior 连接,但不同的子网,具体取决于客户端证书。

root@VPN:/# ipsec version

Linux strongSwan U5.8.2/K5.4.0-26-generic

我的设置有 2 对公钥和私钥,使用不同的 CN,比如说vpn-dev.mycom.com和vpn-liv.mycom.com. 使用的ipsec.conf看起来像这样:

conn vpn-dev
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    ikelifetime=25200s
    leftid=vpn-dev.mycom.com
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.100.0.0/16-10.100.254.254/16
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never
    rightcert=ca-cert.pem
    eap_identity=%identity
    ike=aes128-sha1-modp1024


conn vpn-liv
    also=vpn-dev
    leftid=vpn-liv.mycom.com
    leftcert=liv-server-cert.pem
    rightsourceip=10.200.0.0/16-10.200.254.254/16
    rightcert=liv-ca-cert.pem

两个证书密钥也存储在ipsec.secrets

vpn-dev.mycom.com : RSA "server-key.pem"
vpn-liv.mycom.com : RSA "liv-server-key.pem"

someuser : EAP "somepassword"

但是,一旦我尝试连接到 strongswan 实例,vpn-dev就会使用连接并且 strongswan 不会切换到 connvpn-liv

这是尝试期间的日志:

Mar 30 08:47:48 VPN charon: 16[NET] received packet: from X.X.X.X[64558] to X.X.X.X[500] (1084 bytes)
Mar 30 08:47:48 VPN charon: 16[IKE] received MS NT5 ISAKMPOAKLEY v9 vendor ID
Mar 30 08:47:48 VPN charon: 16[IKE] received MS-Negotiation Discovery Capable vendor ID
Mar 30 08:47:48 VPN charon: 16[IKE] X.X.X.X is initiating an IKE_SA
Mar 30 08:47:48 VPN charon: 16[CFG] selected proposal: IKE:AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
Mar 30 08:47:48 VPN charon: 16[IKE] local host is behind NAT, sending keep alives
Mar 30 08:47:48 VPN charon: 16[IKE] remote host is behind NAT
Mar 30 08:47:48 VPN charon: 16[NET] sending packet: from X.X.X.X[500] to X.X.X.X[64558] (328 bytes)
Mar 30 08:47:48 VPN charon: 06[NET] received packet: from X.X.X.X[64596] to X.X.X.X[4500] (576 bytes)
Mar 30 08:47:48 VPN charon: 10[NET] received packet: from X.X.X.X[64596] to X.X.X.X[4500] (576 bytes)
Mar 30 08:47:48 VPN charon: 05[NET] received packet: from X.X.X.X[64596] to X.X.X.X[4500] (576 bytes)
Mar 30 08:47:48 VPN charon: 14[NET] received packet: from X.X.X.X[64596] to X.X.X.X[4500] (368 bytes)
Mar 30 08:47:48 VPN charon: 14[IKE] received cert request for "CN=PRIV VPN LIV CA"
Mar 30 08:47:48 VPN charon: 14[IKE] received 69 cert requests for an unknown ca
Mar 30 08:47:48 VPN charon: 14[CFG] looking for peer configs matching X.X.X.X[%any]...X.X.X.X[192.168.0.117]

Mar 30 08:47:48 VPN charon: 14[CFG] selected peer config 'vpn-dev' # << here it has not selected vpn-live, even if the earlier provided private key is only matching vpn-live

Mar 30 08:47:48 VPN charon: 14[IKE] initiating EAP_IDENTITY method (id 0x00)
Mar 30 08:47:48 VPN charon: 14[IKE] peer supports MOBIKE
Mar 30 08:47:48 VPN charon: 14[IKE] authentication of 'vpn-dev.mycom.com' (myself) with RSA     signature successful
Mar 30 08:47:48 VPN charon: 14[IKE] sending end entity cert "CN=vpn-dev.mycom.com"
Mar 30 08:47:49 VPN charon: 14[IKE] sending cert request for "CN=PRIV VPN DEV CA"
Mar 30 08:47:49 VPN charon: 14[IKE] sending cert request for "CN=PRIV VPN LIV CA"
Mar 30 08:47:49 VPN charon: 14[NET] sending packet: from X.X.X.X[500] to X.X.X.X[64548] (364 bytes)
Mar 30 08:47:49 VPN charon: 06[NET] received packet: from X.X.X.X[64618] to X.X.X.X[4500] (92 bytes)
Mar 30 08:47:49 VPN charon: 06[IKE] received (28) error notify

目标基本上是在一台机器上托管 2 个 vpn 端点,但根据登录/使用的证书提供不同的 IP 范围。

本地配置是用(powershell)完成的

Import-Certificate -FilePath liv-ca-cert.pem -CertStoreLocation 'Cert:\LocalMachine\Root'
Add-VpnConnection -Name 'LIV VPN' -ServerAddress 'vpn-live.mycom.com' -AuthenticationMethod Eap -IdleDisconnectSeconds 43200

我错过了什么吗?我的设置是否配置错误?或者这对于strongswan和Windows 10内部vpn客户端根本不可能?

windows vpn ipsec strongswan point-to-site-vpn
  • 3 3 个回答
  • 687 Views

3 个回答

  • Voted
  1. ecdsa
    2022-03-31T05:05:41+08:002022-03-31T05:05:41+08:00

    只能根据服务器身份/证书切换连接,如果有的话

    • 客户端在其 IKE_AUTH 请求中发送远程身份 (IDr),许多客户端不会(尤其是 Windows),否则,没有身份匹配,因此将使用第一个连接

    或者

    • 如果 FQDN 映射到不同的 IP 地址,可以将其配置为连接的本地地址,以便尽早选择正确的连接
    • 0
  2. Best Answer
    Flo
    2022-03-31T06:44:40+08:002022-03-31T06:44:40+08:00

    事实证明,无法使用证书,因为它们不用于识别服务器上的用户。

    所以我最终使用了这个答案中描述的解决方法,这有助于评估eap_identiy.

    现在我的客户使用相同的证书,但根据登录我可以决定他们将使用哪个子网。

    我的 ipsec.conf 现在看起来像这样:

    conn eap-shared
       type=tunnel
       ike=aes128-sha1-modp1024
       rightauth=eap-mschapv2
       leftcert=server-cert.pem
    
    conn eap-init
       also=eap-shared
       # this config is used to do the EAP-Identity exchange and the
       # authentication of client and server
       eap_identity=%identity
       # the following is used to force a connection switch after
       # the authentication completed
       rightgroups=thisseemsirrelevant
       auto=add
    
    conn eap-liv
       also=eap-shared
       eap_identity=*@liv-some-domain.com
       rightsourceip=10.200.0.0/16-10.200.254.254/16
       auto=add
    
    conn eap-dev
       also=eap-shared
       eap_identity=*@dev-some-domain.com
       rightsourceip=10.100.0.0/16-10.100.254.254/16
       auto=add
    

    可能不是最优雅的解决方案,但在我的情况下有效。

    • 0
  3. Lin
    2022-05-13T00:28:50+08:002022-05-13T00:28:50+08:00

    对于具有相同身份验证方法的多个 conn 配置,Strongswan 能够根据客户端的身份选择合适的配置。

    例如使用两个 conn 配置:

    1. 右侧都使用 pubkey,我们可以rightca用作约束:
        conn dev-network_ikev2-cert
            rightauth=pubkey
            rightca="C=CN, O=Sample, CN=Develop CA"
            rightsourceip=10.100.0.0/16
            rightdns=8.8.8.8
        
        conn test-network_ikev2-cert
            rightauth=pubkey
            rightca="C=CN, O=Sample, CN=Testing CA"
            rightsourceip=10.200.0.0/16
            rightdns=8.8.8.8
    
    • 在此设置中,具有颁发证书的客户端Develop CA将直接选择配置dev-network_ikev2-cert。

    • 如果客户端使用的是由颁发的证书Testing CA,strongswan会先选择config dev-network_ikev2-cert,然后输出constraint check failed: peer not authenticated by CA 'C=CN, O=Sample, CN=Develop CA',再选择下一项test-network_ikev2-cert。

    1. 右侧都使用 eap-mschapv2,我们可以eap_identity用作约束:
        conn dev-network_ikev2-eap
            rightauth=eap-mschapv2
            eap_identity=*@dev.com
            rightsourceip=10.100.0.0/16
            rightdns=8.8.8.8
        
        conn test-network_ikev2-eap
            rightauth=eap-mschapv2
            eap_identity=*@test.com
            rightsourceip=10.200.0.0/16
            rightdns=8.8.8.8
    

    这是 Flo 使用的方法。Strongswan 将执行与使用 pubkey 类似的检查逻辑。

    • 如果客户端使用identity in *@test.com,strongswan会先选择dev-network_ikev2-eap,然后找到那个constraint check failed: EAP identity '*@dev.com' required,再选择下一个test-network_ikev2-eap。

    希望这会有所帮助。

    • 0

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve