Опыт создания домашнего Wi-Fi маршрутизатора. Часть 2. Установка и настройка ПО

  • Tutorial


И снова здравствуйте!

В первой части статьи я рассказывал о «железной» составляющей будущего роутера. Поскольку без софта даже самое расчудесное железо, естественно, работать не будет, следовательно требовалось снабдить аппарат соответствующей программной «начинкой».

Когда я затевал всё это движение, я предполагал, что будет непросто. Но не предполагал, что настолько. В одном из комментариев к предыдущей части статьи я клятвенно пообещал рассказать о нижеследующем «к выходным». Благоразумно умолчал к каким именно. :-) Тут ещё умудрился прихворнуть не вовремя, но всё-таки сдерживаю своё обещание.

Итак…


Напомню комплектацию:

  • материнская плата Intel D2500CC с комплектным двухядерным 64-bit процессором Intel Atom D2500, двумя гигабитными сетевыми интерфейсами
  • оперативная память SO-DIMM DDR-3 1066 4Gb Corsair
  • SSD-накопитель Crucial M500 120 GB
  • сетевая карта 1000 Mbit D-Link DGE-528T
  • mini-PCI-E Wi-Fi карта Intel 7260.HMWWB 802.11 a/b/g/n/ac + Bluetooth 4.0
  • всё это хозяйство упаковано в корпус Morex T-3460 60W

Первым делом я определил для себя круг задач, которые будет выполнять маршрутизатор, чтобы в дальнейшем мне было проще его админить.

Ещё раз уточню, что эти ваши интернеты приходят ко мне по 100 Мбитному каналу (тариф, естественно, даёт несколько меньшую скорость, но не суть). Получилось, собственно, вот что:

  • Доступ в интернет со всех устройств, имеющихся дома в распоряжении +n устройств, появляющихся эпизодически или вообще однократно
  • Домашняя локалка
  • Соответственно, маршрутизация трафика из/в интернет/локальная сеть
  • Файлохранилище (доступ по FTP или Samba)
  • Торрентокачалка
  • ed2k-сеть (ибо очень круто развита у провайдера)
  • web-сервер

В перспективе:

  • домен
  • видеонаблюдение
  • элементы «умного дома»
  • чёрт в ступе много чего интересного

Естественным в этой ситуации было выбирать из *nix-based систем. Некоторое время пришлось потратить на изучение матчасти, рыская по сети. В итоге я проделал следующий путь…


1. FreeBSD 10.1-RELEASE


Очень хотелось реализовать всё на фряхе. Плюсы её в управлении сетевыми устройствами, серверами/шлюзами/маршрутизаторами очевидны, неоспоримы и многократно воспеты гуру.
Поскольку ранее дел я с фряхой близко не имел, пришлось круто раскурить Руководство по FreeBSD, сопровождая процесс чтения параллельным процессом установки на устройство последнего стабильного релиза 10.1.
Небольшое отступление
К слову, установку фряхи (да и всех описываемых далее систем) я производил при помощи замечательного устройства Zalman ZM-VE300 с терабайтным HDD внутри; сие устройство имеет на борту эмулятор оптического привода, что позволяет накидать на жёсткий диск в папку _iso образы, после чего, установив в BIOS загрузку с Zalman Virtual CD, производить загрузку и установку с этих самых образов, всё равно что, если бы они были записаны на болванку и вставлены в физический привод.

Всё было замечательно, система встала, но меня ждал неприятный сюрприз, о котором я, откровенно говоря, знал, но решил-таки проверить на практике: FreeBSD напроч отказывалась видеть Wi-Fi карточку. Вернее видеть-то она её видела, но только адрес и название вендора, а что это и с чем её едят, фряха понимать не желала (драйвер устройства значился как none1). Кроме того, дальнейшее чтение мануала выявило, что в режиме точки доступа во FreeBSD работают только Wi-Fi карты на основе набора микросхем Prism. Печальбеда... Да, нашёл я также и информацию, что моя карточка в настоящий момент вообще не имеет драйвера под фряху. Даже портированного.

10. Debian 7.7.0



Расстраивался я недолго: не состоялась фряха — возьму старый добрый Debian. Установил с netinstall-образа базовую систему без графического окружения. Долго пытался понять, что не так. Стабильный релиз Debian в данный момент 7.7.0, имеет ядро версии 3.2. В этом ядре опять же нет поддержки моей многострадальной Wi-Fi сетевушки. Полез на ЛОР искать ответ, в итоге получил неутешительные выводы: надо ставить ядро посвежее (в случае Debian — тот ещё геморрой), пляски с бубном ядрами, по мнению гуру, не труъ Debian-way (так прямо и сказали: хочешь перекомпилять ядра — выбери другой дистрибутив).

11. Ubuntu Server 14.04 LTS



Плюнув на попытки круто провести время покрасноглазить, я взял знакомый и уважаемый мной дистрибутив. Уже более года он (правда версии 12.04 LTS) вертится у меня на сервере, раздающем плюшки в сети провайдера.

Из плюсов: стабильность, простота установки, настройки и администрирования, куча документации.
Из минусов: необходимость дорабатывать напильником, поскольку «искаропки» получается толстоват и несколько неповоротлив.

Установка

По сути не представляет ничего сложного и аналогична таковой в Debian. Производится в диалоговом режиме text-mode. Описывать детально не вижу смысла, т.к. всё это уже десятки раз пережёвано и валяется на множестве ресурсов (начиная с официальных сайтов на разных языках и заканчивая местечковыми форумами).

Важным моментом является правильная разметка и подготовка SSD. Всем прекрасно известно, что твердотельные накопители построены на технологии flash-памяти и имеют ограниченный ресурс на запись. Справедливости ради отмечу, что на просторах всемирной паутины глаголят о достаточной надёжности современных твердотельников (сравнимой с классическими жёсткими дисками). Тем не менее было бы глупо плевать на элементарные рекомендации в отношении эксплуатации SSD.

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

Первой необходимой манипуляцией при разметке накопителя является выравнивание разделов диска. Если кратко, то каждый раздел должен начинаться с сектора кратного 8. Первый раздел рекомендовано начинать с 2048 сектора (это связано с расположением в начале накопителя MBR или GPT, а «отступ» в 1 Мб берётся с запасом.

При разметке я создал 3 раздела:

  • boot — ext2
  • root — ext4
  • home — ext4

$ sudo fdisk -l

Диск /dev/sda: 120.0 Гб, 120034123776 байт
255 головок, 63 секторов/треков, 14593 цилиндров, всего 234441648 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 4096 байт
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Идентификатор диска: 0x000ea779

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *        2048     1050623      524288   83  Linux
/dev/sda2         1050624    42993663    20971520   83  Linux
/dev/sda3        42993664   234440703    95723520   83  Linux

Как видно, все разделы начинаются с секторов, кратных 8. Таким образом доступ будет осуществляться с обращением по правильному сектору, что поможет сберечь нежный ресурс накопителя.

Далее в опциях монтирования разделов в /etc/fstab следует добавить discard — для включения TRIM и noatime — для отключения записи в метаданные времени последнего доступа к файлу.

Очередное отступление
С noatime не всё так однозначно. Например, в десктопных системах браузеры отслеживают «свежесть» своего кэша именно по времени последнего доступа, таким образом, включение данной опции влечёт за собой не уменьшение записи на диск, а наоборот — увеличение, поскольку браузер видит, что его кэш «протух» и начинает подтягивать новый. В этом случае рекомендуется использовать опцию relatime — атрибут времени доступа (atime) обновляется, но только в том случае, если изменились данные файла (атрибут mtime) или его статус (атрибут ctime). Для серверной системы это, пожалуй, не столь критично, но всё же я включил noatime для boot, а для root и home — relatime.

Все остальные советы, нагугленные на просторах сети, как то увеличение времени между сбросами буферов на диск (опция commit=[time, sec.]), отключение «шлагбаума» (опция barrier=0) и прочее не внушили мне доверия в плане приобретаемой полезности в ущерб сохранности данных и безопасности.
Кроме того, я не стал выделять отдельный раздел для swap, решив, что оперативной памяти мне должно хватить для поставленных задач. Если же всё-таки возникнет необходимость в подкачке, ничто не мешает сделать swap в виде файла и смонтировать его как раздел.

Также было принято волевое решение вынести временные файлы (/tmp) в tmpfs.

В процессе установки задаются общие параметры, как то: локаль, параметры времени/геопозиции, имя системы, а также создаётся новый юзер и пароль к нему. Далее следует выбор устанавливаемого программного обеспечения, в котором я пометил для установки следующее:

  • OpenSSH server
  • DNS server
  • LAMP server
  • Print server
  • Samba file server

После загрузки в свежеустановленную систему проявилась одна крайне неприятная особенность (кстати, в Debian было то же самое): после инициализации драйверов вырубалось видео, монитор переходил в режим ожидания, и становилось непонятно система зависла или просто что-то не так с выводом. Обнаружилось, что доступ по ssh есть, и можно было бы на этом остановиться, но всегда может возникнуть ситуация, когда необходимо получить физический доступ к маршрутизатору (например, шаловливые ручонки админа поковырялись в настройках сети, и доступ через консоль категорически пропал %) ). Посёрфиф по форумам я наткнулся на решение (оказывается баг известен и проявляется именно на этой материнской плате):
add to /etc/modprobe.d/blacklist.conf:
blacklist gma500_gfx

run
sudo update-initramfs -u
sudo reboot

Пруф.
В случае с Debian — /etc/modprobe.d/fbdev-blacklist.conf.
После перезагрузки всё заработало.

Настройка сети

В процессе установки системы я выбрал в качестве сетевого интерфейса, который будет использован для установки, карту D-Link. Она уменя была подключена патчкордом к одному из LAN моего старого маршрутизатора (это было сделано для того, чтобы иметь доступ по SSH до настройки сетевых интерфейсов, а поскольку на Асусе также запущен DHCP-сервер, проблем с подключением не возникло), тестировать при таком подключении доступ в интернет не составит никаких проблем.
Также в свежей системе проявился ещё один глюк:
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory

Проблема связана с библиотекой авторизации libpam-smbpass, можно просто её снести, а можно поступить более изящно:

$ sudo pam-auth-update 

снять пометку с SMB password synchronization, что отключает синхронизацию паролей системных пользователей и пользователей Samba.
Устанавливаем все доступные обновления:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

И приступаем к настройке сетевых интерфейсов. В маршрутизаторе 4 физических интерфейса и loopback:
Вывод терминала
$ ifconfig -a

em0       Link encap:Ethernet  HWaddr 00:22:4d:ad:69:f0  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:17 Память:d0220000-d0240000 

eth0      Link encap:Ethernet  HWaddr d8:fe:e3:a7:d5:26  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::dafe:e3ff:fea7:d526/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:741 errors:0 dropped:0 overruns:0 frame:0
          TX packets:477 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:482523 (482.5 KB)  TX bytes:45268 (45.2 KB)

eth1      Link encap:Ethernet  HWaddr 00:22:4d:ad:69:ec  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:16 Память:d0320000-d0340000 

lo        Link encap:Локальная петля (Loopback)  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:28 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1784 (1.7 KB)  TX bytes:1784 (1.7 KB)

wlan0     Link encap:Ethernet  HWaddr 80:19:34:1e:fe:83  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


  • eth0 — «смотрит» в интернет, получает настройки по DHCP
  • eth1 и em0 — интегрированные в материнку сетевые адаптеры
  • wlan0 — как нетрудно догадаться, беспроводной интерфейс Wi-Fi

Устанавливаем hostapd и переводим беспроводной интерфейс в режим Master:
$ sudo iwconfig wlan0 mode Master

К моему величайшему сожалению такой способ не сработал, и команда вывалилась с ошибкой, поэтому я прибегнул к альтернативному способу:
$ sudo apt-get install iw
$ sudo iw dev wlan0 del
$ sudo iw phy phy0 interface add wlan0 type __ap

После чего:
$ iwconfig 
wlan0     IEEE 802.11abgn  Mode:Master  Tx-Power=0 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

Теперь необходимо сконфигурировать все сетевые интерфейсы, чтобы было удобнее с ними работать. Я решил объединить встроенные сетевушки и Wi-Fi в мост, чтобы управлять этим хозяйством как единым целым при раздаче IP-адресов по DHCP, маршрутизации и пр. Приводим к следующему виду /etc/network/interfaces:
/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

auto wlan0 br0

# The wireless interface
iface wlan0 inet manual
pre-up iw dev wlan0 del
pre-up iw phy phy0 interface add wlan0 type __ap

# The bridge
iface br0 inet static
address 192.168.0.1
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
bridge_ports em0 eth1 wlan0


Перезагружаемся. Теперь видим:
Вывод терминала
$ ifconfig -a
br0       Link encap:Ethernet  HWaddr 00:22:4d:ad:69:ec  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

em0       Link encap:Ethernet  HWaddr 00:22:4d:ad:69:f0  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:17 Память:d0220000-d0240000 

eth0      Link encap:Ethernet  HWaddr d8:fe:e3:a7:d5:26  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::dafe:e3ff:fea7:d526/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1329 errors:0 dropped:0 overruns:0 frame:0
          TX packets:819 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:531178 (531.1 KB)  TX bytes:125004 (125.0 KB)

eth1      Link encap:Ethernet  HWaddr 00:22:4d:ad:69:ec  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:16 Память:d0320000-d0340000 

lo        Link encap:Локальная петля (Loopback)  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:28 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1784 (1.7 KB)  TX bytes:1784 (1.7 KB)

wlan0     Link encap:Ethernet  HWaddr 80:19:34:1e:fe:83  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


Инициализировались все интерфейсы.
Можно приступить к настройке hostapd. Пока мы тут рассуждали, версия стала, таки, 2.1.
У меня получился вот такой конфиг /etc/hostapd/hostapd.conf:
hostapd.conf
interface=wlan0
bridge=br0
driver=nl80211
logger_syslog=-1
logger_syslog_level=4
logger_stdout=-1
logger_stdout_level=4
ssid=TEST
hw_mode=g
ieee80211n=1
ht_capab=[HT40-][SHORT-GI-40]
channel=11
macaddr_acl=0
deny_mac_file=/etc/hostapd/hostapd.deny
auth_algs=3
ignore_broadcast_ssid=1
ap_max_inactivity=300
wpa=2
wpa_passphrase=my_wpa_passphrase
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP


Включаем автоматический запуск hostapd при загрузке системы, для этого в /etc/default/hostapd раскомментируем и редактируем строки:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
DAEMON_OPTS="-B"
RUN_DAEMON="yes"

Далее, не мудрствуя лукаво, я настроил общий доступ. Скрипт для настройки iptables и ip-форвардинга я взял отсюда, привёл его в соответствие своим реалиям и настроил автозапуск. В результате iptables наполняются необходимым содержимым при загрузке системы.
Логично, что нужно текже настроить DHCP-сервер. Решив упростить задачу до минимума, я установил dnsmasq и снёс имеющийся в наличии и конфликтующий с ним bind9. Конфиг прост:
/etc/dnsmasq.conf
# Configuration file for dnsmasq.
#
# Format is one option per line, legal options are the same
# as the long options legal on the command line. See
# "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details.

# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv

# If you want dnsmasq to listen for DHCP and DNS requests only on
# specified interfaces (and the loopback) give the name of the
# interface (eg eth0) here.
# Repeat the line for more than one interface.
interface=br0

# This is an example of a DHCP range where the netmask is given. This
# is needed for networks we reach the dnsmasq DHCP server via a relay
# agent. If you don't know what a DHCP relay agent is, you probably
# don't need to worry about this.
dhcp-range=192.168.0.2,192.168.0.254,255.255.255.0,12h

# Give a host with Ethernet address 11:22:33:44:55:66 or
# 12:34:56:78:90:12 the IP address 192.168.0.60. Dnsmasq will assume
# that these two Ethernet interfaces will never be in use at the same
# time, and give the IP address to the second, even if it is already
# in use by the first. Useful for laptops with wired and wireless
# addresses.
#dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.60
dhcp-host=00:11:22:33:44:55,66:77:88:99:aa:bb,MyDevice1,192.168.0.2
dhcp-host=cc:dd:ee:ff:ee:dd,cc:bb:aa:99:88:77,MyDevice2,192.168.0.3


На самом деле в конфиге ещё куча закомментированных опций, которые позволяют производить очень fine tuning, но такого набора вполне хватает для корректной работы. В принципе, с этого момента аппарат уже работает как домашний маршрутизатор.
После окончания основной настройки я установил и настроил transmission-daemon, aMuled и vsftpd. Собственно говоря, настройка данных сервисов достаточно тривиальна, останавливаться детально на ней не буду. Естественно, доступ к данным ресурсам имеется только из локальной сети, если хочется получить доступ извне, необходимо будет открыть соответствующие порты в iptables.
Вёб-сервер представляет из себя связку Apache 2.4.7 + MySQL Ver 14.14 Distrib 5.5.40. Пока не придумал, чем буду его заполнять: накатить готовый движок и баловаться с дизайном или же просто попрактиковаться в html и php. В любом случае сие имеет для меня прикладное значение. Возможно, в перспективе получится настроить вёб-интерфейс для мониторинга и управления маршрутизатором.
После всех манипуляций остаётся настроить ведение логов: по возможности привести настройки всех процессов, ведущих логи, выводить в них только критически важные уведомления и предупреждения. Идея заключается в снижении количества операций записи, а, соответственно, и негативного влияния на SSD.
Кроме того, следует настоятельно рекомендуется включить запуск по cron раз в сутки fstrim (для каждого раздела отдельно). Говорят, хуже не будет точно.

Ффух… Получилось несколько сумбурное описание моих мытарств с собственноручно собранным устройством, но удовлетворение от того, что всё работает просто неописуемо.

В комментарии к предыдущей части статьи многоуважаемый dmitrmax интересовался уровнем энергопотребления сборки. Ну что же, привожу примерные данные, которые мне удалось почерпнуть из открытых источников:
  • процессор Intel Atom D2500 — до 10 Вт
  • SSD-накопитель Crucial M500 — 3,6 Вт

По остальным крмплектующим данных сходу не нашлось, но практически везде в характеристиках сетевой карты и Wi-Fi модуля пишут «низкое энергопотребление». Если грубо накинуть на всё про всё 10 Вт (прочее железо, интегрированные сетевушки, etc), то итого получается около 25 Вт — не так уж и много, полагаю…

Вроде бы ничего не забыл, упомянул все ключевые моменты. За подробностями прошу в комментарии. Спасибо за внимание! (-;

UPD: Господин Revertis справедливо заметил, и я с ним соглашусь, что изначально при установке системы не следовало отмечать DNS-сервер, чтобы потом его сносить (речь о bind9), но в статье я описывал именно путь, который проделал — со всеми его ошибками и закоулками. И да, соглашусь, что nginx лучше, чем Apache, более того — я его даже заменю. Спасибо за совет.
Поделиться публикацией

Комментарии 37

    +2
    Удивительно, но я из того же города, подключен к тому же провайдеру и собрал похожий роутер с таким же процом внутри, только вот в качестве ОС выбрал Debian Jessy (stable не подошел по той же причине — модуль ядра для wi-fi, карта, правда, у меня попроще, без bluetooth и 'ac'). С багом gma500 на момент установки не сталкивался, правда с тех пор выходило много обновлений, может быть в них что-то сломали, монитор к роутеру давно не подключал. В качестве dhcp-сервера установил ISC dhcpd. В конфиге изменил 'option domain-name-servers', указал там dns-серверы нашего провайдера и один из гугловских публичных, остальное всё по шаблону, который внутри этого же конфига находится. Устанавливать свой dns-сервер на таком роутере для реального использования, а не экспериментов посчитал излишним. Кроме того, поставил syncthing для синхронизации файлов между компьютерами. В основном синхронизруемыми файлами выступают бэкапы ПО этого роутера, которые я делаю с помощью небольшого самописного python-скрипта.
      +2
      для меня самый большой минус использования дистрибутивов общего назначения в качестве маршрутизатора — отсутствие веб-интерфейса для конфигурации и единой системы настройки сетевых вещей. Потому использую openwrt_x86 и не парюсь :).
        –1
        Веб-интерфейс для нубов. Редактирование текстовых конфигов при помощи vim — наше всё :)
          +2
          веб-интерфейс не только для редактирования конфигов нужен (хотя добавляет процессу целостности), но и для удобства обзора текущего состояния: загруженность, клиенты, статус сервисов и т.п.
          Эх, если бы скрестить Luci с пакетной базой дебиана…
            –2
            для удобства обзора текущего состояния: загруженность, клиенты, статус сервисов и т.п.

            Это всё свистелки. :) Туда глядишь только когда какие-то проблемы диагностируешь.
              +1
              Я бы не назвал диагностику проблем «свистелками» :)
                –2
                Все равно когда проблемы возникают, обычно лезешь в консоль, логи почитать, команды повводить.
                  0
                  Это тоже можно делать через веб =)
                  Разница лишь в том, что для веба нужен браузер, а для консоли ssh-клиент. А в плане удобства каждый сам для себя выбирает.
                  PS Я на стороне консоли, но зачастую ставлю веб для отслеживания состояния с планшета/телефона и несколько упрощённой (хоть и не точной, потом правлю некоторые вещи ручками) настройки.
              0
              Есть pfSense, RouterOS (денежку, правда, стоит) и другие, несть им числа.
                0
                их пакетным базам до Дебиана…
                  0
                  Если вам нужен роутер, то пакетные базы не при чём. Тот же RouterOS шикарен, но только в плане роутера/шлюза. Ну и поддержку хардвера надо проверять. Правда платный, да. Хотя железо с ним на борту летом стоило от 2-3к, являюсь счастливым обладателем. Из минусов только отсутствие 5ГГц в готовых моделях и ac стандарта. Можно взять их же комплектухи и примерно за деньги описанные в статье построить свой идеальный роутер. Правда это будет только роутер, да.
                  0
                  Да и про поддержку оборудования фряхой тут уже писали…
              +1
              root@WebServ:~# aptitude search zentyal
              p   zentyal-ca                        - Zentyal - Certification Authority                                                                                                        
              p   zentyal-common                                - Zentyal - Common Library                                                                                                                 
              p   zentyal-core                                - Zentyal - Core                                                                                                                           
              p   zentyal-dhcp                                    - Zentyal - DHCP Service                                                                                                                   
              p   zentyal-dns                                       - Zentyal - DNS Service                                                                                                                    
              p   zentyal-firewall                                    - Zentyal - Firewall                                                                                                                       
              p   zentyal-network                                   - Zentyal - Network Configuration                                                                                                          
              p   zentyal-ntp                                        - Zentyal - NTP Service                                                                                                                    
              p   zentyal-objects                                  - Zentyal - Network Objects                                                                                                                
              p   zentyal-openvpn                                - Zentyal - VPN Service                                                                                                                    
              p   zentyal-printers                                   - Zentyal - Printer Sharing Service                                                                                                        
              p   zentyal-samba                                  - Zentyal - File Sharing and Domain Services                                                                                               
              p   zentyal-services                                  - Zentyal - Network Services                                                                                                               
              p   zentyal-squid                                  - Zentyal - HTTP Proxy (Cache and Filter)                                                                                                  
              p   zentyal-users                                 - Zentyal - Users and Groups         
              root@WebServ:~# uname -a
              Linux WebServ 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
              

              Веб интерфейс и на дистрибутив общего назначения можно поставить. Под шлюз считаю в самый раз.
              +2
              А что такого не-труъ в пересборке ядра в дебиане? Единственное — надо ядро при сборке аккуратно упаковывать в пакетик, через make deb-pkg, к примеру.
                +1
                > многоуважаемый dmitrmax

                Откуда ко мне столько много уважения? ) А вообще мощность можно замерить мультиметром, например, если замерить ток. Потому что реальные значения могут отличаться от спецификационных, ведь там обычно идут максимумы. Ну или на худой конец, есть специальные розетки с дисплейчиком, правда покупать такую только ради этого роутера не стоит )
                  0
                  Откуда ко мне столько много уважения? )

                  Образованные и культурные люди должны уважать друг друга, я полагаю. (:

                  А вообще мощность можно замерить мультиметром, например, если замерить ток. Потому что реальные значения могут отличаться от спецификационных, ведь там обычно идут максимумы.

                  Здравая идея. Руки дойдут — измерю и отпишусь, если до сих пор это кому-то интересно. :D

                  Ну или на худой конец, есть специальные розетки с дисплейчиком, правда покупать такую только ради этого роутера не стоит )

                  Если только на будущее…
                    0
                    Руки дойдут — измерю и отпишусь...

                    Ну вот руки дошли — рассказываю.
                    Для подключения мультимера пришлось сколхозить вот такое
                    устройство
                    из найденных в закромах розетки от старой гладильной доски и обрезка провода от кондиционера.

                    Измерение напряжения в домовой сети показало 234-237 В.
                    Вотъ


                    Ток при подключении маршрутазатора и нагрузки на него (ноутбук и 2 смартфона по Wi-Fi + ещё один ноутбук по проводу, на всех устройствах запущено проигрывание роликов на «тытрубе», на самом маршрутизаторе закачка торрентов) колебался в пределах 0,08-0,11 А.
                    Так


                    Таким образом, потребляемая мощность находится в пределах 18,72-26,07 Вт. Так что мои грубые прикидки оказались потрясающе близки к истине. (;
                    Пиковые значения заснять не удалось — мелькали кратковременно. Также было замечено, что вышеописанная нагрузка никак не повлияла на энергопотребление…
                      0
                      Здорово! Стенд просто восхитительный! )
                    0
                    Кстати, ради интереса измерил потребляемую мощность моего старого роутера Asus wl500-gp, и вот что получилось:
                    при напряжении 230 В без нагрузки на маршрутизатор ток был в пределах 0,06-0,08 А, получается 13,8-18,4 Вт;
                    при том же напряжении и подключенном внешнем жёстком диске (как, собственно, до установки нового маршрутизатора всё и работало) ток 0,11-0,14 А, потребляемая мощность тогда — 25,3-32,2 Вт.
                    Стало быть, с новым роутером получился даже выигрыш в энергопотреблении. Такие дела…
                    0
                    Очень хотелось реализовать всё на фряхе. Плюсы её в управлении сетевыми устройствами, серверами/шлюзами/маршрутизаторами очевидны, неоспоримы и многократно воспеты гуру.

                    На мой взгляд, преимущества при использовании FreeBSD для домашнего маршрутизатора сильно преувеличены, тем более сейчас, когда в ядре Linux появилась альтернатива BPF.

                    Полез на ЛОР искать ответ, в итоге получил неутешительные выводы: надо ставить ядро посвежее (в случае Debian — тот ещё геморрой)

                    Увы, «ЛОР уже не торт, ЛОР-это щи». Поставить новое ядро в Debian проще простого:
                    1) добавить в /etc/apt/sources.list что-то вроде
                    deb http://mirror.yandex.ru/debian/ sid main contrib non-free

                    2) apt-get update
                    3) Запустить aptitude и выбрать новое ядро
                      0
                      del
                        0
                        Да, вы правы — лучше из бэкпортов, aptitude тогда зависимости (libc и т.п.) не потащит. Правда, на packages.debian.org поиск странный и по вашему запросу выдяет ядра только для Intanium. Вот так packages.debian.org/search?suite=wheezy-backports&searchon=names&keywords=linux-image-3 можно найти и linux-image-3.16.0-0.bpo.4-586
                      +2
                      Сразу исправьте, у вас описано, что во время установки вы ставили «DNS server», а потом пишете, что снесли bind. Вдруг, кто-то пойдет по вашим стопам ;)

                      И это… в качестве http-сервера лучше уже ставить nginx, а не монстра Апача.
                        0
                        Соглашусь по всем пунктам. В пост добавил. Спасибо за совет!
                        0
                        Рано или поздно может потребоваться проводная сеть, а значит нужен какой-то коммутатор («тяжелые» фильмы сложно смотреть через wifi или невозможно). В итоге все равно еще одну коробочку ставить. =)
                        Я так же собирал все в одном сервере на miniitx, но в итоге забил и купил микротик (который и фаервол и роутер и свитч), а сервер переделал в xpenology. Теперь красота)
                          0
                          Ну есть же две onboard-сетевушки. Я пока даже не знаю, что в них подключать. На крайний случай можно и PCI-адаптер освободить: купить USB-Ethernet — входящий-то канал всё равно 100 Мбит, USB 2.0 для него вполне хватит. :)
                          Делал всё just for fun, да. :)
                          0
                          Очень хотелось реализовать всё на фряхе. Плюсы её в управлении сетевыми устройствами, серверами/шлюзами/маршрутизаторами очевидны, неоспоримы и многократно воспеты гуру.


                          А можно для тех, кому неочевидно рассказать подробно, в чём плюсы FreeBSD и почему стоит выбрать её вместо Linux? И какими именно гуру, как и когда эти плюсы воспеты?
                            0
                            Не знаю, я ведь сварщик не настоящий — на стройке нашёл. (ц) (:
                            А если серьёзно, то я не совсем понял: это сарказм или ирония с Вашей стороны?
                              0
                              Ну мне бы тоже было очень интересно в чём плюсы фряхи относительно Linux «в управлении сетевыми устройствами, серверами/шлюзами/маршрутизаторами ». Буду очень рад если кто-то расскажет.
                                +1
                                Ну, во-первых, ipfw/pf (второй скорее к OpenBSD, но всё же). Во-вторых, у FreeBSD более мощный сетевой стек, она куда лучше справляется с большими сетевыми нагрузками. Именно за это её так нежно любят интернет-провайдеры.
                                  +2
                                  Ну, во-первых, ipfw/pf (второй скорее к OpenBSD, но всё же). Во-вторых, у FreeBSD более мощный сетевой стек, она куда лучше справляется с большими сетевыми нагрузками. Именно за это её так нежно любят интернет-провайдеры.


                                  Чем ipfw/pf лучше iptables в цифрах? Ещё хотелось бы в цифрах узнать мощность сетевого стека FreeBSD и сравнить её с тем же самым показателем для Linux. Ещё хотелось бы поимённый список интернет-провайдеров, где нежно любят FreeBSD. С точным описанием как именно любят, другими словами, где именно используется. А то вот я работаю в интернет-провайдере, и мы тут FreeBSD не только не любим, но и при первой же возможности избавляемся от этого древнего наследия былых времён. Складывается впечатление, что сказки про стабильность FreeBSD и её мощность в сравнении с Linux уже не актуальны лет 10, но вот именно на пост-советском пространстве их почему-то любят пересказывать снова и снова.
                          • НЛО прилетело и опубликовало эту надпись здесь
                            • НЛО прилетело и опубликовало эту надпись здесь
                                –1
                                А если свет забирают, и потом включают — оно само включается, или с пинка?

                                Питается от бесперебойника без обратной связи. В настройках BIOS "After Power Failure" выставлено "Last State".
                                Сценарий работы таков: при отключении электроэнергии сначала вступает в действие UPS, когда он иссякнет (полагаю, не менее чем минут через 40), подача питания будет прервана; когда включится подача питания, железяка заведётся сама. (;
                                +1
                                Вот еще хорошая статья "Настройка сервера Debian/Ubuntu". Написаны полезные вещи, например automysqlbackup, autopostgresqlbackup, ведение истории изменений конфигурации — etckeeper, защита от ошибочного выключения — molly-guard и т.д.
                                  +1
                                  Фряха полноценно поддерживает только карточки Atheros, об этом даже в хендбуке вроде инфа есть. Остальные карточки тоже поддерживаются, но чтобы поднять на них Wi-Fi, придётся очень серьёзно потанцевать с бубном.
                                    0
                                    fstrim нужно запускать не раз в сутки, а раз в неделю (так сейчас настроено по-умолчанию на свежих дистрах).
                                    Ну и при использовании fstrim по cron-у нужно выключить discard для ФС.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое