Я настраиваю "подсеть для разделения на подсети VPN" между двумя серверами Centos 7 с помощью libreswan. Каждый сервер имеет два nic, как показал в следующем изображении.
Я позволил бы безопасную коммуникацию между подсетями 172.18.0.0/16 и 172.19.0.0/16, устанавливающий vpn, использующий 172.17.0.0/16 сеть, но у меня есть проблема для разрешения трафика между этими двумя подсетями.
Я следовал документации должностного лица Redhat в https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Securing_Virtual_Private_Networks.htm l#Site-To-Site_VPN_Using_Libreswan
На самом деле я остановил firewalld на обоих узлах.
Я проверил ipsec предпосылки:
[root@node2 ~]# ipsec verify
Verifying installed system and configuration files
Version check and ipsec on-path [OK]
Libreswan 3.8 (netkey) on 3.10.0-123.el7.x86_64
Checking for IPsec support in kernel [OK]
NETKEY: Testing XFRM related proc values
ICMP default/send_redirects [OK]
ICMP default/accept_redirects [OK]
XFRM larval drop [OK]
Pluto ipsec.conf syntax [OK]
Hardware random device [N/A]
Two or more interfaces found, checking IP forwarding [OK]
Checking rp_filter [OK]
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500 [OK]
Pluto listening for IKE/NAT-T on udp 4500 [OK]
Pluto ipsec.secret syntax [OK]
Checking NAT and MASQUERADEing [TEST INCOMPLETE]
Checking 'ip' command [OK]
Checking 'iptables' command [OK]
Checking 'prelink' command does not interfere with FIPSChecking for obsolete ipsec.conf options [OK]
Opportunistic Encryption [DISABLED]
ipsec.conf содержание:
config setup
protostack=netkey
conn mytunnel
leftid=@node1
left=172.17.0.101
leftrsasigkey=0sAQPXn...
rightid=@node2
right=172.17.0.102
rightrsasigkey=0sAQPxv...
authby=rsasig
conn mysubnet
also=mytunnel
leftsubnet=172.18.0.0/16
rightsubnet=172.19.0.0/16
auto=start
Я запускаю ipsec сервис на оба узла. Затем я проверяю, что "статус IPSec" (здесь существует вывод http://pastebin.com/LYA9uqfJ) и я не делаю, нашел любую ошибку.
Таблица маршрутизации node1:
[root@node1 ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eno16777736
172.18.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eno33554992
Если попытка проверить с помощью ping-запросов от node1 IP-адрес 172.19.0.101, я получаю ошибку "подключение: Сеть недостижима"
Там что-то отсутствует в моей конфигурации? Что я могу попытаться позволить безопасному трафику между этими двумя подсетями?
Проверьте ] net.ipv4.ip_forward
настройки в sysctl
.
Или вы можете попробовать запустить tcpdump с обеих сторон и посмотреть, что произойдет.
Пример:
tcpdump -n -i interface esp or udp port 500 or udp port 4500
Также попробуйте добавить правила iptables вот так:
-A FORWARD -i EXTIF -o INIF -j ACCEPT
-A FORWARD -i INIF -o EXTIF -j ACCEPT
-A POSTROUTING -s YOURNET1 ! -d YOURNET2 -j MASQUERADE
Еще несколько деталей о том, что выше:
EXTIF
- это ваш интерфейс 172.17.0.0/16
INIF
- это еще один 172.18.0.0 или 172.19.0.0
I был использован это HOWTO, моя сеть работает, но не отправляет пакет keepalive. У Strongswan нет проблем
connect: Сеть недоступна
Имеются только маршруты к 172.17.0.0/16
и 172.18.0.0/24
, нет конкретных маршрут к 172.19.0.0/16
, или маршрут по умолчанию, который будет его покрывать, поэтому вы получаете эту ошибку.
Поэтому вам нужно добавить либо конкретный маршрут в удаленную подсеть, либо добавить маршрут по умолчанию на обоих хостах.
Между прочим, вы должны использовать ip route
для управления маршрутами вместо маршрута
.