Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи Linux - Все статьи »

Обсудить на форуме Обсудить на форуме

Настройка Wi-Fi под freeBSD

Оригинал статьи

Типичная картина - есть домашний роутер на FreeBSD, предоставляющий доступ в интернет машинам маленькой домашней локалки. Один из клиентов - лаптоп с wi-fi картой, получающий доступ в сеть через соедиенный с роутером Access Point. Не будем в сто первый раз упоминать про недостатки WEP, а также про то, что часто предлагаемая альтернатива - IPSec-туннель между беспроводным клиентом и шлюзом (роутером). Просто настроим все это.
Пусть клиент имеет адрес 192.168.1.3, внутренний адрес нашего роутера a.k.a. шлюза в интернет - 192.168.1.1, адрес точки доступа (AP) не играет здесь никакой роли - для него все будет прозрачно.
С учетом нашей ситуации (маленькая сеть, один-два беспроводных клиента), мы не будем использовать key exchange демоны (racoon, isakmpd), а пропишем ключевые фразы руками.

Сервер: -------

~# echo "ipsec_enable="YES"" >> /etc/rc.conf
~# cat > /etc/ipsec.conf
# flush previous SAD & SPD
flush;
spdflush;
# Security Association Database
# For ESP
add 192.168.1.1 192.168.1.3 esp 1011 -E 3des-cbc "myveryverysecretpassphrase";
add 192.168.1.3 192.168.1.1 esp 1012 -E 3des-cbc "myveryverysecretpassphrase";
# For AH
add 192.168.1.1 192.168.1.3 ah 1234 -A hmac-md5 "verysecrettoo";
add 192.168.1.3 192.168.1.1 ah 1235 -A hmac-md5 "verysecrettoo";
# Security Policy Database
spdadd 192.168.1.3 0.0.0.0/0 any -P in ipsec esp/tunnel/192.168.1.3-192.168.1.1/require
ah/tunnel/192.168.1.3-192.168.1.1/use;
spdadd 0.0.0.0/0 192.168.1.3 any -P out ipsec esp/tunnel/192.168.1.1-192.168.1.3/require
ah/tunnel/192.168.1.1-192.168.1.3/use;
^D

Если у нас FreeBSD 4.x:

~# reboot

Или, с учетом того, что ipsec стартует нехитро, как можно убедиться из rc.network:

case ${ipsec_enable} in
[Yy][Ee][Ss])
if [ -f ${ipsec_file} ]; then
echo " ipsec: enabled"
setkey -f ${ipsec_file}
else
echo " ipsec: file not found"
fi
;;
esac


просто выполняем:

~# setkey -f /etc/ipsec.conf

В случае FreeBSD 5.x/6.x вообще все просто:

~# /etc/rc.d/ipsec start

Тем самым, мы загрузили правила, указывающие применять протоколы AH (Authention Header) и ESP (Encapsulated Security Payload) для всех пакетов, проходящих через нас от клиента или к нему. Файл состоит из двух частей - описания правил ассоциации (ЧТО использовать) и политики ассоциации (КАК использовать). В нашем случае видно, что использование ESP обязательно (require), тогда как AH - по желанию (use). Парольные фразы - ключи, на основе которых генерируются сессионные ключи для шифрования информации.
Замечу, что если эти действия выполняются удаленно, например, по ssh, с того самого беспроводного клиента, то можно потерять с ним связь, так как он (клиент) еще не настроен. Be careful.

Клиент: -------

В моем случае клиентом также является FreeBSD-машина, возможно, это не так интересно с точки зрения настройки (например, если вы предпочитаете узнать, как настроить Windows NT в качестве клиента), но увы - у меня FreeBSD и на лаптопах тоже.
В этом случае конфигурация клиента будет отличаться только парой записей в ipsec.conf:
# flush previous SA & SP
flush;
spdflush;
# Security Association rules
# For ESP
add 192.168.1.1 192.168.1.3 esp 1011 -E 3des-cbc "myveryverysecretpassphrase";
add 192.168.1.3 192.168.1.1 esp 1012 -E 3des-cbc "myveryverysecretpassphrase";
# For AH
add 192.168.1.1 192.168.1.3 ah 1234 -A hmac-md5 "verysecrettoo";
add 192.168.1.3 192.168.1.1 ah 1235 -A hmac-md5 "verysecrettoo"; # Security Policy rules spdadd 0.0.0.0/0 192.168.1.3 any -P in ipsec esp/tunnel/192.168.1.1-192.168.1.3/require
ah/tunnel/192.168.1.1-192.168.1.3/use;
spdadd 192.168.1.3 0.0.0.0/0 any -P out ipsec esp/tunnel/192.168.1.3-192.168.1.1/require
ah/tunnel/192.168.1.3-192.168.1.1/use;


Нетрудно заметить, что поменялось направление: 0.0.0.0/0 192.168.1.3 стало "IN" (т.е. это означает, что необходимо принимать трафик от всех как зашифрованный, что вполне логично - это будет трафик, отмаршрутизированный шлюзом), а 192.168.1.3 0.0.0.0/0 стало "OUT" (т.е. "шифровать все, что уходит на какой-либо хост от меня", т.к. согласно маршрутизации все пойдет на шлюз).

Убедиться в том, что ни один пакет не остался "голым", можно с помощью tcpdump:

22:10:14.747551 IP 192.168.1.1 > 192.168.1.3: AH(spi=0x000004d2,seq=0x19d3): IP truncated-ip - 68 bytes missing! 192.168.1.1 > 192.168.1.3: ESP(spi=0x000003f3,seq=0x19d3) (ipip-proto-4)
22:10:14.815396 IP 192.168.1.1 > 192.168.1.3: ah
22:10:14.815707 IP 192.168.1.3 > 192.168.1.1: AH(spi=0x000004d3,seq=0x1b18): IP 192.168.1.3 > 192.168.1.1: ESP(spi=0x000003f4,seq=0x1b18) (ipip-proto-4)

Я не до конца понимаю великий смысл строчек про truncated-ip, потери производительности или каких-либо других проблем я не заметил. Возможно, это связано с тем, что на лаптопе я использовал -CURRENT.


Может пригодится:


Автор: Anton Karpov
Прочитано: 7162
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (2)

Прислал: Ilya V. Azarov
А не проще сделать WPA-PSK авторизацию с использованием hostapd как это описано у меня на блоге? :) Ваша статья ничего не имеет общего с Wi-Fi. Вы описали создание примитивного IP туннеля. Сложно у вас тут :) + какокй

Прислал: Штирлиц
ЫЫЫЫЫЫЫЫЫ... Шляпа какая-то!!! И где тут про Wi-Fi?!

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру