このチュートリアル に従って、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
何か案が ?
これはmacOS/iOSクライアントの既知の問題です。そこでのクライアントは、VPNサーバーへの直接ルートをインストールして、IKEトラフィックがVPN経由でトンネリングされるのを防ぎます。ただし、これは、VPN経由でVPNサーバーのパブリックIPを介して他のサービスにアクセスすることもできないことを意味します。
回避策として、クライアントに割り当てられた仮想IPに使用したサブネットからサーバーに仮想IPを割り当てることができます。たとえば、rightsourceip=10.10.10.2/24
を構成すると、予約済みの10.10.10.1
をサーバーのインターフェイスの1つに割り当てることができ、VPNクライアントからそのIPにアクセスできるようになります。
@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経由でサーバーに接続できます