Я хочу настроить VPN-туннель между хостами, чтобы их подсети могли соединяться друг с другом. Пример: -
DummyNetwork ---> PC1 (HOST A) ------------- PC2 (HOST B) ------> DummyNetwork
IP-адрес ПК1: 192.168.32.109 Эквивалентная сеть ПК1: 10.10.10.0/24
IP-адрес ПК2: 192.168.32.110 фиктивная сеть ПК2: 20.20.20.0/24
ПК 1
sudo modprobe dummy
sudo ip link set name eth10 dev dummy0
sudo ip addr add 10.10.10.1/24 brd + dev eth10 label eth10:0
sudo sysctl -w net.ipv4.ip_forward=1
sudo route add -net 20.20.20.0 netmask 255.255.255.0 gw 192.168.32.110 dev eno1
ПК 2
sudo modprobe dummy
sudo ip link set name eth10 dev dummy0
sudo ip addr add 20.20.20.1/24 brd + dev eth10 label eth10:0
sudo sysctl -w net.ipv4.ip_forward=1
sudo route add -net 10.10.10.0 netmask 255.255.255.0 gw 192.168.32.109 dev eno1
After this run ping 10.10.10.1 from PC1 and ping 20.20.20.1 from PC2. ping runs fine here.
Настройка VPN
Поскольку я работал над ubuntu 16.04, то есть я использовал strongswan для настройки туннеля vpn
Установите strongswan на оба хоста, то есть A и B
Sudo apt-get install ipsec-tools strongswan-starter
ПК1
Sudo gedit edit /etc/ipsec.conf
And copy below text in it.
conn red-to-blue
authby=secret
auto=route
keyexchange=ike
left=192.168.32.109
right=192.168.32.110
type=tunnel
esp=aes128gcm16!
sudo gedit /etc/ipsec.secrets
And copy below code in it.
192.168.32.109 192.168.32.110 : PSK "pass”
Sudo ipsec restart
ПК2
sudo gedit /etc/ipsec.conf
And copy below text in it.
conn blue-to-red
authby=secret
auto=route
keyexchange=ike
left=192.168.32.109
right=192.168.32.110
type=tunnel
esp=aes128gcm16!
sudo gedit /etc/ipsec.secrets
And copy below code in it.
192.168.32.110 192.168.32.109 : PSK "pass”
Sudo ipsec restart
Testing our Tunnel
С ПК1
ping 192.168.32.109
С ПК2
tcpdump esp
Здесь я могу захватывать esp-пакеты. Но бег ping 20.20.20.1
с ПК1, не получайте пакеты ant esp на ПК2. В чем может быть проблема?
Нет политики IPsec, которая покрывает трафик между подсетями. 10.10.10.0/24
и 20.20.20.0/24
. С текущей конфигурацией вы покрываете трафик только между фактическими IP-адресами этих хостов (слева | справа). Вы должны определить подсети, с которыми вы хотите туннелировать left | rightubnet. Условно осталосьзнак равноместный предполагается, поэтому на ПК1:
leftsubnet=10.10.10.0/24
rightsubnet=20.20.20.0/24
Если вы хотите включить физические IP-адреса хостов, вы можете включить их (или ключевое слово % динамический) в этих списках подсетей (через запятую).
Также нет необходимости в фиктивных интерфейсах (просто установите виртуальный IP-адрес на существующий интерфейс). И маршруты устанавливаются strongSwan автоматически в таблице маршрутизации 220 (проверьте с помощью ip route list table 220
). Установка ipsec-инструменты также не требуется использовать strongSwan.
Попробуйте перевернуть записи left = и right = на ПК2
left=192.168.32.110
right=192.168.32.109