я хотел бы настроить VPN типа "точка-сеть", которая используется только для доступа к определенному набору подсетей, чтобы я мог получать доступ к службам через VPN, но без маршрутизации всего трафика через это.
В моей тестовой конфигурации у меня есть три сервера,одна из которых ( fra1-02
) работает под управлением StrongSwan / IPSec:
+-----------------+ +-----------------+
| client(s) |---->| internet |
+-----------------+ +-----------------+
|
v
+-----------------+
| fra1-02 (vpn) |
+-----------------+
|
+---------+---------+
| |
v v
+-----------------+ +-----------------+
| fra1-01 | | fra1-03 |
+-----------------+ +-----------------+
Я хочу, чтобы клиенты обычно подключались к Интернету, но для трех подсетей (в частности, тех, которые назначены трем серверам), трафик должен проходить через VPN.
У трех серверов есть следующие подсети:
2a03: b0c0: 3: e0 :: 489: d000 / 124
2a03: b0c0: 3: e0 :: 493: 1000/124
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?
Я установил netfilter-persistent
и добавил следующее к /etc/iptables/rules.v6
:
*nat
-A POSTROUTING -s fd00::/32 -o eth0 -j MASQUERADE
COMMIT
И теперь все работает отлично.