(2019/6/2) 投稿を github から移動。

さて、firewall の内側のネットワークに IKEv2 で接続できるのであろうか。

IPSEC では、最初に、500/udp でローカルとリモートのアドレスを交換して、NAT かどうか判断し、
NAT 環境下であれば、以後、4500/udp にカプセル化してやりとりしているようである。

したがって、Firewall でなくブロードバンドルータであれば、500/udp、4500/udp を strongswan に
転送すれば、IKEv2 でブロードバンドルータ内のネットワークに接続できそうだ。

firewall のように自分でコントロールしづらい場合は、以下のように OPENVPN トンネルで IKEv2 を転送する、などすることで可能かもしれない。

  1. firewall の外側に、IKEv2 を転送するためのサーバを置く。見かけ上、IKEv2 のサーバに見える。この転送サーバと firewall の内側にある strongswan サーバの間を、openvpn で接続する。
  2. 転送サーバでは、500/udp と 4500/udp を strongswan に転送する。(NATする)

centos 7 での転送設定例(strongswan 側のトンネルの IP アドレスを10.1.0.2にした場合):

# firewall-cmd --permanent --add-port 500/udp
# firewall-cmd --permanent --add-port 4500/udp
# firewall-cmd --permanent --add-masquerade
# firewall-cmd --permanent --add-forward-port=500:proto=udp:toaddr=10.1.0.2
# firewall-cmd --permanent --add-forward-port=4500:proto=udp:toaddr=10.1.0.2
# firewall-cmd --reload

openvpn を挙げているのは、http と https ぐらいしか通さないような厳しい firewall があるかもしれないため。また、udp を転送するのに都合が良いため。