Здравствуйте, трамброидяне!
Хотелось бы рассказать о том, как настроить IPSec тунель на роутере WRT160NL под управлением OpenWRT.
Многие могут возразить, что инструкций по настройке IPSec'а полно в интернете, но настройка под OpenWRT на этом роутере имеет свои особености.
Итак, имеем подключение со следующими параметрами.
Адрес удаленного сервера A.A.A.A
Удаленная сеть a.a.a.a/a
Адрес роутера B.B.B.B
Локальная сеть b.b.b.b/b
Фаза 1
PSK nnnnnnn
Алгоритм шифрования(encryption_algorithm) 3des
Алгоритм хеширования(hash_algorithm) sha1
Diffie-Hellman_group modp1024
Время жизни ключа(lifetime) 28800 sec
Фаза 2
Diffie-Hellman_group modp1024
Алгоритм шифрования(encryption_algorithm) 3des
authentication_algorithm) hmac_sha1
Алгоритм сжатия(compression_algorithm) deflate
Время жизни ключа(lifetime) 3600 sec
Перейдем к настройке.
1.Устанавливаем необходимые пакеты
# opkg update # opkg install ipsec-tools kmod-crypto-authenc kmod-ipsec kmod-ipsec4
2.Редактируем конфигурационный файл /etc/racoon.conf и приводим его к следующему виду
path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; path include "/etc/racoon"; log debug2; padding { maximum_length 20; # maximum padding length. randomize off; # enable randomize length. strict_check off; # enable strict check. exclusive_tail off; # extract last one octet. } remote A.A.A.A { exchange_mode main; situation identity_only; lifetime time 28800 sec ; # sec,min,hour proposal { encryption_algorithm 3des ; hash_algorithm sha1 ; authentication_method pre_shared_key ; dh_group 2 ; } } sainfo address b.b.b.b/b[any] any address a.a.a.a/a[any] any { pfs_group 2; lifetime time 3600 sec ; encryption_algorithm 3des; authentication_algorithm hmac_sha1; compression_algorithm deflate; }
3.Дальше нужно записать в файл /etc/racoon/setkey.conf следующее
#! /usr/sbin/setkey -f flush; spdflush; spdadd b.b.b.b/b[any] a.a.a.a/a[any] any -P out ipsec esp/tunnel/B.B.B.B-A.A.A.A/require; spdadd a.a.a.a/a[any] b.b.b.b/b[any] any -P in ipsec esp/tunnel/A.A.A.A-B.B.B.B/require;
3.В файл /etc/racoon/psk.txt записывается Pre-Shared Key
A.A.A.A nnnnnnn
и устанавливаются права 600
# chmod 0600 /etc/racoon/psk.txt
4.Теперь нужно добавить правила для фаервола, для этого в файл /etc/firewall.user нужно добавить
iptables -A input_rule -p esp -s A.A.A.A -j ACCEPT # allow IPSEC iptables -A input_rule -p udp -s A.A.A.A --dport 500 -j ACCEPT # allow ISAKMP iptables -A input_rule -p udp -s A.A.A.A --dport 4500 -j ACCEPT # allow NAT-T iptables -t nat -A postrouting_rule -d a.a.a.a/a -j ACCEPT
и перезапустить его
# /etc/init.d/firewall restart
Собственно настройка завершена, теперь нужно подключится.
1.А вот теперь особености :). Для работы racoon-а необходимы следующие модули af_key, esp4, ah4, authenc, xfrm4_tunnel, xfrm4_mode_tunnel. Загружаются они командой insmod
# insmod af_key # insmod esp4 # insmod ah4 # insmod xfrm4_tunnel # insmod authenc # insmod xfrm4_mode_tunnel
2.Теперь нужно создать alias для интерфейса wan, который будет служить шлюзом сети
# ifconfig eth1:0 b.b.b.b netmask 255.255.255.0
3.Далее создается рабочий каталог
# mkdir /var/racoon
4.Теперь можно запустить racoon
# racoon
если необходимо запустить racoon в режиме отладки то нужно выполнить эту команду с ключем -Fd
# racoon -Fd
5.Запускаем setkey
# setkey -f /etc/racoon/setkey.conf
6.И создаем соединение
# racoonctl vpn-connect A.A.A.A
Все, тунель работает. Если тунель не заработал, то смотрите вывод демона racoon -Fd
Теперь можно создать init скрипт в каталоге /etc/init.d для автоматического поднятия тунеля, о том как это сделать я расскажу позже.
и прошить роутер(Инструкция по прошивке должна быть в сети). Ну а дальше действовать согласно этой статье.