Принимая во внимание вики, кажется, это стандартная проблема, но я не могу заставить ее работать правильно.
Схема сети
Местный сайт (клиент
и шлюз
) находится под моим контролем, удаленный сайт (удаленный шлюз
и удаленный сервер
) не является. Туннель IPSec представляет собой разделенный туннель таким образом, что только запросы к 10.10.0.0/16
подсети отправляются через туннель IPSec.
Цель
я бы хотел клиент
общаться с удаленный сервер
, например создать ssh
или кто-л.
связь.
Что я уже сделал
Я установил туннель IPSec между шлюз
и удаленный шлюз
.
Я включил переадресацию ip на шлюз
:
sysctl net.ipv4.ip_forward=1
Я создал NAT на шлюз
:
iptables -t nat -I POSTROUTING -m policy --pol ipsec --dir out -j ПРИНЯТЬ
iptables -t nat -A POSTROUTING -j MASQUERADE
На клиент
Я направил трафик через шлюз
:
ip маршрут по умолчанию
ip route добавить по умолчанию через 192.168.144.4
# 192.168.144.4 это шлюз
Что работает
- Туннель IPSec установлен и работает стабильно.
- При входе в
шлюз
, Я могу пинг
в удаленный шлюз
и удаленный сервер
успешно. я тоже могу пинг
в клиент
. И я могу пропинговать google.com
.
- При входе в
клиент
, Я могу пропинговать google.com
и я могу пинг
в шлюз
. С tcpdump icmp
на шлюз
я вижу, что пропинговать google.com
от клиент
проходит через шлюз
.
Что еще не работает
Я не могу пинг
в удаленный сервер
от клиент
по его ИП.
клиент$ пинг -c 1 10.10.12.7
PING 10.10.12.7 (10.10.12.7): 56 байт данных
--- 10.10.12.7 статистика пинга ---
1 пакет передан, 0 пакетов получен, 100% потери пакетов
От tcpdump
на шлюз
, похоже на пинг
отправляется, но не пересылается через туннель:
шлюз$ tcpdump icmp
13:19:18.122999 IP 192.168.144.7 > 10.10.12.7: эхо-запрос ICMP, идентификатор 15, последовательность 0, длина 64
13:19:18.123038 IP-шлюз > 10.10.12.7: эхо-запрос ICMP, идентификатор 15, последовательность 0, длина 64
13:19:18.127534 IP-адрес ac5.nue3.m-online.net > шлюз: сеть ICMP 10.10.12.7 недоступна, длина 36
13:19:18.127556 IP-адрес ac5.nue3.m-online.net > 192.168.144.7: сеть ICMP 10.10.12.7 недоступна, длина 36
Как ac5.nue3.m-онлайн.net
является интернет-провайдером локального сайта, я думаю, что пакет маршрутизируется не через туннель IPSec, а через интернет-соединение шлюз
, который, конечно, не может достичь удаленный сервер
. (Если я сделаю туннель IPSec полным туннелем, а не разделенным туннелем, я получу тот же результат.)
Любая помощь или понимание будут действительно оценены!
РЕДАКТИРОВАТЬ: статус ipsecвсе
на шлюз
шлюз > состояние ipsecвсе
Состояние демона IKE charon (strongSwan 5.8.2, Linux 5.4.0-88-generic, x86_64):
время безотказной работы: 7 минут, с 08 октября 08:18:24 2021
malloc: sbrk 3112960, mmap 0, используется 1081456, бесплатно 2031504
рабочие потоки: 11 из 16 бездействующих, 5/0/0/0 рабочих, очередь заданий: 0/0/0/0, запланированных: 4
загруженные плагины: charon test-vectors ldap pkcs11 tpm aesni aesni aes rc2 sha2 sha1 md5 mgf1 rdrand random nonce x509 ограничения отзыва pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl gcrypt af-alg fips-prf gmp curve25 cmm ctrc macac xcb chapoly ntru drbg curl attr ядро-netlink разрешить сокет-по умолчанию connmark farp инсульт updown eap-identity eap-aka eap-md5 eap-gtc eap-mschapv2 eap-dynamic eap-radius eap-tls eap-ttls eap-peap eap-tnc xauth- универсальный xauth-eap xauth-pam tnc-tnccs dhcp lookip error-notify certexpire led addrblock счетчики единства
Прослушиваемые IP-адреса:
192.168.144.4
Соединения:
пример-ipsec: %any...vpn1.example.com IKEv2, dpddelay=300s
example-ipsec: local: [[email protected]] использует аутентификацию с предварительным общим ключом
example-ipsec: remote: [[email protected]] использует аутентификацию с предварительным общим ключом
пример-ipsec: child: dynamic === 0.0.0.0/0 TUNNEL, dpdaction=clear
Ассоциации безопасности (1 вверх, 0 соединение):
example-ipsec[1]: УСТАНОВЛЕНО 7 минут назад, 192.168.144.4[[email protected]]...<публичный-ip-удаленного-шлюза>[[email protected]]
пример-ipsec[1]: I: 9d7c74f670bbda86_i* c12b3b4a236b7018_r, предварительная повторная аутентификация общего ключа через 2 часа
пример-ipsec[1]: предложение IKE: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
пример-ipsec{1}: УСТАНОВЛЕНО, TUNNEL, reqid 1, ESP в UDP SPI: cf66ad72_i af3c9348_o
пример-ipsec{1}: AES_CBC_256/HMAC_SHA2_256_128, 442 байт_i (4 пкт, 434 с назад), 485 байт_о (6 пкт, 433 с назад), изменение ключа за 38 минут
пример-ipsec{1}: 10.10.102.235/32 === 0.0.0.0/0
Это результат статус ipsecвсе
на шлюз
после неудачной отправки пинг
от клиент
к удаленный сервер
. пинг
от шлюз
не изменяет «байты» на выходе. «Байты» на выходе соответствуют пинг
Я отправил из шлюз
к удаленный сервер
.
РЕДАКТИРОВАТЬ: /etc/ipsec.conf
на шлюз
:
# /etc/ipsec.conf
пример соединения-ipsec
слева = % defaultroute
левый исходный код = %config
leftid = "[email protected]"
справа = vpn1.example.com
rightid = "[email protected]"
правая подсеть = 0.0.0.0/0
левый брандмауэр = да
политика установки = да
обмен ключами = ikev2
тип = туннель
авто = старт
левая авторизация = пск
правоаутент = пск
dpdaction = очистить
dpddelay = 300 с