The Perfect SOHO router – Част 4

След като вече сме инсталирали нашият рутер и сме пуснали някои
услуги е време да конфигурираме самият процес на рутиране. Това се
постига чрез стандартни инструменти като route, iptables, arp, iproute2.

В тази част ще покажем следните варианти:

  • Прост елементарен рутер – това е най елементарният но за сметка на това не предлага кой знае какви възможности
  • Рутер който изпълнява NAT/masquerade и firewall функции – това е може би най-разпространеният вариант.
  • Рутер който изпълнява баланс на трафика от два или повече
    доставчика – това вече е по-напреднала тема но въпреки всичко има полза
    от нея.

Примерите и конфигурациите ще са доста опростени като ще покажем
само скелета на системата, тъй като всеки има различни изисквания. В
края на статията ще дам малко връзки с допълнителна информация за
четене и помощ.

Прост рутер

При тази ситуация нашият рутер просто развърта тряфика. В общият случай
не се прави маскиране или филтрация на трафикатъй като като цяло е
решено че не е необходимо. Това решение обикновенно се ползва при
големи мрежи просто за да се сегментира мрежата. Постига се особенно
елеменарно тъй като изисква включване на една единствена опци в кернела
и разрешаването и за изпълнение. Опцията е IP FORWARDING. Може да бъде
разрешена по два различни начина:

Посредством sysctl системата (може да не е налична):

 sysctl -w net.ipv4.ip_forward=1Тази настройка разрешава препращане на пакети между интерфейсите на
рутерът ни и така реално го стартираме. Необходимо е тази настройка да
бъде сложена на такова място че при стартирането на нашата машина тя да
бъде изпълнена автоматично. Добро място за тази настройка е /etc/rc.local или отделен файл който се изпълнява съвсем в края на процеса на стартиране.

Както забелязвате това е един много опростен рутер който не предлага
почти никакви ползи. За да работи правилно всяка от клиентските машини
трябва да има собствен адрес, който е разпознаваем в обхвата на
мрежата. Този рутер не изпълнява филтрация и не предпазва по никакъв
начин машините зад него. Като цяло това решение е удачно за големи
мрежи които искат да сегментират адресното си пространство и които имат
сериозен рутер и firewall на входа им.

Рутер който изпълнява NAT/masquerade и firewall функции

Това е може би най-често използваното решение. Предимствата му са че
зад един адрес могат да се скрият (маскират) доста олям брой машини
(теоретично почти неограничен стига да имаме процесорна мощ).

Конфигурацията за този пример ще изградим при следните предпоставки:

  • Външен интерфейс: eth0 със съответно назначения му адрес и маска
  • Вътрешен интерфейс: eth1 със съответно назначения му адрес и маска
  • Проста защита от DoS, DDoS атаки и сканиране
  • Лимит на специфични ICMP заявки
  • Достъп до http и ssh от външната страна на рутера ни
  • Достъп до http, ssh, dns, dhcp от вътрешната страна
  • SNAT за всички клиенти на рутера ни (дори при динамичен адрес)
  • Препращане на 10 порта за всеки клиент – за удобство на потребителите ни
  • Изрична филтрация на част от боклука във външната/вътрешната ни мрежа

Темата за ограничения по TTL изрично ще я пропусна. Реализира се просто и има достатъчно документация по въпроса.

Като цяло това е един относително добър базов firewall. В него има няколко интересни момента а именно:

  • Начинът по който вземаме адресите на мрежовите карти – както сте
    забелязали единствените променливи които не се извличат това са имената
    на интерфейсите. По този начин самият firewall става по гъвкав и
    приложим за почти всякакъв вид връзки.
  • Начина по който реализираме маскирането. Правим го със SNAT тъй
    като той е по лек отколкото MASQUERADE. За хората които ще кажат че при
    динамични връзки (pppoe, ip идващо от dhcp) това не е подходящо, да по
    принцип сте прави. Обаче ако използваме възможностите на DHCP
    клиента/pppoe клиента това може да бъде избегнато. В момента в който
    нашият адрес бъде подменен можем принудително да изпълним отново нашият
    firewall и той отново да си вземе правилния адрес и да се оправи както
    си му е редът.
  • Начинът по който препращаме портове на машините зад нас –
    използвана е конструкция която е валидна само в bash с която да се
    генерират две числа които използваме за начало и край на обхвата от
    портове. След това експлицитно ги отваряме във веригата FORWARD макар
    че това не е строго необходимо и в последствие ги препращаме чрез DNAT.
  • Обхватът от портове 33434:33524 – тези портове трябва да са отворени за да работи traceroute

Рутер който изпълнява баланс на трафика от два или повече доставчика

Тук ще дадем само частта която реално изпълнява балансирането на
трафика. Вземаме пример само с два доставчика, но разширяването на
примера не е проблем. Задачата е малко по обемиста тъй като за удобство
ще използваме iproute. Самият пакет има доста криптичен синтаксис но
след като му свикнете едва ли ще ви се разделя с него.

За да можем да балансираме трафик ни трябват следните инструменти:

  • iproute2
  • поддръжка в кернела за multipath routing
  • Компилиран в кернела поне една дисциплина за multipath routing – аз лично препоръчвам wrr

За да можем да използваме имена в конфигурацията е необходимо да ги добавим във файла /etc/iproute2/rt_tables. Индексите им са между 2 и 252. Ако ще балансирате повече от 200 доставчика … не четете на правилното място.

 

 

The Perfect SOHO router – Част 3

След като вече сме инсталирали нашият рутер е време да започнем
неговата конфигурация. Започваме от DNS и DHCP услугите поради следните
причини:

  • Добро упражнение е
  • Така ще осигурим първоначална сигурност и лесна конфигуруемост на нашата мрежа
  • Имаме възможност да тестваме относително спокойно

Защо ни трябва DNS

DNS системата се използва за откриване на съответствията между име и ip
адрес. Самата система представлява огромна разпределена база от данни в
която са организирани всички съществуващи имена по света. Полезно е да
имаме собствен DNS поради следните причини:

  • Възможност да си създадем собствен фалшив домейн
  • Ускорено отговаряне на запитванията
  • Кеширане на отговорите
  • Частична независимост от нашият доставчик

Защо ни трябва DHCP

DHCP е протокол за динамично и автоматизирано конфигуриране на
мрежовата част от нашата операционна система. С негова помощ ние можем
да зададем огромно множество от параметри които да настроят работата на
клиентските машини. Също така този протокол ни спестява необходимостта
да обиколим всички клиентски машини при всяка промяна на мрежовите
настройки. Посредством този протокол можем да зададем следните
настройки (непълен списък):

  • IP адрес на машината
  • DNS сървъри
  • Сървъри за стартиране по мрежа
  • Подразбиращ се път за изход към интернет
  • Сървър за точно време
  • TTL
  • Максимална големина на пакета
  • други

Възможните варианти

Както почти всичко в света на GNU/Linux и за тази задача има няколко
варианта. Двата най често използвани варианта за малка мрежа са:
отделен DNS и DHCP софтуерен сървър; единствен софтуерен сървър който
комбинира DNS и DHCP. За момента най популярните решения за малки мрежи
(до 30 – 50 машини) са:

  • bind9 + dhcpd
  • dnsmasq

Тук ще опишем конфигурирането и на трите продукта. Моето лично предпочитание е комбинацията между bind9 и dhcpd

Конфигуриране на dhcpd

За конфигурирането изхождаме от следните предпоставки:

  • Вътрешната ни мрежа е 10.42.3.0/24
  • Намира се на интерфейс eth1
  • Нашият DNS се намира на адрес 10.42.3.1
  • Допълнително сервираме и един DNS на нашият доставчик намиращ се на адрес 1.2.3.4
  • Нашият gateway се намира на адрес 10.42.3.1
  • Всички наши машини се намират във несъществуващ домейн internal.tld
  • Ще подадем малко допълнителни настройки за унифициране на вътрешната ни мрежа

След всичко казано ето примерна конфигурация на нашият dhcp сървър

/etc/dhcpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#
# Sample configuration file for ISC dhcpd for Debian
#
# $Id: dhcpd.conf,v 1.4.2.2 2002/07/10 03:50:33 peloy Exp $
#
# option definitions common to all supported networks...
# без това нашият сървър няма да работи правилно
authoritative;
# несъществуващият домейн към който ще принадлежим
option domain-name "internal.tld";
# нашият dns сървър. В случая ползваме само него за яснота.
# А също и за разширяемост в последствие
option domain-name-servers 10.42.3.1;
# мрежовата маска. Няма нужда да оставяме клиентите да отгатват
option subnet-mask 255.255.255.0;
# за колко време им отпускаме адрес
default-lease-time 14400;
# колко време максимално може да притежават адреса ако случайно
# dhcp сървърът ни спре да работи
max-lease-time 86400;
# нашата мрежа от която ще раздаваме адреси
subnet 10.42.3.0 netmask 255.255.255.0 {
  # конкретните адреси които ще раздаваме
  range 10.42.3.2 10.99.3.254;
  # отново нашите DNS сървъри
  option domain-name-servers 10.99.3.1, 1.2.3.4;
  # и домейна
  option domain-name "internal.tld";
  # рутерът (gateway)
  option routers 10.42.3.1;
  # маската
  option subnet-mask 255.255.255.0;
  # къде да се отправят масови запитвания
  option broadcast-address 10.42.3.255;
  # настройка на TTL (windows машините не се подчиняват)
  option default-ip-ttl 64;
  option default-tcp-ttl 64;
  # отместване спрямо GMT
  option time-offset 7200;
  # настройка на типа на нода в MS мрежа
  option netbios-node-type 8;
}
1

Като цяло това е една добра начална конфигурация. Както ще забележите има известно припокриване на дефинициите за DNS, мрежова маска и домейн. Това е с цел в последствие ако искаме да сегментираме мрежата ни. Ако имаме такова желание ще е напълно достатъчно да разделим секцията ни subnet на няколко части и за всяка част да раздаваме различни настройки. Основното правило е да се дефинират възможно най-много параметри на възможно най-горно ниво (пр: глобално). Така в последствие има по-малко поддръжка по самата конфигурация. Остана да се отбележи че сървърът трябва да слуша само на вътрешният интерфейс (eth1). Това се постига посредством указване на кой интерфейс да слуша демонът в конфигурационният файл /etc/default/dhcp. Като цяло това завършва конфигурирането на dhcpd. Конфигуриране на bind9 Това ще нашият DNS сървър. За неговата конфигурация изхождаме от същите предположения както и за DHCP сървърът ни. Като допълнение ще създадем нашият домейн internal.tld. Конфигурацията му е разделена в няколко файла, а именно:

  • /etc/bind/named.conf – основна конфигурация. Като цяло в този файл се включват други файлове
  • /etc/bind/named.conf.options – тук се намират опциите настройващи поведението на нашият сървър
  • /etc/bind/named.conf.local – тук се намират дефинициите на нашите зони
  • Зонови файлове – това са същинските зони

Ще покажем конфигурациите на самият сървър и дефинициите на нашите зони, като ще пропуснем тези които съществуват стандартно. /etc/bind/named.conf

1
2
3
4
5
6
7
8
9
10
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";

/etc/bind/named.conf.options

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
options {
        // директория в която ще работим. Ако имаме относително име на файл
        // то ще се търси в тази директория
        directory "/var/cache/bind";
        // If there is a firewall between you and nameservers you want
        // to talk to, you might need to uncomment the query-source
        // directive below.  Previous versions of BIND always asked
        // questions using port 53, but BIND 8.1 and later use an unprivileged
        // port by default.
        query-source address * port 53;
        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.
        forwarders {
                1.2.3.4;
        };
        auth-nxdomain no;    # conform to RFC1035
        // няма да използваме IPv6
        listen-on-v6 { none; };
        // Не позволяваме рекурсия. Т.е. не отговаряме за домейни които не знаем
        // тази опция ще бъде предефинирана в по-късен етап
        recursion no;
        // поради факта че не слушаме на IPv6 и не дефинираме такива зони в лога
        // се появяват няколко реда които са особенно дразнещи. Това ги премахва
        empty-zones-enable no;
};

/etc/bind/named.conf.local

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
// дефиниция на лист за достъп. Локалната машина задължително трябва да е в нея
acl internal {
        10.42.3.0/24;
        127.0.0.0/8;
};
// изглед. Това е нова възможност на bind която позволява сепарация на информацията
// в зависимост от това от къде идваме
view "internal" {
        // от този изглед могат да получават отговори хостове от нашият списък
        match-clients { internal; };
        // вече можем да отоваряме и за домейни които не са при нас
        recursion yes;
        // нашият несъществуващ домейн
        zone "internal.tld" {
                type master;
                // къде се намира същинската зона
                file "/etc/bind/internal.tld-forward";
                // ако включим динамично опресняване на информацията в DNS
                // само описаните клиенти ще могат да изпълняват такива заявки
                allow-transfer { internal; };
                allow-update { internal; };
        };
         // Това е обратната ни зона. Създава съответствие IP/име
        zone "3.99.10.in-addr.arpa" {
                type master;
                file "/etc/bind/internal.tld-reverse";
                allow-transfer { internal; };
                allow-update { internal; };
        };
        // prime the server with knowledge of the root servers
        zone "." {
                type hint;
                file "/etc/bind/db.root";
        };
        // be authoritative for the localhost forward and reverse zones, and for
        // broadcast zones as per RFC 1912
        zone "localhost" {
                type master;
                file "/etc/bind/db.local";
        };
        zone "127.in-addr.arpa" {
                type master;
                file "/etc/bind/db.127";
        };
        zone "0.in-addr.arpa" {
                type master;
                file "/etc/bind/db.0";
        };
        zone "255.in-addr.arpa" {
                type master;
                file "/etc/bind/db.255";
        };
};

Като цяло това завършва конфигурацията на нашият сървър. Както ще
забележите той слуша на всички интерфейси но за нормални заявки
отговаря само ако заявката идва от вътрешната мрежа. Стандартно
логовете при дебиан отиват в /var/log/daemon.log. Сега остана само да опишем нашите зони.

internal.tld – /etc/bind/internal.tld-forward

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
; BIND db file for internal.tld
; Време на живот по подразбиране
$TTL 86400
; Запис който ни дефинира като собственици на домейна
@       IN      SOA     perfect-soho-r01.internal.tld.      root. (
                        2007060101     ; serial number YYMMDDNN
                        28800           ; Refresh
                        7200            ; Retry
                        864000          ; Expire
                        86400           ; Min TTL
                        )
                ; нашият DNS. Това е glue запис
                NS      perfect-soho-r01.internal.tld.
; ако името не е пълно специфицирано добави това
$ORIGIN internal.tld.
perfect-soho-r01  IN      A       10.42.3.1
; псевдоним на нашият рутер
gate IN CNAME perfect-soho-r01
3.42.10.in-addr.arpa - /etc/bind/internal.tld-reverse
; BIND reverse data file for internal.tld
$TTL    86400
@       IN      SOA     garota.internal.tld. root. (
                     2007060101         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
@       IN      NS      perfect-soho-r01.internal.tld.
1       IN      PTR     perfect-soho-r01.internal.tld.

С това завършва конфигурацията на bind9.

Конфигуриране на dnsmasq

dnsmasq екомбинация от dns и dhcp сървър подходящ за малки мрежи. Има
ниско потребление на рам, настройва се относително бързо и лесно. Като
цяло не съм много сведущ по него, но с малко помощ от man тази
конфигурация излезе

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# 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 (with a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
# Uncomment this to filter useless windows-originated DNS requests
# Note that (amongst other things) this blocks all SRV requests,
# so don't use it if you use eg Kerberos.
filterwin2k
# Add domains which you want to force to an IP address here.
# The example below send any host in doubleclick.net to a local
# webserver.
# a bit of spam/ad blocking
address=/doubleclick.net/127.0.0.1
# If you want dnsmasq to change uid and gid to something other
# than the default, edit the following lines.
#user=
#group=
# If you want dnsmasq to listen for 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=eth1
# Set this (and domain: see below) if you want to have a domain
# automatically added to simple names in a hosts-file.
expand-hosts
# Set the domain for dnsmasq. this is optional, but if it is set, it
# does the following things.
# 1) Allows DHCP hosts to have fully qualified domain names, as long
#     as the domain part matches this setting.
# 2) Sets the "domain" DHCP option thereby potentially setting the
#    domain of all systems configured by DHCP
# 3) Provides the domain part for "expand-hosts"
domain=internal.tld
# Uncomment this to enable the integrated DHCP server, you need
# to supply the range of addresses available for lease and optionally
# a lease time. If you have more than one network, you will need to
# repeat this for each network on which you want to supply DHCP
# service.
dhcp-range=10.42.3.2,10.42.3.254,255.255.255.0,4h
# If this line is uncommented, dnsmasq will read /etc/ethers and act
# on the ethernet-address/IP pairs found there just as if they had
# been given as --dhcp-host options. Useful if you keep
# MAC-address/host mappings there for other purposes.
read-ethers
# Send options to hosts which ask for a DHCP lease.
# See RFC 2132 for details of available options.
# Note that all the common settings, such as netmask and
# broadcast address, DNS server and default route, are given
# sane defaults by dnsmasq. You very likely will not need any
# any dhcp-options. If you use Windows clients and Samba, there
# are some options which are recommended, they are detailed at the
# end of this section.
# For reference, the common options are:
# subnet mask - 1
# default router - 3
# DNS server - 6
# broadcast address - 28
dhcp-option=6,10.42.3.1,1.2.3.4
# Set the default time-to-live to 50
dhcp-option=23,64
# The following DHCP options set up dnsmasq in the same way as is specified
# for the ISC dhcpcd in
# adapted for a typical dnsmasq installation where the host running
# dnsmasq is also the host running samba.
# you may want to uncomment them if you use Windows clients and Samba.
dhcp-option=19,0           # option ip-forwarding off
#dhcp-option=44,0.0.0.0     # set netbios-over-TCP/IP nameserver(s) aka WINS server(s)
#dhcp-option=45,0.0.0.0     # netbios datagram distribution server
dhcp-option=46,8           # netbios node type
dhcp-option=47             # empty netbios scope.
# Set the DHCP server to authoritative mode. In this mode it will barge in
# and take over the lease for any client which broadcasts on the network,
# whether it has a record of the lease or not. This avoids long timeouts
# when a machine wakes up on a new network. DO NOT enable this if there's
# the slighest chance that you might end up accidentally configuring a DHCP
# server for your campus/company accidentally. The ISC server uses the same
# the same option, and this URL provides more information:
dhcp-authoritative
# Normally responses which come form /etc/hosts and the DHCP lease
# file have Time-To-Live set as zero, which conventionally means
# do not cache further. If you are happy to trade lower load on the
# server for potentially stale date, you can set a time-to-live (in
# seconds) here.
local-ttl=600
# If you want dnsmasq to detect attempts by Verisign to send queries
# to unregistered .com and .net hosts to its sitefinder service and
# have dnsmasq instead return the correct NXDOMAIN response, uncomment
# this line. You can add similar lines to do the same for other
# registries which have implemented wildcard A records.
#bogus-nxdomain=64.94.110.11
#log-queries

Не твърдя че конфигурацията е перфектна, но просто нямам много опит с dnsmasq.

Заключение

След като сме свършили всичко това се очаква че вече имаме работещи
услуги и относително стабилна машина. Сега е добър момент за кратка
почивка тъй-като следва описването на нашата защитна стена и рутирането.

The Perfect SOHO router – Част 2

В тази част ще инсталираме нашият рутер, ще изхвърлим абсолютно
всичко излишно и инсталираме необходимият ни софтуер. Идеята зад целият
процес е да минимизираме както използваното дисково пространство така и
самата употреба на диска. По този начин също така ще намалим
количеството използван софтуер което ще улесни нашата поддръжка.

Желязото

За този проект използваме следният хардуер

1
2
3
4
5
Compaq Deskpro series small factor machine
CPU: 333 mhz
RAM: 256 mb
HDD: 6,4 GB
LAN: 1 x Intel Ether Express (onboard), 1 x Davicom.

Като цяло това е една доста мършава машина по сегашни стандарти но
за целта е напълно достатъчна. Поради факта че мрежовата карта на
Davicom като цяло е голям боклук ще я ползваме за вътрешна, тъй като
там ще се справя с по малко проблеми.

Инсталация на базова система

Това е като цяло прост процес. Намерете си любимото CD с дебиан 3.1 и
да започваме. Първата важна точка в дневният ред е по какъв начин да
разделим диска. Аз лично препоръчвам следната конфигурация:

1
2
3
4
/boot - 100 MB
/ - 2 GB
/swap - 256 MB
/home - REST

Това разделяне ще ни даде относително голяма свобода на работа както и възможност за по нататъшно развитие.

Друг важен момент е в коя лан карта да сложим мрежа. Както
обосновахме по-горе поради ниското качество на едната карта ще я
използваме за вътрешна, а вградената ще използваме за външна. Общият
принцип е че тази карта която ще използваме за външна трябва да бъде с
мрежа по време на инсталация. Не е невъзможно това да се пренебрегне но
в последствие има доста повече работа.

Следва да инсталираме системата. Аз препоръчвам клона testing,
тъй-като в него има по нови версии на софтуера и е достатъчно стабилен
за нашите цели. По време на самата инсталация не избирайте никакъв
профил от предложените ви. Изберете сигурна парола за root и не
създавайте допълнителен потребител.

Минимизиране

След като вече сме завършили инсталацията време е да я минимизираме. За целта ще използваме пакета deborphan.
Той се използва за да покаже пакети които не се използват. Нашата цел с
неговото инсталиране е да премахнем абсолютно всичко което не ни е
нужно. За целта ще се наложи неколкократно извикване на следният ред

Идеята на този ред е да изчисти абсолютно всички пакети които не са

необходими или не се използват като пропусне пакетите които имат ssh,
deborphan, apt, nano, kernel, ssl или bash в името си.
Необходимо е тази команда да се изпълни няколко пъти тъй като софтуерът
не е рекурсивен. Тази стъпка не е строго необходима но помага.
Допълнително инсталираме пакета localepurge с чиято помощ ще отстраним ненужните локали. С него изберете същите езици/локали които сте избрали при инсталацията.

Инсталиране на необходимият ни софтуер

Първо нека да доведем системата до най-новото състояние в клона който сме избрали


 

Следва да премахнем всички налични за момента кернели и да
инсталираме такъв който ние искаме. Специално за дебиан кернелът се
намира в пакет с име от типа kernel-image, linux-image. Открийте и
премахнете всички подобни пакети

 

Сега следва да инсталираме кернел по наше желание. Ще използваме
такъв който се предоставя от проекта дебиан тъй като конфигурацията му
е достатъчно добра за нуждите ни.


 

Кернелът е достатъчно бърз и има всичко което ще ни трябва.

Поради изборът ни на услуги ще се налоги да инсталираме малко допълнителен софтуер


 

В процеса на инсталация ще бъдат инсталирани допълнителни пакети от които зависи работата на желаните от нас.

Последната задача която стои пред нас на този етап от инсталацията е
да добавим собствен потребител със негов собствен ssh ключ за
повишаване на сигурността и да му гарантираме правото да изпълнява
команди посредством sudo.


 

Командата visudo редактира файла /etc/sudoers. Там трябва да добавим/откоментираме редът

1
%sudo ALL=NOPASSWD: ALL

който позволява на всички принадлежащи в групата sudo да изпълняват всички команди без парола.

Заключение

Като цяло в това се състои нашата базова инсталация. От тук на сетне тя
трябва да бъде настроена. Всички останали задачи ще изпълняваме
посредством ssh като първо се свързваме с нашият потребител managementuser и в последствие ставаме root посредством sudo su –

The Perfect SOHO router – Част 1

Е да започваме с първата част.

Идеята

От известно време си мисля за тази серия от статии. Темата със SOHO рутерите е интересна от много гледни точки. От една страна това трябва да са евтини машини. От друга трябва да са достатъчно ефективни за да вършат работата. И може би последната гледна точка е че никъде няма описано подобно нещо. И вече наистина последно – просто ми е приятно да го напиша.

Нужни услуги

Тук трябва да се вложи най много мисъл. Трябва да се определи точно какви услуги ще се изпълняват на нашият рутер. Абсолютният минимум е рутиране/маскиране и SSH. Реално това е напълно достатъчно но и леко неудобно. Моят минимум е следният:

  • Рутиране/маскиране/НАТ – без него няма смисъл от рутер
  • SSH – за мениджмънт от конзола
  • Кеширащ DNS – за наша собствена фалшива зона, скорост и частична независимост от нашия доставчик
  • DHCP сървър който да ни настройва мрежата автоматично
  • Минималистична web базирана система за наблюдение, статистики и елементарни проверки

Като цяло това е един добър комплект услуги които предоставят удобство на работа и изискват минимална поддръжка. Лично аз предпочитам допълнително да имам следните допълнителни услуги:

  • Самба – за да укротя малко windows машините в мрежата. Предоставя MasterBrowser и WINS
  • NTP сървър – предоставя точно време
  • FTP сървър – за да мога отдалечено да си качвам дреболии

Размисли

Така вече сме избрали услугите, остана изборът на дистрибуция. Лично аз предпочитам дебиан и на него ще реализирам целият проект. Всеки е свободен да избере каквото иска, и най-вече това което му е удобно. Трябва от рано да се помисли за това как ще се проверява сигурността, кой ще има право на достъп до машината, дали ще се ползват квоти/ограничения във времето. Какъв тип маскиране ще се ползва и още дреболии. Повечето от тези въпроси изникват в процеса на работа, така че моля първо прочетете цялата серия и тогава започнете работа.

Общи насоки

Това не е елементарен проект. Предполага се че имате прилична представа какво точно се опитвате да постигнете. Всяка грешка допусната по време на инсталацията може наистина да ви ухапе след време. Така че мислете навреме и по няколко пъти.

Серията продължава >>>