1 июня 2011 г.

Как собрать Linux-роутер. Часть 1

1. Вступление
Как и полагается к каждой истории есть предыстория, наша - не исключение. В наше время количеством компьютеров в квартире больше 1 уже практически никого не удивишь и при наличии широкополосного доступа в Интернет хочется, чтобы он был на каждой машине в квартире. Причем не передергиванием кабеля из одной машины в другую, а желательно одновременно на всех, а в случае с ноутбуками еще и по воздуху :). С данной задачей вполне успешно справляются современные роутеры, но в большинстве случаев мощности "железок" находящихся внутри этих роутеров довольно таки слабые. Следствием этого оказывается недостаточная скорость интернета (в нашей стране пакеты со скоростью >50 мбит/с уже не редкость и роутеры просто не "вытягивают" до максимума), тормозящий IPTV (данная услуга тоже уже довольно широко распространена в странах СНГ), нестабильная работа фоновых сервисов типа ICQ, Skype при наличии серьезной нагрузки на Интернет-канал (к примеру закачка торрента) и т.д. 
Решением данной проблемы является сборка полноценного роутера на базе какой-нибудь завалявшейся старой машинки в кладовке :) Системные требования не сильно взыскательные - процессор желательно не ниже 500 МГц и RAM не ниже 256 мб. Но это вовсе не значит что если Ваша конфигурация ниже данной, то ничего работать не будет :) Возможно будет работать чуть медленней, чем Вы могли ожидать :)

2. Аппаратная часть 
Приступим к обзору аппаратной части нашего будущего роутера. Выше я уже упоминал о процессоре и оперативной памяти. Далее нам понадобится 2 обычных сетевых карточки на 100 мбит (можно одну и на 1000 взять если Вы хотите высокие скорости по проводной локальной сети дома), одна беспроводная сетевая карта (в нашем примере я рассматриваю PCI-карту D-Link DWL G520), обычный неуправляемый свич (в случае если будет одна сетевая карта на 1000, как упоминалось ранее, то и свич должен быть гигабитный, в противном случае сойдет и на 100). Для процесса установки понадобится временно подключить клавиатуру и монитор. В процессе дальнейшей эксплуатации роутера это все можно будет отключить. Касательно жесткого диска, то тут уже следует выбирать по задачам, которые планируется возложить на роутер. Если нужен просто роутер и не более, то хватит жесткого и на 10 гб, а вот если нужен файловый сервер/торрентокачалка, то разумеется намного больше, потому выбор за Вами.

3. Установка ОС 
Я не буду останавливаться на том, как правильно выбрать ОС для нашей цели. В данном примере будет рассмотрена ОС Debian Squeeze 64-bit (если Ваша железка не поддерживает 64бит системы, то устанавливайте 32бит-ную версию, ее настройка ничем не отличается от той, что тут будет описана). Итак, скачиваем по данной ссылке образ диска (для 32бит отсюда) и записываем его на диск. Далее грузимся с диска уже с роутера, выбирая в появившемся меню диска Install. Далее процесс установки я описывать не буду, по той причине, что в интернете и так достаточно материалов по данному поводу, начиная от официального мануала по Debian, заканчивая аматорскими инстукциями от известных и не очень гениев данной мысли. Отмечу лишь одно немаловажное - при выборе пакетов установки НЕ отмечайте пакеты "графического рабочего стола". В этом меню следует отметить только "стандартные системные утилиты", а также сервер SSH. Все остальное будет настраиваться вручную в дальшейшем.


4. Настройка системы
  • Предварительная настройка
Итак, допустим система у вас уже установлена с набором базовых пакетов. Пора приступить к первоначальной настройке. Первым делом мы настроим шрифт нашей консоли, т.к. по умолчанию включен довольно ужасный шрифт. Войдя под root'ом выполним следующее:
# dpkg-reconfigure console-setup
В появившемся интерактивном меню выбираем кодировку UTF-8, комбинированные языки и шрифт TerminusBold, размер 16. Далее перезагружаемся:
# reboot
  • Первичная настройка сети
После перезагрузки приступим к одному из важнейших этапов настройки - настройки сети. В нашем примере провайдер работает по технологии Ethernet и для подключения к сети использует PPPoE (на данный момент один из наиболее распространенных типов подключения абонентов). Итак настройка сети осуществляется всего лишь с одного единственного файла. Его мы и будем редактировать (для удобства откройте дополнительную консоль посредством Alt+F2, где нужно будет опять авторизоваться - она Вам понадобится для ввода информационных команд во время редактирования. Переключение на первую консоль осуществляется с помощью Alt+F1):
# nano /etc/network/interfaces
Если Вы при установке выбрали автоматическую настройку сети и выбрали основной сетевой адаптер - скорее всего помимо записи про интерфейс "lo" в этом файле будет еще и запись про тот самый интерфейс, сконфигурированный для получения адреса по dhcp. Выглядеть оно будет примерно так:
auto eth0
iface eth0 inet dhcp 
Где eth0 - это имя сетевого интерфейса подключенного к сети провайдера. Для проверки правильности выбора интерфейса (а их у нас 2) рекомендую выполнить команду "ifconfig eth0", где eth0 тот самый провайдерский сетевой интерфейс. Если интерфейс выбран правильно то ему будет присвоен IP-адрес, а также прочие сетевые параметры. IP-aдрес в выводе вышеупомянутой команды нужно смотреть после "inet addr:". Пример вывода данной команды:

eth1      Link encap:Ethernet  HWaddr 00:30:4f:27:6b:62
          inet addr:172.16.140.151  Bcast:172.16.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:431546 errors:0 dropped:0 overruns:0 frame:0
          TX packets:478203 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:60903792 (58.0 MiB)  TX bytes:522157676 (497.9 MiB)
          Interrupt:12 Base address:0xd400
В данном случае таким интерфейсом у нас является eth1 (eth0 соответственно интерфейс подключенный к свичу).
Вернемся к редактированию файла. Если вышеупомянутые строки уже присутствуют в файле и IP-адрес получен успешно, то это еще не значит что настройка сетевого интерфейса закончена (по крайней в нашем случае именно так и есть). Провайдер для подключения использует привязку к MAC-адресу сетевой карты для авторизации PPPoE. Если Вы, допустим, до поднятия сервера использовали роутер, либо у Вас было подключение напрямую с компьютера, то авторизация будет происходить именно по MAC-у тех устройств, а он уникален у каждого сетевого устройства, следовательно на сервере нужно будет прописать нужный MAC в редактируемый нами файл. Как узнать нужный мак - однозначно ответить нельзя, но если Вы использовали роутер то его по идее можно увидеть на наклейке, где есть надпись "MAC-ID" или просто "MAC"; если Вы использовали подключение напрямую без роутера - Всемогущий Вам в помощь. Если MAC с наклейки на роутере - это просто набор 12 букв и цифр, то в файл его надо вписывать следующим образом (после строки "iface eth0 inet dhcp"):
hwaddress ether 00:11:22:33:44:55 
То есть через каждые 2 символа надо ставить двоеточие (это обязательное условие!). MAC-адрес полученный с компьютера (Windows) обычно идет разделенный тире. Как Вы уже догадались, их тоже нужно заменить на двоеточия. 
Если Вы не хотите возиться с изменением мака, то наиболее простым выходом с данной ситуации будет звонок в техподдержку провайдера с просьбой изменить вам мак. Если попросят назвать новый - его можно посмотреть опять же командой "ifconfig eth0". Он идет сразу же после "HWaddr". Его и следует назвать оператору техподдержки. 
Перейдем к настройке интерфейса подключенного к свичу. Если принять во внимание то, что интернетовский интерфейс у нас eth0, то "свичевый" будет соответственно eth1. Вписываем после настройки eth0 с новой строки следующие строки:
auto eth1
iface eth1 inet static
address 10.1.0.1
netmask 255.255.255.0
Данные строки говорят сами за себя, а именно:
1. iface eth1 inet static - "статическая" настройка интерфейса: IP, маска должны быть прописаны вручную
2. address 10.1.0.1 - собственно IP-адрес интерфейса. Здесь нужно обратить внимание на то, чтобы не возник конфликт с локальной сетью провайдера, которая может использовать ту же подсеть (например в данном случае 10.1.0.0). Проверить это можно с помощью вывода команды "ifconfig eth0" (где eth0 - опять же тот самый "провайдерский" интерфейс). Если "inet addr" интерфейса начинается с 10 или 192.168 - для Вашей внутренней сети нужно использовать IP в подсети 172.16.*.* (например 172.16.0.1). Если же он начинается со 172.16, то для локальной сети можно использовать как IP из сети 10.*.*.* так и 192.168.*.* (к примеру 10.1.0.1 или 192.168.0.1). Бывают случаи, когда локальная сеть провайдера настолько огромна, что используются сразу все 3 подсети зарезервированных локальных IP - в этом случае нужно использовать подсеть 169.254.*.*. Как правило, она не используется провайдерами. Если Вы не уверены или не разобрались как выяснить адреса подсетей локальной сети провайдера, то я рекомендую использовать именно последнюю подсеть (для справки - адреса из этого диапазона используются в Windows, когда сетевому интерфейсу не может быть присвоен адрес автоматически по DHCP). К примеру можно использовать адрес 169.254.0.1. В итоге строка будет иметь вид "address 169.254.0.1".
3. netmask 255.255.255.0 - сетевая маска подсети. Можно оставить такую же как и в примере.
В итоге после всех манипуляций файл должен выглядеть примерно так (использована наиболее оптимальная и простая конфигурация):
auto lo
iface lo inet loopback 
auto eth0
iface eth0 inet dhcp
hwaddress ether 00:11:22:33:44:55 # здесь не забыть вписать свой MAC (если нужно) 
auto eth1
iface eth1 inet static
address 169.254.0.1
netmask 255.255.255.0 
 Если все верно, сохраняем файл с помощью Ctrl+O, затем клацаем Enter. Для выхода жмем Ctrl+X. Перезагружаемся (reboot). На этом первая часть настройки закончена.


Комментариев нет:

Отправить комментарий