вторник, 30 июня 2015 г.

Настройка простого роутера под CentOS 7


Доброго времени суток, товарищ читатель!

Эта заметка посвящена настройке простейшего роутера под CentOS 7 для раздачи Интернета через NAT. Не буду тянуть кота за хвост и начну :)

Прежде всего я хочу описать часть окружения, на котором происходило всё действие:
  • Платформа - Oracle Virtual Box 4.3.28;
  • Гостевая ОС - CentOS 7 Minimal, сборка 1503-01;
  • Сетевые интерфейсы гостевой ОС - первый используется для имитации провайдера Интернета (смотрит в предварительно созданную сеть NAT), второй направлен во внутреннюю сеть, доступную только виртуальным машинам, никоим образом с хостом не контактирующей (имитация локальной сети).
    Сеть NAT

Настройки интерфейсов гостевой ОС
Предупреждаю сразу - это не подробнейшее руководство для чайников; многие детали опущены, как несущественные. Собственно, поэтому установку CentOS описывать не буду - она интуитивно понятна, проста, использует графический интерфейс с поддержкой русского языка. Во время инсталляции я не создавал нового пользователя, лишь установил пароль для root, поэтому все дальнейшие команды и консольные выводы - всё это сделано в shell root-а. Теперь настало время для непосредственной настройки.

Конфигурация гостевой ОС

  # настройка интерфейса локальной сети
  vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

  Файл имеет следующее содержимое:

  TYPE=Ethernet
  BOOTPROTO=none
  NAME=enp0s8
  DEVICE=enp0s8
  ONBOOT=yes
  IPADDR=192.168.42.1
  PREFIX=24
  DNS1=8.8.8.8
На всякий случай стоит проверить и интерфейс, подключённый к Интернету - "ONBOOT" там тоже должен быть равен "YES". Конфигурация сетевых интерфейсов в итоге выглядит так
Настроенные карты

Установка и настройка DHCP-сервера

  yum install dhcp        # установка пакета dhcp
  vi /etc/dhcp/dhcpd.conf # создание конфигурации DHCP-сервера

Файл имеет следующее содержимое:


  default-lease-time 600; # время аренды по умолчанию
  max-lease-time 7200;    # максимально возможное время аренды
  authoritative;          # возможность форсированного обновления аренды
 
  subnet 192.168.42.0 netmask 255.255.255.0 {
    # диапазон адресов, выдача по BOOTP
    range dynamic-bootp 192.168.42.100 192.168.42.150;
 
    # шлюз по умолчанию
    option routers 192.168.42.1;
 
    # DNS-сервер по умолчанию
    option domain-name-servers 8.8.8.8;
  }

Старт демона и включение в автозагрузку:

  systemctl start dhcpd
  systemctl enable dhcpd

Настройка NAT

Тут я оговорюсь, что в CentOS 7 появился FirewallD - новый способ управления межсетевым экраном. Почитав документацию, я решил не заморачиваться и настроить NAT через iptables:
  systemctl stop firewalld      # остановка демона FirewallD
  systemctl disable firewalld   # отключение автозапуска
  yum install iptables-services # доустановка iptables
  iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o enp0s3 -j MASQUERADE # NAT
  vi /etc/sysconfig/iptables    # удаление записей -A из блока *filter
  iptables-save > /etc/sysconfig/iptables # сохранение конфигурации iptables
  echo 1 > /proc/sys/net/ipv4/ip_forward  # включение перенаправления трафика
  echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # автозапуск перенаправления
  systemctl start iptables      # запуск iptables
  systemctl enable iptables     # включение в автозагрузку

Заключение

Перед тем, как написать, что развёртывание роутера завершено, в обязательном порядке нужно подключить к внутренней сети ещё одну виртуалку, проверить работу DHCP-сервера и наличие Интернета. Как только это сделано, и есть уверенность в том, что всё работает, даже после перезагрузки только что сконфигурированного роутера, то можно с чистой совестью поставить точку, что я и делаю, ибо всё заработало.

P.S.: конечно, можно проще, можно задействовать другие системы с тривиальным интерфейсом настройки в полуавтоматическом режиме. Да, так и есть. Но, для меня копание в консоли и настройка роутера через неё приносит больше понимания сути всего процесса перенаправления трафика, нежели использование чего-то готового.

На этом всё - всего тебе, читатель, доброго+)

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

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