У меня есть сервер, на котором работает strongSwan на экземпляре Amazon EC2, к которому я хочу подключиться с Windows 7. Сервер strongSwan находится в частной сети (IP-адрес 172.16.1.15 в сети 172.16.0.0/17), и трафик перенаправляется на его частный адрес с общедоступного IP-адреса - это то, что Amazon называет «эластичным IP».
Я хочу назначить адреса клиентов из другой частной подсети - 10.127.0.0/22 - и маршрутизировать трафик между двумя частными подсетями. Обратите внимание, что подсеть 172.16.0.0/17 управляется Amazon, но подсеть 10.127.0.0/22 сейчас ничем не управляется (кроме моего ipsec.conf).
Мои клиенты Windows подключаются к VPN, но не могут подключиться к каким-либо узлам частной сети. Моя теория заключается в том, что это связано с проблемой либо с маршрутизацией клиента, либо с отсутствием некоторых вызовов iptables на сервере, но я не очень хорошо разбираюсь в любом домене, и я застрял.
ipsec version
отчеты Linux strongSwan U4.5.2/K3.2.0-52-virtual
echo 1 > /proc/sys/net/ipv4/ip_forward
Это /etc/ipsec.conf:
config setup
plutostart=no
conn %default
keyexchange=ikev2
dpdaction=clear
dpddelay=300s
rekey=no
conn dlpvpn
left=172.16.1.15
leftauth=pubkey
leftcert=openssl-cert.pem
leftid=vpn.example.com
leftsubnet=172.16.0.0/17
right=%any
rightsourceip=10.127.0.0/22
rightauth=eap-mschapv2
rightsendcert=never
eap_identity=%any
auto=add
Это /etc/ipsec.secrets:
: RSA openssl-key.rsa
TESTDOMAIN\testuser : EAP "testpassword"
Это /etc/strongswan.conf:
charon {
threads = 16
dns1 = 172.16.3.246
}
Я хочу использовать раздельное туннелирование, при котором только трафик частной сети 172.16.0.0/17 проходит через VPN, а трафик, связанный с Интернетом, использует локальный шлюз клиента. Для этого я снял флажок «Использовать шлюз по умолчанию в удаленной сети» и поставил флажок «Отключить добавление маршрута на основе классов» в клиенте Windows.
Соединение успешно завершено. ipconfig /all
показывает:
PPP adapter strongswan:
Description . . . . . . . . . . . : strongswan
IPv4 Address. . . . . . . . . . . : 10.127.0.1(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . :
DNS Servers . . . . . . . . . . . : 172.16.3.246
Однако я не могу пинговать ни один хост в сети 172.16.0.0/17. Фактически, если я выполняю nslookup, он пытается связаться с DNS-сервером, который я указал в strongswan.conf, но Wireshark на этом DNS-сервере показывает, что ничего не получил. Я даже не могу пропинговать адрес 172.16.1.15 самого сервера strongSwan.
Насколько я понимаю, правила маршрутизации должны быть добавлены вручную в Windows. Однако какими они должны быть? Единственный ответ, который я мог придумать, - это попробовать добавить маршрут для сети 172.16.0.0/17, чтобы использовать адрес VPN-сервера в качестве шлюза, используя команду route add 172.16.0.0/17 172.16.1.15 if 45
. Однако это ничего не изменило - трафик от моего VPN-клиента не попадал в сеть 172.16.0.0/17.
Буду признателен за любую помощь. Спасибо.
Наконец-то это работает, благодаря помощи @ecdsa здесь и некоторой помощи канала irc #strongswan.
Правила маршрутизации моего VPN-клиента были неполными. Мне нужно было добавить оба этих правила:
route add 172.16.1.15/32 10.127.0.1
route add 172.16.0.0/17 172.16.1.15
Первый добавляет маршрут для частного IP-адреса VPN-сервера, указывая IP-адрес моего клиента, назначенный VPN, в качестве шлюза к нему (route print
затем отобразит это как on-link
AKA локальный для этого интерфейса). Второй делает то, что я пытался сделать с правилом маршрута в моем вопросе, - он добавляет маршрут для всей частной сети, указывая VPN-сервер в качестве шлюза.
Мне нужно было указать leftsubnet=172.16.0.0/17
на сервере, иначе политика IPsec не разрешит трафик в подсеть независимо от маршрутов.
Мне нужно было указать leftfirewall=yes
на сервере, чтобы он вставлял соответствующие правила в iptables.
Мне нужно было отключить «проверку источника / назначения» на моем экземпляре Amazon. Хотя я разрешил трафик из моей подсети VPN в / из группы безопасности в панели управления Amazon VPC я не заметил, что есть еще один параметр. На панели управления EC2 вы можете щелкнуть правой кнопкой мыши по экземпляру и перейти к «Изменить проверку источника / назначения». Эта проверка включена по умолчанию и не позволяет моему VPN-трафику когда-либо покидать VPN-сервер (и предотвращает попадание трафика с других хостов VPC в мою VPN-подсеть на VPN-сервер).