Как мне настроить VPN для доступа к определенным подсетям?

я хотел бы настроить VPN типа "точка-сеть", которая используется только для доступа к определенному набору подсетей, чтобы я мог получать доступ к службам через VPN, но без маршрутизации всего трафика через это.

В моей тестовой конфигурации у меня есть три сервера,одна из которых ( fra1-02 ) работает под управлением StrongSwan / IPSec:

          +-----------------+     +-----------------+
          |    client(s)    |---->|    internet     |
          +-----------------+     +-----------------+
                   |
                   v
          +-----------------+
          |  fra1-02 (vpn)  |
          +-----------------+
                   |
         +---------+---------+
         |                   |
         v                   v
+-----------------+ +-----------------+
|     fra1-01     | |     fra1-03     |
+-----------------+ +-----------------+

Я хочу, чтобы клиенты обычно подключались к Интернету, но для трех подсетей (в частности, тех, которые назначены трем серверам), трафик должен проходить через VPN.

У трех серверов есть следующие подсети:

  1. 2a03: b0c0: 3: e0 :: 489: d000 / 124
  2. 2a03: b0c0: 3: e0 :: 493: 1000/124
  3. 2a03: b0c0: 3: e0 :: 493: 2000/124

Я настроил IPSec для назначения IP-адресов клиентам из fd00: 0 :: 0/32

Это мой 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

( {{переменные}} будут заполнены Ansible).

Я не настраивал маршрутизацию или что-то еще.

Когда я подключаюсь к VPN со своего ноутбука, я все еще могу пинговать fra1-02 , хост vpn, а исходный адрес теперь назначен IPSec, а не общедоступным адресом моего ноутбука, но два других хоста вообще недоступны.

Я также добавил это в /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?

0
задан 14 December 2019 в 14:34
1 ответ

Я установил netfilter-persistent и добавил следующее к /etc/iptables/rules.v6:

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

И теперь все работает отлично.

0
ответ дан 6 January 2020 в 09:02

Теги

Похожие вопросы