Мой домашний роутер (обычный бытовой за $100) меня окончательно утомил. Что я только с ним ни делал, но счастье осталось недостижимым. И DD-WRT я на него ставил, и QoS крутить пытался, да все никак.
То utorrent сеть положит, то youtube еле тащится на 360p, я уж молчу о HD. Так что в конце концов бешенство победило лень и я решил из старого компа сделать себе - по плану, работающий — роутер.
Старый роутер был низведен до роли WiFi точки доступа.
Я несколько раз уже пожалел об этом опрометчивом решении, но отступать некуда. Видите ли, с FreeBSD, linux и прочими юниксами я знаком очень мало, и это сказывается.
Кстати, почему именно FreeBSD? Потому что для нее существует отличный мануал для чайников вроде меня: FreeBSD Handbook. Вот я его читаю, пробую что-то сделать,
по пути наступаю на всевозможные грабли и пытаюсь их разрулить, потирая шишки на мозолистом лбу.
Ну, по крайней мере, с youtube у меня проблем больше нет
Помимо всего прочего, я хотел настроить себе локальный сервер DNS, по двум причинам. Во-первых, пусть кэширует - какое-никакое, а ускорение. А во-вторых, хочу иметь локальные имена для своих компов и девайсов.
Конечно, можно hosts по сети править, но это решение далеко от элегантности, да и не везде hosts доступен к изменению (iOS к примеру). Так что хочу. Но если первый вопрос в handbook описывается, то о втором — ни слова.
Курение мануалов и интернетов привело меня к следующему решению.
Включаю BIND, он же named
# ee /etc/rc.conf
named_enable="YES"
Правлю конфиг
named должен слушать только локальный интерфейс, ну и, разумеется, 127.0.0.1. Наружу имена не отдаю.
#ee /etc/namedb/named.conf
// 192.168.0.1 - адрес роутера на внутренней сетевой карте
listen-on { 127.0.0.1; 192.168.0.1;};
Форвард на DNS провайдера и на Google — на тот случай, если DNS провайдера ляжет.
forwarders {
193.17.208.254; 8.8.8.8; 8.8.4.4;
};
// оставил закомментаренным
// forward only;
Определяю свою зону в специальном домене local, который был задуман для нужд, подобных моим. DNS сервер не будет лезть наружу за резолвом имен в этом домене, а значит, мне не нужен свой зарегистрированный домен.
zone "local." IN {
type master;
file "/etc/namedb/master/local-forward.db";
};
// если внутрисетевые адреса не 192.168.0.XXX, то поменять соответственно
zone "0.168.192.in-addr.arpa" IN {
type master;
file "/etc/namedb/master/local-reverse.db";
};
Настраиваю forward
Назначение имен IP адресам.
# ee /etc/namedb/master/local-forward.db
$TTL 3600 ; hour default TTL
local. IN SOA myrouter.local. nobody.local. (
2013080901 ; serial
1080 ; refresh after 3 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
300 ) ; negative respose TTL
; DNS Server
IN NS myrouter.local.
; origin (local.) address
IN A 192.168.0.1
; Machine names
localhost IN A 127.0.0.1
myrouter IN A 192.168.0.1
fileserver IN A 192.168.0.101
Имена добавляются в конец, сколько нужно.
Настраиваю reverse
Обратно — из IP адресов в имена. Реверс желательно настраивать во избежание проблем с некоторыми прикладными протоколами.
$TTL 3600
0.168.192.in-addr.arpa. IN SOA local. nobody.local. (
2013080901
10800
3600
604800
300 )
IN NS myrouter.local.
1 IN PTR myrouter.local.
101 IN PTR fileserver.local.
Прописываю resolv.conf
Я на наружный сетевой интерфейс прописываю статический IP. Если вам нужно получать конфигурацию по DHCP от провайдера или вообще через VPN, то resolv.conf просто так менять не получится, т.к. тот же DHCP клиент resolv.conf перезаписывает. Так что курите интернеты на тему resolvconf.
ee /etc/resolv.conf
search local
nameserver 127.0.0.1
Настраиваю DHCP
Установка и настройка DHCP сервера описана в Handbook, не буду повторяться. Приведу только свой конфиг.
#ee /usr/local/etc/dhcpd.conf
# префикс для доменных имен
option domain-name "local";
# роутер как DNS сервер
option domain-name-servers 192.168.0.1;
# Динамические IP - в первую очередь для гостей
# со своими ноутами/планшетами/телефонами
# мои девайсы у меня все с выделенными IP
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.110 192.168.0.250;
option routers 192.168.0.1;
}
# выделяю фиксированный IP адрес по MAC адресу
host fileserver {
hardware ethernet AA:BB:CC:DD:EE:FF;
# вместо IP адреса использую доменное имя, dhcpd резолв сделает
fixed-address fileserver;
}
Коментувати