web-dev-qa-db-ja.com

VPN:ipsec / strongswanを使用して自分のゲートウェイに到達できない

このチュートリアル に従って、StrongSwanとIPSecを使用してプライベートVPNをセットアップしました。それは非常にうまく機能します。

しかし、(SSHを使用して)ゲートウェイ/サーバーに直接接続しようとすると、接続がVPNを経由しません。

クライアントでテーブルを探すと、次のように表示されます。

$ netstat -nr

Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            link#19            UCS            85        0  ipsec0
default            172.21.15.254      UGScI          18        0     en0
8.8.8.8            link#19            UHWIi           7       33  ipsec0
10.10.10.1         10.10.10.1         UH              0        0  ipsec0
13.32.153.9        link#19            UHW3I           0        3  ipsec0     10
17.248.144.80      link#19            UHWIi           2       22  ipsec0
17.252.76.33       link#19            UHWIi           1       40  ipsec0
18.184.56.218      link#19            UHWIi           1        1  ipsec0
54.37.155.XX       172.21.15.254      UGHS          397      197     en0
...

VPNに接続すると、最後の行がクライアントに追加されます。 54.37.155.XXは私のサーバーのパブリックアドレスです。どのプロセスがこの行をルーティングテーブルに追加するのかわかりません。

最後の行を削除すると、うまく機能します:

Sudo route -n delete 54.37.155.XX 172.21.15.254

/etc/ipsec.conf構成ファイルに欠落しているルールがこのルーティングエントリを追加していると思われますが、どれがどれかわかりません:

config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    ike=aes256-sha1-modp1024,3des-sha1-modp1024!
    esp=aes256-sha1,3des-sha1!
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=@server_name_or_ip
    leftcert=/etc/ipsec.d/certs/vpn-server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightdns=8.8.8.8,8.8.4.4
    rightsourceip=10.10.10.0/24
    rightsendcert=never
    eap_identity=%identity

何か案が ?

1
iero

これはmacOS/iOSクライアントの既知の問題です。そこでのクライアントは、VPNサーバーへの直接ルートをインストールして、IKEトラフィックがVPN経由でトンネリングされるのを防ぎます。ただし、これは、VPN経由でVPNサーバーのパブリックIPを介して他のサービスにアクセスすることもできないことを意味します。

回避策として、クライアントに割り当てられた仮想IPに使用したサブネットからサーバーに仮想IPを割り当てることができます。たとえば、rightsourceip=10.10.10.2/24を構成すると、予約済みの10.10.10.1をサーバーのインターフェイスの1つに割り当てることができ、VPNクライアントからそのIPにアクセスできるようになります。

1
ecdsa

@ecdsaが示唆したように、ipsecconfを変更する必要があります。

rightsourceip=10.10.10.2/24

それらの行を/ etc/network/interfaces.d/50-cloud-init.cfgに追加します:

iface ens3 inet static
    address 10.10.10.1/24

その後、10.10.10.1アドレスを使用してVPN経由でサーバーに接続できます

1
iero