OpenBSD 4.8 — настройка в качестве точки доступа
Зачем и кому нужна эта хм... HOWTO-шка? Да мне самому в первую очередь. Да и время было, вот и наваял. На роль писателя не претендую, писал для себя. Может еще кто почитает - мне пофиг, если честно.
Слева расположен ряд ссылок, советую для начала почитать тем, кто ни разу не сталкивался с OpenBSD. Установка OpenBSD 4.8 отличается от предыдущих версий, но инсталятор довольно таки интуитивный, разобраться можно. По ходу дела буду давать ссылки на страницы справочного руководства (на родном английском языке).
Итак, приступим-с...
Исходные данные :
- Ноутбук Acer Aspire 3000 (клавиатура вся залита кофе, из привода сидюка выужено 69 копеек, племяш видать постарался)
- USB Wi-Fi адаптер D-Link DWL-G122
- OpenBSD 4.8
Для каждого сетевого интерфейса в OpenBSD создается свой конфиг.
Для Wi-Fi (у меня он определился как rum0) надо будет создать свой. Но сперва проверим в каких режимах может работать этот девайс.
На помощь придет ifconfig :
Весь выхлоп писать не буду, слишком много там всего, меня интересует только media autoselect mode 11b mediaopt hostap - значит может адаптер работать в режиме точки доступа.# ifconfig rum0 media
Теперь создадим конфиг :
После чтения man'уалов и недолгого раздумья добавляем следующие строки :# vim /etc/hostname.rum0
где :up media autoselect description "WLAN" mediaopt hostap nwid "ssid" wpa wpaprotos wpa2 wpapsk `wpa-psk ssid passphrase` inet 192.168.1.7 255.255.255.0
ssid — название сетки
passphrase — супер-пупер-мега-пароль
Правда хранить пароль в открытом виде в конфиге очень плохая идея. Лучше все-таки вместо `wpa-psk ssid passphrase` вставить результат выполнения этой команды в терминале.
Обратите внимание - во всех конфигурационных файлах необходимо делать переход на новую строку, дабы система не ругалась - ЭТО ВАЖНО!
Сразу подправим /etc/rc.conf :
Впишем туда все, что понадобится в дальнейшем. По ходу чтения станет понятно.dhcpd_flags="rum0" # запуск демона dhcpd при старте системы pf=YES # аналогично для pf pf_rules=/etc/pf.conf # путь к конфигу с правилами pf named_flags=-4 # запуск DNS с поддержкой только IPv4
Смотрим, разрешен ли форвардинг:
Правим /etc/sysctl.conf, находим там закоментированный параметр и приводим его к нормальному виду :# sysctl -w net.inet.ip.forwarding net.inet.ip.forwarding=0
Теперь приступим к настройке pf (пакетного фильтра). Приведу лишь самый минимум, для работы NAT. Кто захочет разобраться : Вот простейший работоспособный конфиг /etc/pf.conf :net.inet.ip.forwarding=1
На данном этапе большего не нужно. Потом, после настройки, по мере надобности правила будут дописываться.int_if="rum0" # internal interface (LAN) ext_if="sis0" # external interface (Internet) set skip on lo pass # NAT match out on $ext_if from $int_if:network to any nat-to ($ext_if:0) # разрешаем все pass from { lo, $int_if:network } to any keep state
При помощи pfctl проверяем правила, не загружая их в pf :
Если все нормально, применим правила :# pfctl -nf /etc/pf.conf
man pfctl просветит насчет всех опций.# pfctl -f /etc/pf.conf
Осталось настроить DHCP(dhcpd), DNS(rndc) и синхронизацию времени(ntpd).
/etc/dhcpd.conf :
Настройка DNS.# Network: 192.168.1.0/255.255.255.0 # Domain name: onix.lan # Name servers: 192.168.1.7 # Default router: 192.168.1.7 # Addresses: 192.168.1.32 - 192.168.1.127 # NTP Servers: 192.168.1.7 option domain-name "onix.lan"; option domain-name-servers 192.168.1.7; option ntp-servers 192.168.1.7; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.7; range 192.168.1.32 192.168.1.127; host static-client { hardware ethernet 00:15:af:87:c1:5f; fixed-address 192.168.1.8; } host pxe-client { hardware ethernet 02:03:04:05:06:07; filename "pxeboot"; next-server 192.168.1.7; } }
Главный конфиг /var/named/etc/named.conf :
И еще два файла из /var/named/master (их необходимо будет создать, имена произвольные) :acl clients { 192.168.1.0/24; 127.0.0.1; }; options { version ""; // remove this to allow version queries listen-on { clients; }; allow-query { clients; }; allow-recursion { clients; }; allow-transfer { none; }; }; controls { inet 127.0.0.1 allow { any; }; }; logging { category lame-servers { null; }; }; // Standard zones zone "." { type hint; file "etc/root.hint"; }; zone "localhost" { type master; file "standard/localhost"; allow-transfer { 127.0.0.1; }; }; zone "127.in-addr.arpa" { type master; file "standard/loopback"; allow-transfer { 127.0.0.1; }; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" { type master; file "standard/loopback6.arpa"; allow-transfer { 127.0.0.1; }; }; // 192.168.0.7 Internet zone "192.168.0.7" { type forward; forward first; forwarders { 192.168.0.254; }; }; // Internal LAN (onix.net) zone "onix.lan" in { type master; file "/master/onix.lan"; }; zone "1.168.192.in-addr.arpa" in { type master; file "master/onix.lan.arpa"; };
1. /var/named/master/onix.lan :
2. /var/named/master/onix.lan.arpa :$ORIGIN . $TTL 86400 ; 24 hours onix.lan IN SOA gate.onix.lan. root.gate.onix.lan. ( 2010022201 ; Serial 86400 ; Refresh (24 hours) 3600 ; Retry (1 hour) 172800 ; Expire (48 hours) 3600 ; Minimum (1 hour) ) NS gate.onix.lan. $ORIGIN onix.lan. gate A 192.168.1.7>
Для более глубокого понимания советую приобрести книгу «UNIX Руководство системного администратора». На странице 414 начинается описание DNS.$ORIGIN . $TTL 86400 ; 24 hours 1.168.192.in-addr.arpa IN SOA gate.onix.lan. root.gate.onix.lan. ( 2010022201 ; Serial 86400 ; Refresh (24 hours) 3600 ; Retry (1 hour) 172800 ; Expire (48 hours) 3600 ; Minimum (1 hour) ) NS gate.onix.lan. $ORIGIN 1.168.192.in-addr.arpa. 7 PTR gate.onix.lan.
Смотрим права и владельца, должно быть так :
# ls -l /var/named/etc/ -rw-r----- 1 root named 1563 Aug 16 17:46 named-dual.conf -rw-r----- 1 root named 1351 Aug 16 17:46 named-simple.conf -rw-r----- 1 root named 1582 Dec 15 09:44 named.conf -rw-r----- 1 root named 77 Dec 15 09:40 rndc.key -rw-r--r-- 1 root wheel 3056 Aug 16 17:46 root.hint # ls -l /var/named/master/ -rw-r----- 1 named named 482 Dec 15 09:45 onix.lan -rw-r----- 1 named named 564 Dec 15 09:38 onix.lan.arpa
Проверим правильность конфигов :
Можно воспользоваться nslookup :# named-checkconf /var/named/etc/named.conf
Полет нормальный - идем дальше.# nslookup 192.168.1.7 Server: 192.168.1.7 Address: 192.168.1.7#53 7.1.168.192.in-addr.arpa name = gate.onix.lan. # nslookup gate.onix.lan Server: 192.168.1.7 Address: 192.168.1.7#53 Name: gate.onix.lan Address: 192.168.1.7
Cинхронизация времени — ntpd
/etc/ntpd.conf :
Ну вот и все.# $OpenBSD: ntpd.conf,v 1.11 2009/05/18 16:13:48 stevesk Exp $ # sample ntpd configuration file, see ntpd.conf(5) # Addresses to listen on (ntpd does not listen by default) listen on 192.168.1.7 # sync to a single server # server ntp.example.org # use a random selection of NTP Pool Time Servers # see http://support.ntp.org/bin/view/Servers/NTPPoolServers servers pool.ntp.org # use a specific local timedelta sensor (radio clock, etc) # sensor nmea0 # use all detected timedelta sensors # sensor *
Еще раз напомню - все это делалось для себя любимого, все равно придется читать мануалы и понимать происходящее. Может со временем отшлифую ЭТО :) - добавлю правил для pf, etc...