Вопрос или проблема
Привет, я использую версию Barrier Breaker OpenWRT и настроил VPN в соответствии с:
http://wiki.openwrt.org/inbox/strongswan.howto
Я могу подключиться к VPN с моего iPhone или Mac (к сети 10.10.1.0/24). Я также могу подключиться с Windows 7.
Клиенту успешно выделяется IP-адрес с помощью DHCP.
После подключения я не могу получить доступ к чему-либо в сети.
/etc/firewall.user содержит:
# Этот файл интерпретируется как скрипт оболочки.
# Поместите ваши пользовательские правила iptables здесь, они будут
# выполняться при каждом (пере)запуске брандмауэра.
iptables -I INPUT -m policy --dir in --pol ipsec --proto esp -j ACCEPT
iptables -I FORWARD -m policy --dir in --pol ipsec --proto esp -j ACCEPT
iptables -I FORWARD -m policy --dir out --pol ipsec --proto esp -j ACCEPT
iptables -I OUTPUT -m policy --dir out --pol ipsec --proto esp -j ACCEPT
# Разрешить ssh и HTTP к маршрутизатору
iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
iptables -I OUTPUT 1 -p tcp --sport 22 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
iptables -I OUTPUT 1 -p tcp --sport 80 -j ACCEPT
/etc/ipsec.conf содержит:
# ipsec.conf - файл конфигурации strongSwan IPsec
# базовая конфигурация
config setup
# strictcrlpolicy=yes
# uniqueids = no
conn ios
keyexchange=ikev1
authby=xauthrsasig
xauth=server
left=%any
leftsubnet=0.0.0.0/0
leftfirewall=yes
leftcert=serverCert.pem
right=%any
rightsubnet=10.10.1.0/24
rightsourceip=%dhcp
rightcert=clientCert.pem
forceencaps=yes
auto=add
conn %default
keyexchange=ikev2
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
dpdaction=clear
dpddelay=300s
rekey=no
conn win7
left=%any
leftsubnet=0.0.0.0/0
leftauth=pubkey
leftcert=serverCert.pem
[email protected]
leftfirewall=yes
right=%any
rightauth=eap-mschapv2
rightsendcert=never
rightsubnet=10.10.1.0/24
rightsourceip=%dhcp
eap_identity=%any
auto=add
(Реальное доменное имя маршрутизатора заменено выше на xxx.yyy.com).
/etc/strongswan.conf содержит:
# strongswan.conf - файл конфигурации strongSwan
charon {
dns1 = 10.10.1.1
# количество потоков рабочих процессов в charon
threads = 16
# отправлять идентификатор продавца strongswan?
# send_vendor_id = yes
plugins {
dhcp {
server = 10.10.1.1
}
sql {
# уровень логирования для записи в sql базу данных
loglevel = -1
# URI к базе данных
# database = sqlite:///path/to/file.db
# database = mysql://user:password@localhost/database
}
}
# ...
}
pluto {
}
libstrongswan {
# установить в no, размер экспоненты DH оптимизирован
# dh_exponent_ansi_x9_42 = no
}
Когда я подключаюсь как с Windows 7, так и с iPhone, статус ipsec на маршрутизаторе показывает:
Безопасные ассоциации (2 активные, 0 в процессе подключения):
ios[5]: УСТАНОВЛЕНО 4 секунды назад, xxx.xxx.xxx.xxx[C=AU, O=Netroworx, CN=xxx.xxx.com]...xxx.xxx.xxx.xxx[C=AU, O=Netroworx, CN=client]
ios{5}: УСТАНОВЛЕНО, ТУННЕЛЬ, ESP в UDP SPIs: c8618e27_i 0923f471_o
ios{5}: 0.0.0.0/0 === 10.10.1.89/32
win7[4]: УСТАНОВЛЕНО 45 секунд назад, xxx.xxx.xxx.xxx[xxx.xxx.com]...xxx.xxx.xxx[192.168.191.131]
win7{4}: УСТАНОВЛЕНО, ТУННЕЛЬ, ESP в UDP SPIs: cae3b4a6_i 67f3eaf0_o
win7{4}: 0.0.0.0/0 === 10.10.1.0/24
(Чувствительные IP-адреса и доменные имена заменены на xxx)
Какие-либо идеи, почему пакеты не маршрутизируются через VPN?
Может быть, это проблема NAT?
Обновление: я получаю следующее, когда пытаюсь установить strongswan на Barrier Breaker:
opkg install strongswan-full
Установка strongswan-full (5.0.4-1) в root...
Загрузка http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/strongswan-full_5.0.4-1_ar71xx.ipk.
Несколько пакетов (kmod-crypto-hash и kmod-crypto-hash), предоставляющих одно и то же имя, помечены HOLD или PREFER. Используется последний.
Несколько пакетов (kmod-crypto-manager и kmod-crypto-manager), предоставляющих одно и то же имя, помечены HOLD или PREFER. Используется последний.
Несколько пакетов (kmod-crypto-core и kmod-crypto-core), предоставляющих одно и то же имя, помечены HOLD или PREFER. Используется последний.
Собранные ошибки:
* satisfy_dependencies_for: Не удается удовлетворить следующие зависимости для strongswan-full:
* kernel (= 3.10.18-1-0de2f8afeb2eecb34eeca6f54b460523) *
* opkg_install_cmd: Не удается установить пакет strongswan-full.
У меня точно такая же проблема. Вы уже нашли решение для этой проблемы?
Некоторые эксперты говорят, что мне нужно маскировать трафик.
Попробуйте следующее:
iptables -I POSTROUTING 1 -s 10.10.1.0/24 -j MASQUERADE -t nat
iptables -I FORWARD -m conntrack --ctstate SNAT -j ACCEPT
iptables -I FORWARD -m conntrack -s 10.10.1.0/24 --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
Это не сработало для меня, но может сработает для вас.
Ответ или решение
Настройка StrongSwan VPN на OpenWrt
Введение
Ваша проблема с отсутствием доступа к сети после подключения через VPN на OpenWrt с использованием StrongSwan может быть вызвана несколькими факторами, включая настройки маршрутизации, NAT и правила брандмауэра. В этом ответе мы подробно обсудим возможные причины и предложим решения.
Текущая конфигурация
Вы предоставили конфигурации для VPN, которые включают файлы /etc/firewall.user
, /etc/ipsec.conf
и /etc/strongswan.conf
. Из описания видно, что соединение устанавливается, но доступ к другим устройствам в подсети VPN (10.10.1.0/24) отсутствует. Это может быть связано с неправильной маршрутизацией или ограничениями в брандмауэре.
Потенциальные проблемы
-
Правила брандмауэра:
Ваша конфигурация/etc/firewall.user
кажется недостаточной для обработки трафика от клиентов, подключенных к VPN. Вам следует убедиться, что правила разрешают пересылку трафика между интерфейсами. -
Маршрутизация:
Убедитесь, что маршруты правильно настроены и отправляются через интерфейс VPN. Часто требуется добавить маршруты для устройств, которые должны быть доступны. -
NAT:
Если ваши клиенты обращаются к ресурсам в локальной сети, может понадобиться применить маскарад, чтобы перенаправить трафик через VPN.
Рекомендуемые действия
-
Обновление правил брандмауэра:
Убедитесь, что ваши правила IPTables прописаны правильно. Вам следует добавить следующее в файл/etc/firewall.user
:# Разрешаем входящие подключения по ESP iptables -I INPUT -m policy --dir in --pol ipsec --proto esp -j ACCEPT # Разрешаем пересылку трафика через интерфейс VPN iptables -I FORWARD -m policy --dir in --pol ipsec --proto esp -j ACCEPT iptables -I FORWARD -m policy --dir out --pol ipsec --proto esp -j ACCEPT # Разрешаем пересылку трафика из подсети VPN iptables -A FORWARD -s 10.10.1.0/24 -j ACCEPT iptables -A FORWARD -d 10.10.1.0/24 -j ACCEPT
-
Маскарад:
Если ваша сеть использует NAT, добавьте правило маскарада:iptables -t nat -A POSTROUTING -s 10.10.1.0/24 -o <интерфейс_интернета> -j MASQUERADE
Замените
<интерфейс_интернета>
на имя интерфейса, который используется для выхода в интернет (обычно этоeth0
,wan
или подобное). -
Проверка маршрутизации:
Убедитесь, что у вас есть правильные маршруты в таблице маршрутизации на клиенте. Командыroute -n
иip route
помогут проверить это. -
Настройка DHCP:
Если используется DHCP, убедитесь, что сервер DHCP правильно назначает шлюз по умолчанию. В идеале, он должен указывать на ваш OpenWrt, чтобы клиенты могли правильно маршрутизировать трафик.
Устранение неполадок
-
Проверьте состояние соединения на OpenWrt с помощью командной строки:
ipsec statusall
-
На клиентской стороне проверьте, какие маршруты установлены через:
route print
-
Используйте инструменты диагностики, такие как
ping
иtraceroute
, чтобы протестировать доступ к устройствам в вашей локальной сети.
Заключение
Обеспечение функционирования VPN на OpenWrt требует тщательной настройки правил брандмауэра и маршрутизации. С помощью предложенных выше изменений вы должны быть в состоянии устранить проблемы с доступом к сети через StrongSwan VPN. Четкое понимание работы NAT и адресации в вашей сети — ключ к успешной настройке.