среда, 2 января 2013 г.


Использование  IPSec  AVM Fritz Box Fon WLAN 7270 для организации соединения с машиной на базе операционной системы Linux.

http://pmhahn.de/  (корявый вольный перевод с моими дополнениями)

  С 13.03.2008, начиная с версии софта 54.04.55 для Fritz!Box Fon WLAN 7270, реализована поддержка VPN-IPsec в ядре прошивки. К сожалению на странице AVM нет полного описания как например настраивать Windows или другие компоненты для работы с VPN Fritz 7270. Описание для операционной системы Linux также полностью отсутствует, несмотря на то что сам FritzBox работает под управлением этой системы. Поиск в интернете выдает старые статьи по установке и налаживанию, но для старых прошивок, в которых VPN на FritzBox надо было еще доустанавливать вручную пакет под названием Freetz, подразумевая его свободность, требующий не только знания операционной системы Linux, но и установки специализированной виртуальной машины, содержащей все необходимые компоненты и пакеты для компилирования.  В процессе компиляции прошивки скрипт скачивает исходники прошивки и добавляет в них новые функции. Основная "засада" кроется в том, что для добавления новых функций  необходимы приличные знания, поскольку само ПЗУ системы имеет всего 8 МБ и для добавления новых функций, необходимо "патчить", то есть  урезать фирменную прошивку, путем выключения ненужных вам функций.

   А теперь задайте себе вопрос: А откуда вам знать, что вам не нужно? А если это и так, то не отразится-ли это "обрезание" на работе  других подпрограмм..Не станет-липосле этого ваш роутер "глючить"??  Это еще вопрос..

  И как правило это еще не все. Скомпилированная вами "прошивка" вполне может "не пойти".. Причем возврат к предидущей версии не такая простая задача.. И на этом поприще вам гарантирован приличный "секас", поскольку компания  AVM  любезно предоставила программы восстановления только для "своих" прошивок, которые напрочь отказываются восстанавливать  различные  "кастомы".

  Слава богу для этого есть специализованная  программа, написанная энтузиастами (не нашими).. Которая все равно НЕ ЗАРАБОТАЕТ без наличия на входе "восстанавливаемого" Fritz Box собственно Интернета. А где-ж его взять если роутер вы только, что "убили" вашей "новой прошивкой"?? Программа в процессе своей работы программа скачивает прошивку из сети, причем скачать её предварительно и куда-то "положить" все равно не получится, скачанную таким образом прошивку программа просто "не видит"!  Короче все не просто. 
   
   Так как все версии Линукса на ядре 2.6 также реализуют поддержку IPSec, появилась идея использовать "домашние" средства Debian для подключения к домашней сети. После нескольких проб и ошибок мне удалось задуманное, что я и хочу вам предложить в качестве документации. (несколько ниже).
   Способ заключается в понятии необходимого нам VPN IPSec  с помощью программы recoon. 
Для начала напечатаем список всех переменных пользовательских настроек
LOCAL_INTERN Адрес домашней сети, (Здесь: 192.168.0.201/32 )
LOCAL_INTERN_NETSIZE 32
LOCAL_INTERN_NETMASK 255.255.255.255
LOCAL_INTERN_NETWORK 192.168.0.201
LOCAL_EXTERN Внешний адрес ноутбука, возможно динамически через DHCP основе. (Здесь: 134.106.22.73 )
HOME_INTERN Адреса в локальной сети. (Здесь: 192.168.0.0/16 )
HOME_INTERN_NETSIZE 16
HOME_INTERN_NETMASK 255.255.0.0
HOME_INTERN_NETWORK 192.168.0.0
HOME_EXTERN Внешний адрес отечественных Fritz Box , по DynDNS erfragbar. (Здесь: 92.196.38.176 )
HOME_DYNDNS DynDNS имя (Здесь: pmhahn.dyndns.org
USER_FQDN Адрес электронной почты в качестве уникального идентификатора для подключения. (Здесь: pmhahn@pmhahn.de )
ПАРОЛЬ Pre-Shared Key.
Проблема: Так как и ноутбук и ! Fritz Box имеют динамические адреса, настройки ноутбука всегда должна корректируется при изменении одного или обоих внешних адресов. Изменения внешнего адреса ноутбука могут быть размещены в умных скриптах в / etc/dhcp3/dhclient-enter-hooks.d / и / etc/dhcp3/dhclient-exit-hooks.d /.  Сложнее реагировать на изменения внешнего IP-адреса Fritz Box , так как он не будет событий, подключенные к ноутбуку. Это было бы мыслимо регулярных запросов DNS записи.

Fritz Box конфигурации

DynDNS


Так как IP-адрес на принудительное разделение может меняться каждый день, имеет смысл, установить DynDNS. Этот пример в dyndns.com создать учетную запись и создать адрес типа ( pmhahn.dyndns.org ). Доступ и полное доменное имя должно быть прописано в ФрицВОХ на вкладке  Settings/ Network / DynDNS.  После этого host pmhahn.dyndns.org будет внешним адресом нашего Fritz!.

VPN конфигурации

В VPN портала есть программа конфигурации  VPN подключения для Windows Vista/XP/2000 , с двух конфигурационных файлов для Fritz Box и доступа программного обеспечения FRITZ! . Все, что вам нужно, это загрузить сгенерированный программой файл файл fritzbox.cfg Fritz Box во вкладке Settings / Network / VPN"
Файл  fritzbox.cfg следующего содержания:

vpncfg {
connections {
enabled = yes;
conn_type = conntype_user;
name = "${USER_FQDN}";
always_renew = no;
reject_not_encrypted = no;
dont_filter_netbios = yes;
localip = 0.0.0.0;
local_virtualip = 0.0.0.0;
remoteip = 0.0.0.0;
remote_virtualip = ${LOCAL_INTERN_NETWORK};
remoteid {
user_fqdn = "${USER_FQDN}";
}
mode = phase1_mode_aggressive;
phase1ss = "all/all/all";
keytype = connkeytype_pre_shared;
key = "${PASSWORD}";
cert_do_server_auth = no;
use_nat_t = no;
use_xauth = no;
use_cfgmode = no;
phase2ss = "esp-all-all/ah-none/comp-all/pfs";
accesslist =
"permit ip ${HOME_INTERN_NETWORK} ${HOME_INTERN_NETMASK} ${LOCAL_INTERN_NETWORK} ${LOCAL_INTERN_NETMASK}";
}
ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500",
"udp 0.0.0.0:4500 0.0.0.0:4500";
}
Debian GNU/Linux

1.Устанавливаем пакеты:
aptitude install racoon ipsec-tools iproute

2.Устаналивает пароль: /etc/racoon/psk.txt anpassen
${HOME_EXTERN} ${PASSWORD}
# Die Verwendung des nachfolgenden USER_FQDN scheint nicht zu funktionieren pmhahn@pmhahn.de ${PASSWORD}

3.Правим файл конфигурации: /etc/racoon/racoon.conf anpassen

path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
log notify; # error warning notify debug debug2
listen {
#adminsock "/var/run/racoon/racoon.sock" "root" "root" 0660;
isakmp ${LOCAL_EXTERN} [500];
}
remote anonymous {
exchange_mode aggressive;
doi ipsec_doi;
situation identity_only;
my_identifier user_fqdn "${USER_FQDN}";
#peers_identifier fqdn "${HOME_DYNDNS}";
verify_identifier off;
mode_cfg off;
#script "/etc/racoon/phase1-up.sh" phase1_up;
#script "/etc/racoon/phase1-down.sh" phase1_down;
send_cert on;
send_cr on;
verify_cert off;
ike_frag on;
initial_contact on;
passive off;
proposal_check claim;
support_proxy off;
generate_policy off;
nonce_size 16;
proposal {
encryption_algorithm aes;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
lifetime time 1 hour;
}
}
#sainfo address ${LOCAL_INTERN} any subnet ${HOME_INTERN} any {
sainfo anonymous {
pfs_group 2;
lifetime time 1 hour;
compression_algorithm deflate;
encryption_algorithm aes;
authentication_algorithm hmac_sha1, non_auth;
}
P.S. Понять, что к чему. Поможет статья Никиты Меньковича, по этому адресу. Там все ну просто ОЧЕНЬ подробно расписано и переписывать её здесь нет никакого смысла.

4. Ноутбук должен иметь IP адрес из домашней подсети, потому как все компьютеры в моей сети настроены так что разрешают доступ к сервисам только компьютерам из собственной сети.
ip addr add ${LOCAL_INTERN} dev eth0
5. Для управления базами безопасных соединений и политик безопасности (SAD/SPD) используется утилита setkey. Более подробное описание можно узнать из man setkey. Это будет автоматически вызывать recoon для проверки подлинности сессионного ключа.(В качестве альтернативы: racoonctl VPN-соединения (racoonctl vpn-connect ${HOME_DYNDNS}?) 
В Security Policy Database (SPD) должно быть прописано, что соединение к Fritz!Box должно быть зашифровано. Таким образом racoon будет автоматически выбирать ключ шифровки для текущего соединения.
#setkey -c
spdadd ${LOCAL_INTERN} ${HOME_INTERN} any -P out ipsec esp/tunnel/${LOCAL_EXTERN}-${HOME_EXTERN}/require;
spdadd ${HOME_INTERN} ${LOCAL_INTERN} any -P in ipsec esp/tunnel/${HOME_EXTERN}-${LOCAL_EXTERN}/require;