web-dev-qa-db-ja.com

特定のサブネットにアクセスするようにVPNを設定するにはどうすればよいですか?

特定のサブネットセットへのアクセスにのみ使用されるポイントツーサイト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つのサーバーには次のサブネットがあります。

  1. 2a03:b0c0:3:e0::489:d000/124
  2. 2a03:b0c0:3:e0::493:1000/124
  3. 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経由でルーティングされるように設定するにはどうすればよいですか?

1
Stefano Palazzo

netfilter-persistentをインストールし、/etc/iptables/rules.v6に以下を追加しました。

*nat
-A POSTROUTING -s fd00::/32 -o eth0 -j MASQUERADE
COMMIT

そして今、すべてがうまく機能しています。

1
Stefano Palazzo