Asus Eee как сервер: настройка роутера
Внимание! Эта статья написана давно и валяется тут исключительно в исторических целях!
Итак, сегодня речь пойдет о настройке роутера. Ее мы разелим на две части: настройка точки доступа и настройка файрвола. Поехали!
Настройка точки доступа
На этом шаге отбросьте желание поднять ad-hoc, если конечно вы не хотите чтобы ваш интернет утекал всем кому не лень. В Linux для ad-hoc поддерживается только WEP шифрование, которое достаточно легко взламывается. Для того, чтобы использовать WPA необходимо использовать вашу WiFi-карту в режиме точки доступа (она же Master), а для этого, в свою очередь, надо установить демон hostapd, который (с того времени, как данную функциональность убрали из драйверов madwifi) занимается точками доступа:
# pacman -S hostapd
Демон несложен в настройке, его конфигурационные файлы хранятся в
/etc/hostapd/
, главный из которых – hostapd.conf
– отвечает за
непосредственные настройки вашей карты и сети, которую вы собираетесь
поднимать. Он достаточно подробно документирован на английском, я лишь покажу
свой конфиг:
# Интерфейс на котором поднимается точка доступа
interface=wlan0
# Уровни логгирования
# 2 значит информационные сообщения
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
# Файл, куда скидывается дамп hostapd при SIGUSR1
dump_file=/tmp/hostapd.dump
# Интерфейс для параллельного контроля надо hostapd и группа, которая имеет к нему доступ
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
# Название сети, ревизия протокола (a, b, g) и канал
ssid=dancingrobot84
hw_mode=g
channel=5
# Файлы, в которых хранятся разрешенный/запрещенный MAC-адреса клиентов
# У меня в свое время тут что-то на срослось, а разбираться было лень, поэтому - под коммент!
# accept_mac_file=/etc/hostapd.accept
# deny_mac_file=/etc/hostapd.deny
# Алгоритмы аутентификации: 1 - Open System, 2 - Shared Key(WEP)
# На самом деле, не особо нужны, так как все равно будет WPA
auth_algs=3
# Версия WPA: 0 - WPA, 1 - WPA2(RSN)
wpa=1
# Зашифрованный ключ доступа
# Генерируется через wpa_passphrase
wpa_psk=5617e735b00fd89b889c9e8031d30ac1205f8873466168e65f1e624f626a63ca
# Незашифрованный пароль
# wpa_passphrase=qweasd
# Разрешенные алгоритмы для операции над ключами
# У меня нет крутого Enterprise сервера для авторизации, поэтому просто Personal Shared Key
wpa_key_mgmt=WPA-PSK
# Разрешенные алгоритмы шифрования для WPA и WPA2(RSN)
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP
Если вы поднимаете только роутер для домашней раздачи интернета и не собираетесь использовать Eee в качестве сервера, то имеет смысл не возиться с форвардингом и соединить интерфейс точки доступа и интернета мостом. Как это сделать я писать не буду, достаточно перейти сюда и почитать несколько первых ссылок. А мы продолжаем.
Настройка файрвола и форвардинг
Вся вышеописанная конструкция не будет раздавать интернет пока мы не настроим должным образом файрволл. Я не использую чистый iptables, потому что нет времени сесть и разобраться в его монструозных настройках. Вместо этого существует несколько различных надстроек, упрощающих конфигурирование iptables. Я рекомендую firehol, потому что он, на мой взгляд, достаточно простой и понятный. Итак, устанавливаем:
# pacman -S firehol
Запускается он как и любой другой демон через /etc/rc.d
, настройки хранятся в
/etc/firehol/firehol.conf
. Конфигурационный файл имеет простой и понятный
синтаксис, полную документацию по настройке можно найти на официальном
сайте. Я, как обычно, лишь покажу свой
конфиг с комментариями:
# Настраиваем интерфейс на котором у нас интернет
interface eth0 internet
# По-умолчанию просто дропаем все пакеты
policy drop
# Включаем защиту от разного рода флуда и неправильных пакетов
protection strong
# На своем сервере я запретил пинг. Раскомментируйте эту строку, чтобы разрешить его.
# server icmp accept
# Как говорит офф мануал, "некоторые серверы пытаются идентифицировать пользователя,
# отправившего запрос. С текущими правилами они получат лишь таймаут, а чтобы ускорить процесс
# пишем эту строчку"
server ident reject with tcp-reset
# Сервера ниже разрешены
server http accept
server custom tcp-torrent tcp/51111 any accept
server custom udp-torrent udp/51111 any accept
# Клиенты нам нужны все, разрешаем
client all accept
# Это интерфейс точки доступа
# У меня всего один ноутбук, адрес ему выдается статический, поэтому ограничиваю источник только
# этим адресом: в случае взлома точки хакеру придется также подбирать и IP адрес чтобы иметь доступ в
# интернет
interface wlan0 wifi src "192.168.42.2"
# drop - это достаточно строго. В своей сети можно и помягче быть, поэтому ставим reject
# В отличие от drop он отправляет нам ответ о запрещенном соединении, а не просто бросает наш
# ждать таймаута
policy reject
# Нижеперечисленные сервера доступны во внутренней сети, а клиенты заблокированы, потому что
# никаких клиентов на точке доступа быть не должно
server "http dhcp dns ftp ssh icmp" accept
client all reject
# Настройки форвардинга интернета с eth0 на wlan0
router wifi2net inface wlan0 outface eth0 src "192.168.42.2"
# Маскарадим пакеты, потому что клиент наш не имеет 'белого' адреса
masquerade
# Принимаем любые перенаправления
route all accept
router net2wifi inface eth0 outface wlan0
# См. описание про indent выше, в секции настроек eth0
route ident reject with tcp-reset
С файрволом разобрались, осталось лишь разрешить в системе форвардинг пакетов.
Меняем в /etc/sysctl.conf
:
net.ipv4.ip_forward=1
и чтобы не перезагружаться выполняем:
# echo 1 > /proc/sys/net/ipv4/ip_forward
или:
# sysctl -p
Готово! Теперь после подключения по WiFi вы должны иметь на своем клиенте рабочий интернет.
Замечания по WiFi
В моей конфигурации присутствует два компьютера: непосредственно Eee 900 и мой рабочий ноутбук Samsung R560. Я сознательно опустил настройку dhcpd, потому что использую статические адреса на обоих ноутбуках. Если же у вас достаточно много компьютеров в наличии или у вас публичная точка доступа, то необходимо позаботится о том, чтобы IP адреса не конфликтовали. Самый удобный способ - раздавать их через вышеупомянутый dhcpd.
Устанавливаем как и все остальное:
# pacman -S dhcp
Конфигурация находится в /etc/dhcpd.conf
и, как всегда, отлично
документирована и снабжена примерами. Мой же файл выглядит так:
# Времена выдачи IP адреса (по умолчанию и максимальное, думаю, что в секундах).
default-lease-time 600;
max-lease-time 7200;
# Этот dhcp-сервер единственый и, конечно, официальный
authoritative;
# Вот и наша сеть
subnet 192.168.42.0 netmask 255.255.255.252 {
# Интерфейс
interface wlan0;
# Диапазон сети
range 192.168.42.1/30;
# DNS-сервера по-умолчанию
option domain-name-servers 84.22.140.1, 84.22.142.2, 208.67.222.222, 208.67.220.220;
# Адрес нашего сервера, раздающего интернет
# Будет шлюзом у клиента
option routers 192.168.42.1;
# Широковещательный адрес
option broadcast-address 192.168.42.0;
}
Готово! Теперь dhcpd будет автоматически выбирать и давать адреса из диапазона 192.168.42.1/30. Этот диапазон довольно узкий (всего два IP-адреса и один уже занят роутером), так что для вашей сети подбирайте маску самостоятельно.