iOS-разработчик
0,0
рейтинг
23 ноября 2013 в 20:02

Администрирование → Домашний сервер «всё-в-одном» — success story tutorial recovery mode

Жил да был у меня роутер одной хорошей фирмы на букву «Dead». Ну, это с ним, собственно, и случилось.
Посмотрел я на цены новых, на кучу компьютерного хлама в углу, на список подключений на домашнем компе… И понял, что не нужен мне роутер. Соберу свой, с нормальной маршрутизацией, DNS, WINS, i2p, блекджеком и так далее.

Как это было?


После недолгих раскопок в залежах железа, на свет были извлечены:
• Процессор Intel Core 2 Duo E8400 @ 3GHz
• При нём же – материнка Asus P5Q
• 2 планки DDR2 по 2Gb
• PCI-e сетевая карта TP-Link TG-3468
• Неопознанная сетевая карта WiFi (b/g/n) на базе Ralink RT3060
• Жёсткий диск Seagate 250Gb
Вывод lshw можно посмотреть тут.
Всё это было отчищено от пыли, вмонтировано в корпус с блоком питания, запущено и проверено в memtest и mhdd. Не обнаружив дефектов, я начал установку всего мне необходимого.

Основы основ


За основу я взял дистрибутив Debian Testing, раскатанный через Debootstrap. Сверху сразу были поставлены openssh-server, firmware-ralink и pppoe/pppoeconf.
Ребутнувшись в свежепоставленную систему, я сразу перенёс SSH на 192.168.1.1 и отключил авторизацию по паролю (установив предварительно свой ключ).

Да будет сеть!


Для начала был запущен pppoeconf. К DOCSIS-модему оказалась подключена сетевая карта с именем eth1, в итоге был получен следующий конфиг /etc/ppp/peers/rt:
noipdefault
defaultroute
replacedefaultroute
hide-password
noauth
persist
plugin rp-pppoe.so eth1
user "ptn"
usepeerdns

Но это не всё – необходимо ещё настроить /etc/network/interfaces следующим образом:
auto rt
iface rt inet ppp
        pre-up /sbin/ifconfig eth1 up
        provider rt


Превращаем роутер в WiFi-AP


Изначальная задумка была в том, что бы сделать 2 WiFi-сети: одну для своих компьютеров и ноутбуков, с надёжным паролем и присоединением ко всем необходимым ресурсам, а вторую – для гостей, которым захотелось выйти в интернет, но не надо знать о том, что творится в моей сети.
В итоге на сервер был установлен hostapd с конфигом следующего вида (все названия сетей и пароли были изменены):
interface=wlan0
driver=nl80211
country_code=RU
ieee80211d=1
hw_mode=g
channel=9

ssid=Private
bridge=br0
preamble=1
ignore_broadcast_ssid=0
wpa=3
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP
wpa_passphrase=MyVeryStrongPassword
wmm_enabled=1
ieee80211n=1
ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40]
internet=1

bss=wlan0_0
ssid=Guest
preamble=1
ignore_broadcast_ssid=0
wpa=3
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP
wpa_passphrase=passw0rd
wmm_enabled=1
ieee80211n=1
ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40]
internet=1

Тут мы ставим ещё и bridge для eth0 и wlan0 – это позволит подключившимся к нашей сети видеть её целиком, а не беспроводной сегмент. Модифицируем networks:
auto eth0 wlan0 wlan0_0 br0

iface eth0 inet manual

allow-hotplug wlan0
allow-hotplug wlan0_0

iface wlan0 inet manual
        pre-up ifconfig wlan0 hw ether f2:7d:68:6d:51:30

iface br0 inet static
        bridge_ports eth0 wlan0
        address 192.168.1.1
        netmask 24

iface wlan0_0 inet static
        address 192.168.254.1
        netmask 24

Немного о магии в pre-up для wlan0: для работы с несколькими AP нам надо использовать больше, чем один MAC-адрес. Hostapd назначает MAC для виртуальных интерфейсов (wlan0_0 в нашем случае) автоматически, но для этого адрес первой точки доступа должен иметь несколько «пустых» битов в конце. Я не стал мелочиться и освободил сразу 4 штуки. Задача на дом – посчитайте, сколько максимум AP теперь можно запустить на одной карте.

Налетай – IP всем и каждому, бесплатно!


Всем компьютерам в сети, как это ни прискорбно, надо выдать IP-адреса. Да-да, этим мы и будем заниматься.
Недолго думая, на сервере был запущен DHCP-сервер следующей конфигурации:
update-static-leases on;
authoritative;
allow unknown-clients;
use-host-decl-names on;
log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {
        interface br0;
        authoritative;
        range 192.168.1.2 192.168.1.254;
        option subnet-mask 255.255.255.0;
        option ntp-servers 192.168.1.1;
        option domain-name-servers 192.168.1.1;
        option netbios-name-servers 192.168.1.1;
        option routers 192.168.1.1;
        option domain-name "local";
}

subnet 192.168.254.0 netmask 255.255.255.0 {
        interface wlan0_0;
        authoritative;
        range 192.168.254.2 192.168.254.254;
        option subnet-mask 255.255.255.0;
        option domain-name-servers 8.8.8.8, 8.8.4.4;
        option routers 192.168.254.1;
}

local-address 192.168.1.1;

Видно, что для 192.168.1.1/24 так же выдаются DNS, WINS, NTP и шлюз 192.168.1.1 – самое время их настроить.
Со шлюзом всё просто, думаю, эти команды не знает только ленивый:
sysctl net.ipv4.ip_forward=1
iptables –t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Разумеется, ставим iptables-persistent для сохранения наших настроек, а так же прописываем соответствующие параметры в /etc/sysctl.conf.
Теперь наш сервер является полноценным китайским роутером за 10$. Что? Вам кажется слабовато? Мне тоже. Едем дальше.

Как пройти в библиотеку?


Думаю, никто не забыл, что нам нужен DNS? Простейший forwarding настраивается до нелепости просто, но ведь мы делаем полноценный сервер с резолвингом и реверс-зонами… Ставим bind9, и настраиваем:
options {
        directory "/var/cache/bind";
        forwarders {
                8.8.8.8;
                8.8.4.4;
        };
        dnssec-validation auto;
        auth-nxdomain no;
        listen-on { 127.0.0.1; 192.168.1.1; };
        allow-transfer { none; };
        version none;
};
zone "local" IN {
        type master;
        file "/var/lib/bind/db.localnet";
};
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "/var/lib/bind/db.localnet-rev";
};

Теперь нам нужны файлы прямой и обратной зоны:
/var/lib/bind/db.localnet
$ORIGIN .
$TTL 86400      ; 1 day
local                   IN SOA  ns.local. router.local. (
                                200216990  ; serial
                                28800      ; refresh (8 hours)
                                7200       ; retry (2 hours)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      ns.local.
$ORIGIN local.
$TTL 86400      ; 1 day
ns                      A       192.168.1.1
server          A       192.168.1.1
router                  A       192.168.1.1

/var/lib/bind/db.localnet-rev
$ORIGIN .
$TTL 86400      ; 1 day
1.168.192.in-addr.arpa  IN SOA  ns.local. router.local. (
                                2001105214 ; serial
                                28800      ; refresh (8 hours)
                                14400      ; retry (4 hours)
                                3600000    ; expire (5 weeks 6 days 16 hours)
                                86400      ; minimum (1 day)
                                )
                        NS      ns.local.
$ORIGIN 1.168.192.in-addr.arpa.
$TTL 3600       ; 1 hour
1                       PTR     router.local.

Просто? А теперь сделаем так, что бы каждый компьютер в сети можно было видеть не по IP, а по DNS-имени.
Для этого нам нужно настроить DDNS. Эта технология позволяет связать DHCP-сервер, выдающий адреса, и DNS-сервер.
Для начала создадим ключ для нашего DDNS:
dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DDNS_UPDATE

Эта команда создаст нам 2 файлика с DDNS-ключом. Нам нужно содержимое ключа:
cat Kddns_update.+157+36693.key
DDNS_UPDATE. IN KEY 0 3 157 HEyb0FU9+aOXnYFQiXfiVA==

«HEyb0FU9+aOXnYFQiXfiVA==» и есть наш ключ.
Немного отредактируем наш конфиг DHCP, добавив в него следующие опции:
ddns-updates on;
ddns-update-style interim;
key rndc-key { algorithm HMAC-MD5; secret HEyb0FU9+aOXnYFQiXfiVA==; }
zone local. { primary 192.168.1.1; key rndc-key; }
zone 1.168.192.in-addr.arpa. { primary 192.168.1.1; key rndc-key; }
subnet 192.168.1.0 netmask 255.255.255.0 {
        …
        ddns-domainname "local.";
        ddns-rev-domainname "in-addr.arpa.";
}

Так же поступим с DNS:
key "rndc-key" {
        algorithm hmac-md5;
        secret "HEyb0FU9+aOXnYFQiXfiVA==";
};

zone "local" IN {
        …
        allow-update { key rndc-key; };
};
zone "1.168.192.in-addr.arpa" IN {
        …
        allow-update { key rndc-key; };
};

Вуаля – и эта киллер-фича работает.

Будущее всё-таки здесь. Шестая версия


Так исторически сложилось ©, что мой провайдер (презрительный взгляд в сторону Ростелекома) не выдаёт IPv6 (хотя обещал).
В настоящее время на всей протяженности сети «Ростелеком» обеспечил возможность работы по протоколу IPv6, — парирует пресс-служба оператора.

Что ж, пофиксим это недоразумение. В качестве брокера я выбрал sixxs.net – у них есть туннельные серверы в России, и их туннель прост в настройке для случая с динамическим IP.
Процесс регистрации и получения настроек туннеля/подсети я опущу – там всё довольно просто. Остановлюсь на настройке.
Настройка IPv6 на самом сервере производится в 2 этапа. Во-первых, поставим пакет aiccu – это и есть туннелирующая программа. При установке у нас будет запрошен логин и пароль от sixxs, и некоторые другие данные. После запуска у нас появится новый интерфейс:
sixxs     Link encap:IPv6-in-IPv4
          inet6 addr: 2a02:578:5002:xxx::2/64 Scope:Global
          UP POINTOPOINT RUNNING NOARP  MTU:1280  Metric:1
…

Сервер теперь имеет доступ в v6-сеть – почему бы не поделиться ей с другими?
Для начала, разрешим IPv6-forwarding (не забудьте прописать в /etc/sysctl.conf):
sysctl net.ipv6.conf.all.forwarding=1

Настроек с iptables производить не надо – привет, 21 век!
Далее на сайте sixxs получаем подсеть. Её адрес будет очень похож на адрес нашего туннеля – будьте внимательны, они отличаются!
После получения адреса вида 2a02:578:5002:xxxx::/64, приступим к его настройке. Во-первых, зададим нашему серверу адрес 2a02:578:5002:xxxx::1, добавив в interfaces следующие строки:
iface br0 inet6 static
        address 2a02:578:5002:xxxx::1
        netmask 64

Во-вторых, разрешим выдачу IPv6 компьютерам в сети. Поставим пакет radvd, и настроим его следующим образом:
interface br0
{
        AdvSendAdvert on;
        prefix 2a02:578:5002:xxxx::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
                AdvRouterAddr on;
        };
        RDNSS 2a02:578:5002:xxxx::1 { };
};

Добавим IPv6 DNS в настройки нашего bind – для полного фен-шуя:
options {
        forwarders {
                …
                2001:4860:4860::8888;
                2001:4860:4860::8844;
        };
        listen-on-v6 { ::1/128; 2a02:578:5002:xxxx::/64; };
        …
};

Это всё – теперь мы имеем доступ, например, к ipv6.google.com, или, что гораздо ценнее – к ipv6.nnm-club.me ;)

Пингвин, смотрящий в окно


Я люблю, когда у меня в сети всё красиво. А это возможно только в случае полной гармонии. Например, когда все компьютеры видят друг друга. Для рабочих станций Windows справедливо вспомнить про WINS (помните, мы даже выдавали эту настройку в DHCP).
Его настройка крайне проста: устанавливаем пакет samba. Конфиг по умолчанию надо немного изменить:
workgroup = WORKGROUP
wins support = yes
dns proxy = yes
interfaces = lo br0
bind interfaces only = yes
server role = standalone server

Проверяем результаты… О, да тут всё хорошо!

Кстати, так как у нас есть samba, можно сразу настроить файлопомойку. Но это уже настолько избитая тема, что я оставляю её на плечах гугла. По сути, всё и так должно работать из коробки – разве что read only для homes выключить да smbpasswd -a user

Который час?


Настроим раздачу времени на сервере: установим ntp. С конфигами всё до нелепости просто:
server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org
…
broadcast 192.168.1.1

А вот и результат:

Мы уже вплотную приблизились к роутерам уровня microtik за $150-$200. Но это же не всё? Конечно нет.

Killer-feature #1: I2P


А почему бы не иметь доступа в эту сеть без каких-либо настроек, без прокси-серверов и так далее? Вот и я думаю, «почему». Для начала установим вменяемую версию Java:
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" >> /etc/apt/sources.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java7-installer

И установим сам роутер:
echo "deb http://deb.i2p2.no/ unstable main" >> /etc/apt/sources.list
wget "http://www.i2p2.de/_static/debian-repo.pub" -O- -q | apt-key add -
apt-get update
apt-get install i2p i2p-keyring

Теперь создадим зону, направляющую все запросы к *.i2p на наш сервер. В конфиг bind:
zone "i2p" IN {
        type master;
        file "/etc/bind/db.i2p";
};

Сама зона:
$ORIGIN i2p
$TTL 7200
i2p.    IN      SOA     ns.i2p. hostmaster.i2p. (
                        2010020701      ; serial
                        7200            ; refresh
                        1800            ; retry
                        7200            ; expire
                        7200            ; minimum
                        )
i2p.    IN      NS      ns.i2p.
ns.i2p. IN      A       192.168.1.1

*.i2p.  IN      A       192.168.1.1
*.i2p.  IN      AAAA    2a02:578:5002:xxxx::1

Отлично, но как теперь это обработать? Банально завернуть весь трафик на порт роутера у меня не получилось – прокси ругался на то, что не может так работать. Пришлось настраивать связку nginx+php5-fpm и писать небольшой скрипт. Как сделать первую часть – искать долго не надо, благо мануалов в сети полно. Вторая часть:
/etc/nginx/sites-enabled/i2p
server {
        listen [2a02:578:5002:xxxx::1]:80;
        listen 192.168.1.1:80;
        # по этому адресу можно будет получить доступ к конфигам роутера
        server_name localhost.i2p;
        location / {
                proxy_pass http://127.0.0.1:7657;
        }
}
server {
        listen [2a02:578:5002:xxxx::1]:80;
        listen 192.168.1.1:80;
        server_name *.i2p;
        location / {
                fastcgi_pass unix:/var/run/php5-fpm;
                include fastcgi_params;
                # принудительно задаём адрес скрипта
                fastcgi_param SCRIPT_FILENAME /etc/nginx/proxy.php;
                # передаём скрипту параметр с адресом HTTP proxy от i2p
                fastcgi_param PROXY_PASS 127.0.0.1:4444;
        }
}

Сам скрипт можно увидеть тут.
Это всё! Теперь мы имеем доступ в i2p даже с телефона – никаких проблем.

Killer-feature #2: делаем рабочее место рабочей сетью


Так исторически сложилось ©, что я являюсь системным администратором по удалёнке сразу в нескольких фирмах. И очень полезно иметь к ним доступ с любого компьютера в сети. Настройку OpenVPN (или любого другого) для сервера осуществляем как для любого другого клиента. Например, после этих действий у нас появился интерфейс tap0 с IP 10.0.0.7/24. Но если мы обратимся из локальной сети по адресу 10.0.0.1, то трафик уйдёт в default gateway провайдера. Исправим этот недостаток:
iptables -t nat -A POSTROUTING -d 10.0.0.0/24 -o tap0 -j MASQUERADE
iptables-save > /etc/iptables/rules.v4

Аналогичным образом поступаем для всех сетей на сервере.

Вместо заключения


У нас есть полноценный сервер, который мы можем использовать по своему усмотрению. DNS, nginx, IPv6, i2p… Можно так же установить зону для локальной разработки, например, *.dev, и тестировать свои сайты с любого устройства в локальной сети. Так как каждый компьютер в сети имеет свой постоянный IPv6-адрес, можно иметь к нему доступ из любой точки мира (Security warning! Настраивайте файрволы правильно!).
И это всё – лишь вершина айсберга. То, что будет его подводной частью – решать вам.

Буду рад услышать комментарии, предложения, здравую критику и прочее. Спасибо.
Юрий Попов @DjPhoeniX
карма
0,0
рейтинг 0,0
iOS-разработчик
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (87)

  • 0
    Большое спасибо за хороший howto. Давно хотелось сделать нечто подобное, но как представлял, сколько бы манов пришлось перерыть (не админ по профессии), — всегда оставлял на потом и довольствовался soho роутером, который качественно выполняет только основную функцию — раздача интернета IPv4, а на другие его производительности и качества и широты доступного ПО не хватает. Признайтесь: вы реально это в один день сделали или это плод многодневной (многомесячной?) работы по улучшению домашнего сервера? :)

    По теме: могли бы пролить больше света на «Security warning! Настраивайте файрволы правильно!»? Как? Можно ли с роутера хотя бы базово защититься, например, разрешить только соединения, инициированные компьютером за ним, но не входящие? Как я понимаю, для этого нужен conntrack? А он будет работать без NAT? Что еще следует сделать с самого роутера для защиты IPv6?
    • +1
      Конечно же, это не однодневная работа. Всё это наращивалось постепенно — сначала был только маршрутизатор, потом навесил IPv6, запилил RDNS/DDNS, ну и так далее по мере необходимости. Скажу больше — это далеко не всё, что крутится на сервере, но вся остальная мишура (типа той же .dev-зоны или локального багтрекера) либо не достойны внимания вообще, либо достойны отдельной статьи. Возможно, как-нибудь продолжу, если увижу в этом какой-то интересно-уникальный материал.

      По поводу файрволов — тут мнения могут разделяться. Я ограничился тем, что оставил всё по умолчанию для установки «искаропки» (для винды). Для пользователей «зверей» и прочих недосборок, где всё выключено, могу сказать только то, что надо:
      1. ВКЛЮЧИТЬ брэндмауэр!!!
      2. Для всего, что находится ВНЕ локальной сети — блокировать ЛЮБОЙ входящий трафик (правило по умолчанию).
      3. Для локальных сетей — добавить в исключения службы типа «рабочая станция» (исключение по умолчанию).

      Для линуксов, собственно, правила те же: локальную сеть под «лояльный» фильтр, остальное — резать нахрен. «Прикинуться ветошью и не отсвечивать (не пинговаться)».
  • +14
    Мой ноут слабее, чем роутер в статье. :(
    P.S. Теги всё-таки читают.
    • 0
      У меня тоже. Уже 7-й год пошел. И мнеять не стану пока окончательно не сдохнет 8)
  • +5
    практически 1 в 1 мой домашний комп по харатеристикам (
  • 0
    Спасибо! Класс! Давно хотел свой домашний серер проапдейтить. Терь буду знать как :) Еще раз спасибо за ваш труд!
  • +1
    А могли бы использовать dnsmasq вместо отдельного dnsd, dhcpd и radvd. Но, как я понимаю, вы его не использовали только из-за ddns?
    • 0
      Уже отвечал в личку, но таки продублирую для Сообщества:
      Это всё накатывалось постепенно — делал с тем, что лучше знал :)

      Задача изначально была «сделать, чтоб работало» — поначалу всё это состояло вообще из велосипедов с костылями вместо колёс, но, таки, параллельно с написанием статьи привёл всё в порядок :)
  • +2
    Спасибо, что проделали эту большую работу по написанию статьи.
    Но все же, чем ваша инструкция отличается от большинства других по этой теме?
    И маленькое имхо: сейчас очень популярна развита виртуализация, и вы имеете достаточно мощный рабочий компьютер. Попробуйте использовать только его и в качестве роутера, и как рабочую станцию. Одним шумящим ящиком меньше.
    • 0
      Маленькое дополнение: пишу с утюга виртуалки под XenServer. Могу рекомендовать как вполне воспроизводимое решение, если заинтересуетесь ;)
    • +1
      Моя инструкция… Ну, в защиту того, что я всё таки её опубликовал (были мысли, подобные вашим) могу сказать, что это единственный ман, в котором описан реальный случай наладки тонкой экосистемы, где все части тесно сплетаются в единый механизм, притом не запущеный один раз ради написания статьи, а действительно безотказно работающий 24/7 в течение Н-ного времени.
      По поводу виртуализации… Моя домашняя машина (как я, опять же, писал немного выше) — это очень прожорливая хреновина, потому работающая далеко не круглосуточно. А всякие ноутбуки, телефоны, компьютеры родителей, и прочая техника — хотят видеть сеть даже когда меня нет в радиусе двух метров от моего компа. Ну и, как я написал и в конце статьи, и в одном из предыдущих комментариев, роутер — не единственная функция этого сервера :)
  • +6
    Ммм, c2d e8400?
    Жрет ватт триста минимум)
    За электричество платят родители?)
  • +1
    Возможно я не столь глубоко разбираюсь в теме, но почему бы это все не сделать через www.pfsense.org/?
    • 0
      Потому что его функционала мне не хватает, очевидно же :)
  • +7
    > Покопавшись в залежах железа, на свет были извлечены:

    Знаю, что надо бы в личку, но столь частая оговорка… Пожалуйста, никогда не пишите такого рода фразы, очень коробит читать такие «обороты». Сравните: «Покопавшись в залежах железа, я извлек на свет:»
  • +7
    По теме статьи: а зачем оно вам, на таким-то железе? Вы используете его на… хм… 0.0.1%? Не дороговато (по всем показателям, в т.ч. и по стоимости владения)? Сетевые дела на том же Микротике были бы решены на куда меньших ваттах и с куда более полезным в жизни опытом: не так часто подобное в продакшене переносят на сервера общего назначения. Про надежность Вы также ни слова не сказали, кстати — а бытовые компоненты — они и есть бытовые…

    Не хочу обидеть, но, и правда, попробуйте подойти с критической точки зрения. Все имеет свою цену и свою пользу: польза от того, что ненужное железо заработало — это благо. Вред от расхода каждый час по 150-200 ватт — это уже зло. Вред от того, что, не дай Бог, где-то что-то Вы забыли, вас ломанули, и ваш сервер (с его-то мощью) занялся рассылкой спама — может, и небольшая вероятность, но тоже имеется.

    Попробуйте поднять на машине Proxmox (или что-то подобное), и нарежьте в нем виртуальных машин под все ваши задачи. Опыт прокачаете, примените принцип «разделяй и властвуй», опять же, сможете сеть настроить как захотите. Как роутер возьмите старую добрую Vyatta, все поближе к cli-управлению, «почти как cisco» — такой опыт лишним не будет. Разве что винт у Вас небольшой, но Вы вполне можете зато приделать к нему в flashcache SSD-ку небольшого размера, и система будет куда повеселее работать.
    • 0
      Использую я его, скажем, процентов на 40 по памяти и 10-15 (в пиковые моменты — на 35%) по процессору. Как я писал выше (комменты не читай @ сразу отвечай), роутер — не единственная функция этого сервера.

      Микротик отпал из-за цены — этот сервер я таки собрал из того, что было, получив всё, что есть сейчас, абсолютно бесплатно. Ну, и IPv6-туннель с i2p на нём запустить будет как минимум проблематично. Опыт с мекротиками у меня есть и без этого :)

      Про надёжность скажет uptime: 3 недели без перезагрузок, разве что рестарты сервисо по причине обновления конфигов. К тому же, всё состояние оборудования (датчики температуры, кулеров, данные SMART) мониторит zabbix.

      Расхода впустую, повторюсь, нет. Честно, у меня холодильник жрёт больше, чем этот сервер. 100 рублей переплаты в месяц для меня не проблема — я на мобильную связь за неделю больше плачу, про транспорт даже вспоминать не буду. За эти деньги я имею, повторюсь, полноценный сервер, с функционалом, который не даст мне ни одна циска за сумму в 4-5 раз дороже всего железа.

      Безопасность продумана — 0.0.0.0 слушают только те, кто должен, и те, кто не могут быть настроены иначе — последних режет iptables.

      Насчёт виртуализации уже отвечал.
      • 0
        Ну, я, может, и немного категорично… :) Но мощновато Вы для задача роутинга… А что виртуализация и прочее — так в том и соль, что сетевые дела и дела серверные лучше разносить на разные машины.

        Уже не говоря, что забекапить (средствами системы виртуализации) виртуальную машину куда как проще, чем сохранять все-все конфиги того, что у Вас вертится на одной. И Zabbix не спасет, случись умереть винту — я про это в смысле надежности. Я видел сервера с uptimem-ом по 3-4 года, которые из-за глупости при первоначальной конфигурации падали из-за того же диска, из-за кабеля, из-за термопасты… Бекапы решают! ))
        • 0
          Бэкапы — наше всё, факт :)
    • 0
      Спарведливости ради — криво настроить микротик тоже очень легко. Я совсем не сетевик, так что пробыл DNS-усилителем пару суток прежде чем докопался до того, что происходит.
      • 0
        Ну, вот тут и выплывает разница «домашних роутеров» и более-менее полноценного сетевого железа.

        В принципе, с чем не возись, отгрести себе развлечений можно, только степень контроля разная будет: с Микротиком Вы могли и трафик поизучать, и правила пописать, и даже скрипты порисовать, а на каком-нибудь soho-сегмента роутере Вы бы годами с дырой жили, и даже варианта не было у Вас ее заткнуть. Правда, и не знали бы о ней, какая проблема-то? :)

        Но, настраивая себе все то же на базе какой-нибудь Убунты (ой, ну это попса, согласен, ну пусть у Вас была бы специально собранная по рекомендациям из Интернета Gentoo «special as firewall edition») — Вы думаете, уже этот факт избавил бы Вас от необходимости критически осмотреть инсталяцию и спросить у себя же «а как бы я ломал такое, если бы понадобилось»?

        Поэтому… если Вы, как «не сетевик», ставите железку «просто чтобы было», то, наверное, выбор за бекдорными soho-решениями. нервы будут целее. Если же хочется еще и «управлять автобусом, в которой едете», то вариантов нет, надо стараться разобраться. Микротик и иже с ним в этом не очень виноваты :)
        • 0
          Ну, я гнался за мощью, и в принципе я счастлив. Все домашние роутеры кажутся игрушечными после этого чудовища, решившего все мои проблемы с dlna, стабильностью и скоростью соединения. А главное, софта. Был положен конец танцами с бубном вокруг роутера в некоторых сценариях, когда недешевому между прочим домашнему асусу только ребут помогал, после которого могла еще и амнезия случиться. И никакие дд-врт и прочие чудеса ему лучше не делали.

          А тут — полный контроль. Да, за свои ошибки приходится отвечать самому (ох как весело мне было случайно промазать и выключить bridge), ну да ничего. Глупостей наделал — ну хоть научился чему-то. Без встроенных в роутер инструментов кстати я бы и правда не докопался до истины никогда.
    • 0
      Не первый раз слышу упоминание о микроиках. А что за модели такие? По сайту прошелся обнаружил либо серьезные железки либо голые платы.
      • 0
        Как раз «серьёзные железки» и имеются в виду. Из серии RouterBOARD. Как вспомню первый контакт с 2011UAS-2HnD-IN — до сих пор передёргивает.

        Для дома вполне должно хватать моделек попроще — например 951Ui-2HnD. Хоть в описании и написано «soho», но RouterOS Level 4 — это всё таки более чем прилично.

        Но, опять же, это не полноценный сервер, а роутер. Хоть и класса выше среднего — не «дэлинки» с «зухелями».
        • 0
          А чем вам этот зверь (я про 2011UAS-2HnD-IN) не пришелся?
          • 0
            Не-не-не, вы меня не так поняли :) Просто это был вообще мой первый контакт с микротиками и RouterOS. Я как увидел этот центр управления полётами… Против самих девайсов не имею совершенно ничего — напротив, рекомендую их там, где их появление уместно :)
            • +1
              Потому что в soho у этой модели самое волшебное действие наступает, когда кто-то из незнакомых видит тач-скрин с графиками.

              После следует вопрос о цене, и, узнав, что такой монстр (а параметры у него вполне себе) стоит менее 5 т.р., очень многие сильно задумываются… Причем, как для бизнес-задач, при такой цене проще второй взять в ЗИП.

              Еще один способ удивить — это показать вполне себе работающий BGP на устройстве за 1900 руб. Резать, конечно, маршруты приходится, не без этого, но не всем с Full View реально нужно жить, если ты не оператор.

              P.S. А я завис на слове «передергивает». Подумал, ничего себе у людей реакция на железки :))
        • 0
          О, вот эта штука у меня и стоит.

          РоутерОС такое же первое впечатление оставила, а потом оказалось что там все довольно логично по полочкам разложено. Пожалуй единственная моя претензия — невозможность надеть защитные колпачки на кнопки выстрела себе в ногу. Потому что промазать и отрубить сук на котором сидишь в списке интерфейсов — как нефиг делать. Хорошо что есть резервные телнеты через всякие компорты или подключение по мак-адресу из винбокса.
          • 0
            Бэкапы конфига наше все)) я так тоже, пока учился с ним работать, превратил его в работающую и замкнутую коробку, которая никак снаружи не управляется))
            • +1
              Safe Mode возвращает все как было в момент его включения в случае разрыва связи.
              Извините за некропостинг, вдруг кому пригодится.
              • 0
                спасибо)
      • +1
        Великолепные железки для продвинутого домашнего и малого бизнес-уровня. примерно за 100$ выполучите полный контроль над своей сетью. Вплоть до извратов типа балансировки нагрузки между провайдерами. Минусы — с непривычки панель управления выглядит как пульт управления кораблем «Энтерпрайз» после «домашних» моделей. И что характерно, на убогие ненастраиваемые домашние обратно не тянет. RouterOS обновляется регулярно для всех моделей. Конфиги переносятся с одной железки на другую без проблем. Возможно питание через витую пару. Крайне надежны по сравнению с «домашним» сегментом. Очень производительны. Тянут кучу VPN-каналов, торренты и еще остается. Разумеется, я говорю о домашнем и некрупном бизнес-использовании.
    • 0
      Мифы это, что он жрет так много.
      Измерял аналогичную машинку (nforce 610i + e7200 + 2Gb ram + HDD 2.5") и сам поразился потреблением энергии.

      28вт в простое, что даже меньше чем аналогичная машина на D945GCLF2 (она кушала 30вт)
      Ну при нагрузке естествеено прыгало до ~70, в отличии от атома (который только до 35).
  • 0
    Была к меня как-то пара роутеров на древнющем железе под управлением Win Server 2003 (ага)… Поддерживать их стало совсем грустно, а денег на обновление железа и совта никто бы не дал (а там две машинки, одна — Pentium 2, другая — Pentium 3).
    Вот именно таким способом я всё и сделал, за исключением, конечно, i2p (спасибо за рецепт, сделаю на домашнем роутере), и ipv6. И ещё туннель между двумя сетками. Правда пришлось читать маны самому :-).
    Практика показала, что машинок уровня Pentium 2-3 для этих целей более чем достаточно.

  • 0
    «тэги всё-таки читают?»

    Да.
  • 0
    Я имею желание купить MicroServer(или полупрофессиональный NAS), но не имею возможности. Я имею возможность собрать сервер из старого железа, но не имею такого желания.
    Так давайте же выпьем за то, чтобы наши желания совпадали с нашими возможностями!

    Я к тому, что это все конечно круто, но такая «машина» избыточна для домашних задач(по крайней мере для меня), да и не очень элегантна/компактна в свете таких устройств как NAS и платформ как Raspberry Pi / NUC / etc.
    За статью спасибо!
    • 0
      > такая «машина» избыточна для домашних задач
      Чем богаты, тем и роутим :)
  • 0
    Хм, прямо сейчас я сижу за компом с процессором Core2Duo E7200 )
    Когда-то у меня был подобный роутер/файлсервер на базе Athlon XP 2500, но я счел его слишком прожорливым и заменил на обычный D-Link. А файлохранилище собрал на основе Mini-ITX платформы на Atom'е. В результате, сумма в счетах за электроэнергию уменьшилась на 150 рублей в месяц.
    • 0
      А ещё, неплохие роутеры получаются из старых нетбуков на Атоме, при условии наличия слота ExpressCard для гигабитной сетевухи :-). Экономные по питанию, и, если батарея жива, ещё и с резервным питанием :-)

      В качестве бонуса, — в случае неправильной настройки фаервола и потери связи с роутером — есть консоль :-)
      • +1
        В качестве неприятного бонуса они быстро перегреваются и, в последствии, дохнут. Валяется у меня один такой, со сдохшей материнкой, после того как недельку поработал без выключения вэб-сервером. В сервисе сказали, что купить новый будет дешевле — не вижу повода им не верить.
        • 0
          Может быть, вам просто не повезло (
          • 0
            Вот прям про себя ветку читаю.
            Athlon XP был роутером
            e7200 тоже был (и сейчас трудится как роутер), и как писал выше, в простое кушает не больше атома.
            Нетбук (правда еще древний — на целероне) сдох за сутки
  • +3
    Оффтоп конечно, но я голосую за серверные решения в доме!
    1 маломощный/маложрущий сервер для работы инфраструктуры
    1 мощный сервер для стриминга игр, виртуализации, работы тяжелых прикладных приложений

    • 0
      Если вы, произнося «серверные решения», имеете в виду железо (типа Supermicro-вских платформ с ксеонами и ECC-шной памятью) — то, сожалею, я не разделяю вашего мнения. Это энтерпрайз-класс, для больших и средних компаний. Для дома и мелких офисов это перебор — хватит и обычного «бытового» железа, максимум — поддержка RAID.

      Если же вы про софт — то тут да, согласен. Роутеры — оно, конечно, хорошо, но там, где живёт админ или хотя бы гик — без сервера не обойдётся ни под каким видом :)

      Вопрос только — для чего «мощный сервер»… Я как-то обхожусь без всего того, что вы к нему приписали :)
  • 0
    А туннель IPsec с BINAT по идее тоже несложно поднять на этом, да? :)
    • 0
      Опыта в таких задачах у меня не было, но, думаю, настройка его будет не сложнее, чем обычно. Потом просто поправить маршрутизацию.
      • 0
        Для голого ipsec в линуксе маршрутизацию править не надо, потому что xfrm-политики и так задают, что куда и через что посылать. И это, кстати, довольно неудобно порой бывает.
  • 0
    Статья годная, пригодится, спору нет.
    Так нико и не спросил, а как вы наблюдаете загруженность канала (если наблюдаете), проверяете активные соединения, блокируете неугодные IP правительства, всё только через консоль или всё же есть какая-то мордочка, более-менее похожая на микротик, как вариант.
  • 0
    а сколько потребляет Ваш роутер? Давно хочу поставить себе машинку на базе GA-C1037UN или чем-то похожем именно из-за низкого потребления. имеет ли смысл заморачиваться со снижением потребляемой мощности?
    • 0
      Именно как роутер (поначалу) он потреблял… сложно сказать, сколько. Процессор в idle, жёсткий диск в spin-off, работают только 3 сетевухи — думаю, в таком состоянии и до 50-80 ватт может упасть, если не ниже.
      Сейчас же он работает уже гораздо активнее, и является сервером, а не роутером. Поэтому потребляет прилично — опять же затрудняюсь сказать, сколько. Но по карману не бьёт.
  • 0
    Мда, домашний сервер (с мини серверной в шкафу) это приятно, солидно. Домашние благоговейно в нее (серверную) смотрят, а неайтишные гости восторгаются. Долго жил с 486 (IBM PC AT, ага) рутером. С него снимается вентилятор за ненадобностью, ставится любой минилинукс. После загрузки к диску не обращается. Тишина.
  • +2
    Черпнул отсюда подключение i2p. :)
  • 0
    > За основу я взял дистрибутив Debian Testing

    По какой причине взят именно testing, а не stable+backports?
    • 0
      Просто к testing у меня более приятные отношения. stable+backports — это, всё таки, две ветки, что рождает некоторые конфликты. Не раз приходилось ломать себе мозг, видя, как два пакета зависят от разных версий третьего. В testing всё-таки попроще с этим.
  • 0
    У меня когда то заворот на сквид шел так:
    ##iptables -t nat -A PREROUTING -i eth0 -d 0.0.0.0/0 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.105.10:3128
    ##iptables  -A PREROUTING -d ! 192.168.105.0/255.255.255.0 -i eth0 -p tcp -m multiport --dports 80,8080 -j DNAT --to-destination 192.168.105.10:3128
    ##iptables -t nat -A PREROUTING -s 192.168.2.0/24  -i eth0  -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128
    

    Прозрачно заворачивался весь трафик, а потом в конфиге (увы давно потерял) проходил через adzapper и расбрасывался на прямую, TOR/I2P в зависимости от домена. Но данный конфиг не слишком безопасен.
    а nginx используется сейчас для одной цели, зеркало убунты на свой комп и бук раздавать.
    • 0
      Такой подход имеет подводные камни. Так как трафик 80 порта заворачивается на прокси, то всё, что идёт по 80 порту, но не является HTTP, будет ломаться и не работать. В частности, в одной из фирм, куда я пришёл, было сделано такое — у них не работали WebMoney Keeper, например, и ещё какие-то программы. Выключил переадресацию всего трафика в прокси — всё завелось.
      • 0
        согласен, есть такое.
        но сам не натыкался или конфиг сквида был удачно скопирован и проблема никак не проявлялась.
  • 0
    После недолгих раскопок в залежах железа, на свет были извлечены:
    • Процессор Intel Core 2 Duo E8400 @ 3GHz
    • При нём же – материнка Asus P5Q
    • 2 планки DDR2 по 2Gb
    • PCI-e сетевая карта TP-Link TG-3468
    • Неопознанная сетевая карта WiFi (b/g/n) на базе Ralink RT3060
    • Жёсткий диск Seagate 250Gb
    Кстати как насчёт пожаробезопасности? Я как-то привык опасаться «больших» системных блоков в этом плане.
    При этом вполне спокойно отношусь к «маленьким» 24/7 работающим устройствам, вроде роутеров и медиа-плееров.

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

    Другой вопрос: можно ли сколхозить какую-нибудь домашнюю автоматическую противопожарную защиту для работающих 24/7 устройств?
    • 0
      можно, она будет работать 24/7 от сети. при самовозгорании кто её будет тушить?
      • 0
        Как насчёт пассивной защиты в духе «чёрный ящик»?
        • 0
          а привод системы пожаротушения тросик из ящика к огнетушителю бытовому?
          тогда да, правда провод питания в броню не уберешь полностью.
  • 0
    Надо будет заняться приведением в божеский вид домашнего двухголового третьепня, под полуосью. А то постоянные перезагрузки глючного роутера задолбали. Вообщем-то всё стоит, только файрвол-роутинг настроить, но некоторые штуки из вашей статьи применимы и в моём случае, спасибо!
  • 0
    Напомнили по духу ЗверьCD
    100-в-1
    Всегда восхищали такие комбайны

    Респект, конечно.
    • 0
      Вот, кстати, посмотрите: прошло всего несколько лет, а все ZVER-комбайны ненавидимы большинством айтишников. Ковыряя очередной новый домашний сервер на виртуалке я постоянно боюсь всё того же — однажды этот комбайн просто не будет нужен и я с отвращением выброшу его, перейдя на обычный роутер, умеющий вебмордочку домашнего сайтика и торрент из коробки.
  • 0
    Заворачивать *.i2p в I2P — очень, очень плохая идея. Вас крайне просто развиртуализировать — поставить на i2p-сайт картинку или скрипт из обычного интернета — вуаля, ваш ip (а, если повезёт, и куки) как на ладони.
    В I2P нужно ходить только отдельным браузером, в котором в принципе должна отсутствовать возможность выхода в обычный интернет.
    • 0
      Если цель похода в i2p — именно анонимный доступ к какой-то «не слишком белой» информации — то, конечно же, всё верно. Если же цель — просто получить доступ к ресурсам, которых нет в «общем» интернете — то тут всё нормально.
      • 0
        Что это за белые ресурсы такие, которые есть в i2p, но нет в обычном интернете?
        • 0
          Видимо, трекеры с варезом и не очень. Особо не наказывается для конечных пользователей, но трекеры прикрывают понемногу…
        • 0
          nnm-club.i2p/ (предпочитаю оттуда заходить, хоть и ipv6 доступен. основное зеркало доступно через раз...)
          freezone.i2p/
          progromore.i2p/
          flibusta.i2p/
          lib.i2p/
          Ну и много-много других.
          Не сказал бы, что они кристально белые, но это явно не Silk Road :)
      • 0
        1.Беда в том что повсеместные посты весёлых картинок в i2p это уже даже не смешно, заглянет в кэш вашего браузера какой-нибудь таможенник и «здравствуй жопа новый год!»
        2.Береженого Господь бережет — не береженого конвой стережет. Кто-бы стал страдать деанонимизацией пользователей i2p из праздного интереса… И из «неуловимого Джо» вы автоматом превращаетесь в объект наблюдения, а оно вам надо, даже если вы абсолютно законопослушный крендель.
        3.Ну там выше, народ писал про виртуализацию не просто так, вы можете себе её позволить и это круто, эффективная защита начинается с осознания факта невозможности предвидения всех возможных векторов атак. Виртуализация тут не разу не панацея, но относительно лёгкий способ добавить геморроя «исследователям» ну и возможность в наглую пользоваться всяким мутным софтом, опять же полезна для получения доступа к не публичным хранилищам всякого…
  • 0
    Роутер, гудящий всеми вентиляторами как полноценный ПК- страшный сон какой-то…
    • 0
      Всеми — это какими? Блок питания мне попался с тихоходным Карлсоном — разве что шорох от него исходит. На процессоре кулер включается раз в 5 минут на секунд 20. В моменты пиковых нагрузок, конечно, гудит на полных оборотах, но ночью я ему работы обычно не оставляю :)
  • 0
    Есть еще вариант как сделать домашний роутер + сервер -> использовать гипервизор и виртуализацию.
    В новейших гипервизорах устройства PCI-express можно целиков передавать в виртуальные машины, т.е. виртуальная машина может иметь полный контроль над сетевыми интерфейсами.
    Инсталим гипервизор, под него виртуалку которой отдаем все сетевые карты, там уже настраиваем роутер как описано.
    Далее чтобы железо не простаивало отдельными виртуалками можно добавлять сервера, так безопасней чем например на роутер ставить сервера.
    У меня на домашнем компе стоят несколько Linux, роутер (обслуживает доманшюю LAN, отдельный LAN для серверов, два внешних IP через которые роутится трафик в зависимости от внутреннего LAN), плюс игровая Windows 8 (c прокинутой графикой). Под Xen все.
    Бонус такого подхода в том что упрощается бекап и восстановление, можно делать откаты и мирроры всех виртуалок, плюс железо занимается не только одной задачей (домашний комп обычно достаточно мощный).

    • 0
      Вы уже четвёртый, если не пятый, кто советует мне виртуализовать всё и вся… :)
      • 0
        … может, оно и не зря? :)))
        • 0
          Первое правило админа: «работает — не трожь!»
          Тем более, что работает хорошо.
          • 0
            … и второе «не нужно проверять, работает ли: если гудит, значит все в порядке!»

            А «зачем» уже писали — бекапы, управляемость, тиражируемость машин (правда, у Вас диск не велик, не растиражируешься).

            Мне лично спокойнее по машине на сервис выделять, накладные расходы даже под KVM/Xen невелики, а под OpenVZ вообще можно не вспоминать.
            • 0
              Ну не люблю я вспоминать, на каком айпишнике у меня какой сервис крутится. Есть .1.1 — это сервер. Всё.
              Бэкапы у меня и так есть — все конфиги запакованы и слиты в дропбокс и на внешний жёсткий диск, а «файлопомойка» на нём у меня только ради доступа к /home/<user>/web/<site>.dev — там никогда ничего критичного не валяется.
              • 0
                ....1.х — это Вы зря :)

                Не берите нулевую и первую подсети, почти наверняка однажды случайно получится воткнуть в сеть что-то новое, и это новое будет по дефолту иметь какой-нибудь адрес из этих подсетей, а то и раздаст адреса в ней, и словите сложноотлавливаемые глюки.
                • 0
                  У меня привычка — ничего нового в «дефолтной» конфигурации в сеть не втыкать. Сначала перенести «куда надо» с ноута, потом подключать.
  • 0
    Кстати, всё перечисленное в статье, отлично поднимается на OpenWRT, установленном на более-менее мощной железке вроде TP-Link 3600.

    Даже если эту железку покупать, а сервер уже есть, оно окупится на экономии электроэнергии за год-полтора
    • 0
      I2P тоже на этой железке поднимать будете?
      Да и сервер при таком раскладе всё равно (лично мне) придётся оставить именно в качестве сервера.
      • 0
        I2P тоже на этой железке поднимать будете?

        Почему бы и нет? 128 МБ памяти и 500 МГц процессор должны справиться.
        • 0
          Не справятся. С нормальным каналом изрядно жрет. на моем Core i5 заметно даже. Я отдельную виртуальную машину поднимал.
  • 0
    Значит я не одинок, когда устал от перезагрузок D-Link`а и поднял почти такой же по функционалу, как у автора, роутер на простаивавшем Atom N2800. Правда, у меня он вообще не шумит — вентиляторы для этого проца не требуются — температура на нем больше 56 не поднимается, а вместо жесткого диска поставил mSATA SSD. И электричества уходит немного — 750 Вт ИБП показывает около 1-3% нагрузки.

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