特定のサブネットセットへのアクセスにのみ使用されるポイントツーサイトVPNをセットアップして、VPNを介してすべてのトラフィックをルーティングせずに、VPNを介してサービスにアクセスできるようにしたいと思います。
テストセットアップでは、3つのサーバーがあり、そのうちの1つ(fra1-02
)がStrongSwan/IPSecを実行しています。
+-----------------+ +-----------------+
| client(s) |---->| internet |
+-----------------+ +-----------------+
|
v
+-----------------+
| fra1-02 (vpn) |
+-----------------+
|
+---------+---------+
| |
v v
+-----------------+ +-----------------+
| fra1-01 | | fra1-03 |
+-----------------+ +-----------------+
クライアントが通常どおりインターネットに接続するようにしたいのですが、3つのサブネット(具体的には3つのサーバーに割り当てられているサブネット)の場合、トラフィックはVPNを経由する必要があります。
3つのサーバーには次のサブネットがあります。
2a03:b0c0:3:e0::489:d000/124
2a03:b0c0:3:e0::493:1000/124
2a03:b0c0:3:e0::493:2000/124
fd00:0::0/32
からクライアントにIPアドレスを割り当てるようにIPSecを構成しました
これは私のipsec.conf
です:
config setup
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=@{{ leftid }}
leftcert=cert.pem
leftsendcert=always
leftsubnet=2a03:b0c0:3:e0::489:d000/124,2a03:b0c0:3:e0::493:1000/124,2a03:b0c0:3:e0::493:2000/124
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=fd00:0::0/32
rightdns={{ rightdns }}
rightsendcert=never
eap_identity=%identity
({{ variables }}
はAnsibleによって入力されます)。
ルーティングなどを構成していません。
ラップトップからVPNに接続している場合でも、vpnホストであるfra1-02
にpingを実行できます。送信元アドレスはIPSecによって割り当てられたものであり、ラップトップのパブリックアドレスではありませんが、他の2つのホストはそうではありません。まったく到達可能です。
これも/etc/sysctl.conf
に追加しました:
net.ipv6.conf.all.forwarding=1
これらは私のラップトップでのnetstat -rn
の出力(の一部)です(私が期待したものとまったく同じように見えます):
default fd00:: UGcI ipsec0
2a03:b0c0:3:e0::489:d000/124 fd00:: UGSc ipsec0
2a03:b0c0:3:e0::493:1000/124 fd00:: UGSc ipsec0
2a03:b0c0:3:e0::493:2000/124 fd00:: UGSc ipsec0
...
そして、VPNサーバー上のルーティングテーブルは次のとおりです。
root@fra1-02:~# ip -6 route list
::1 dev lo proto kernel metric 256 pref medium
2a03:b0c0:3:e0::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth1 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via 2a03:b0c0:3:e0::1 dev eth0 proto static metric 1024 pref medium
fra1-01
およびfra1-03
へのトラフィックがVPN経由でルーティングされるように設定するにはどうすればよいですか?
netfilter-persistent
をインストールし、/etc/iptables/rules.v6
に以下を追加しました。
*nat
-A POSTROUTING -s fd00::/32 -o eth0 -j MASQUERADE
COMMIT
そして今、すべてがうまく機能しています。