Поиск по сайту:
Пока компьютер еще не научился самостоятельно мыслить, доверять ему можно. (Илья Герчиков) МЫСЛЬ РАЗУМ

Как создать простой маршрутизатор с Ubuntu Server 18.04.1 LTS (Bionic Beaver)

29.05.2019
Как создать простой маршрутизатор с Ubuntu Server 18.04.1 LTS (Bionic Beaver)

Недавно нашей задачей было установить общедоступные компьютеры за отдельным маршрутизатором для контроля доступа в Интернет. Поскольку у нас полно компьютерных компонентов, мы решили построить маршрутизатор на более старом компьютере с операционной системой Ubuntu Server 18.04.1 LTS (Bionic Beaver).

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

 

ПРЕДПОСЫЛКИ

  • Компьютер под управлением Ubuntu Server 18.04.1 LTS. Не будем вдаваться в подробности установки операционной системы Ubuntu. Это довольно просто.
  • Как минимум два сетевых интерфейса. Один предназначен для глобальной сети, а другой – для локальной сети маршрутизатора. Вы также можете использовать некоторые коммутаторы в случае, если вы собираетесь подключить несколько устройств в локальной сети, купить коммутаторы или маршрутизаторы можно на сайте http://spw.ru/. Но это почти все, что вам нужно для работающего роутера.

 

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

 

1. НАСТРОЙКА СЕТЕВЫХ ИНТЕРФЕЙСОВ

Во-первых, нам нужно настроить сетевые интерфейсы, которые мы будем использовать. В нашем случае eth0 будет WAN, а eth1 LAN.

WAN (eth0) – этот интерфейс получит IP от провайдера, поэтому мы оставляем его с помощью DHCP.

LAN (eth1) – мы настраиваем интерфейс со статическим IP внутри подсети, которую мы будем использовать для локальной сети

Небольшое замечание: Ubuntu 18.04 не использует традиционный файл конфигурации сети  /etc/network/interfaces. Он использует NETPLAN. В нашем случае, есть конфигурационный файл, называется 50-cloud-init.yaml  внутри папки /etc/netplan/. В вашем случае файл может иметь другое имя, просто найдите файл с расширением.yaml внутри папки netplan.

Давайте откроем это с помощью nano:

sudo nano /etc/netplan/50-cloud-init.yaml

 

Отредактируйте его в соответствии с потребностями вашей сети, в моем примере я настроил это так:

# Этот файл создан на основе информации, предоставленной
# источник данных. Изменения в нем не будут сохраняться во всем экземпляре.
# Чтобы отключить возможности сетевой конфигурации cloud-init, напишите файл
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg со следующим:
# network: {config: disabled}
network:
    ethernets:
        eth0:
            dhcp4: true
        eth1:
            addresses:
            - 192.168.1.1/24
            dhcp4: false
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
    version: 2

 

Подводя итог: eth0, который является WAN, получает IP от модема интернет-провайдера. Eth1 является частью локальной сети маршрутизатора. Нам нужен статический IP и DNS-серверы (в нашем примере мы использовал Google). Также мы не настроили ни один шлюз на eth1.

Сохраните конфигурацию с помощью следующих команд:

sudo netplan generate
sudo netplan apply

 

2. НАСТРОЙКА СЕРВЕРА DHCP

Далее мы настроим DHCP-сервер. Мы действительно не хотим настраивать каждый клиент со статическим IP в сети LAN. Для этой задачи нам нужно установить следующий пакет.

sudo apt-get install isc-dhcp-server

 

Далее нам нужно отредактировать  файл /etc/default/isc-dhcp-server. Это сообщает DHCP-серверу, какой сетевой интерфейс он должен прослушивать. В нашем случае это конечно eth1, интерфейс локальной сети.

Вводим команду:

sudo nano /etc/default/isc-dhcp-server

 

А под «INTERFACESv4» вставьте сетевой интерфейс вашей локальной сети. В нашем случае это eth1 :

INTERFACESv4 = "eth1"

 

Следующим шагом будет настройка DHCP-сервера. Это делается путем редактирования файла  /etc/dhcp/dhcpd.conf

sudo nano /etc/dhcp/dhcpd.conf

 

Вот куча разных параметров, большинство из них комментируются # перед каждой строкой. Короче говоря, мы запишем только те параметры, которые мы использовал, и/или отредактируем их в соответствии со своими потребностями. Если вы хотите, вы можете удалить все содержимое этого файла и просто скопировать/вставить код ниже. Конечно, вы меняете IP-адреса, шлюзы и т. д. В соответствии с вашей собственной конфигурацией сети.

option domain-name "whatever.you.want";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
authoritative;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
     range 192.168.1.101 192.168.1.200;
     option subnet-mask 255.255.255.0;
     option routers 192.168.1.1;
     option broadcast-address 192.168.1.255;
}

 

Теперь давайте применим настройки и включим DHCP-сервер при загрузке с помощью следующих команд:

sudo systemctl restart isc-dhcp-server
sudo systemctl enable isc-dhcp-server

 

С помощью следующей команды мы проверяем статус.

sudo systemctl status isc-dhcp-server

 

Если все настроено правильно, должна быть строка «ACTIVE». В противном случае вы что-то  напутали в файле /etc/dhcp/dhcpd.conf. Возможно, отсутствует точка с запятой или скобка.

 

3. НАСТРОЙКА ФАЙЕРВОЛА

Чтобы иметь функциональный маршрутизатор, нам нужно правильно настроить брандмауэр. Это делается путем записи некоторых правил iptables. Чтобы сохранить правила при перезапуске сервера, мы создали скрипт, который будет выполняться во время загрузки.

Сначала давайте включим UFW с…

sudo ufw enable

 

Далее нам нужно включить пересылку пакетов из WAN в LAN. У нас следующий параметр внутри файла /etc/ufw/sysctl.conf:

Открываем файл…

sudo nano /etc/ufw/sysctl.conf

 

… и мы просто удаляем # перед следующей строкой:

net/ipv4/ip_forward=1

 

В Ubuntu 18.04 файл /etc/rc.local больше не существует. Но мы все еще можем создать это с:

sudo nano /etc/rc.local

 

Затем скопируйте/вставьте следующий скрипт. Есть комментарии, объясняющие каждое правило iptables. Вы можете удалить их, если хотите, но вы НЕ должны  удалять #! /bin/bash. Также измените eth0 и eth1, если ваши сетевые интерфейсы имеют несколько разных имен.

#!/bin/bash

# /etc/rc.local

# Default policy to drop all incoming packets.
iptables -P INPUT DROP
iptables -P FORWARD DROP

# Accept incoming packets from localhost and the LAN interface.
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT

# Accept incoming packets from the WAN if the router initiated the connection.
iptables -A INPUT -i eth0 -m conntrack \
--ctstate ESTABLISHED,RELATED -j ACCEPT

# Forward LAN packets to the WAN.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

# Forward WAN packets to the LAN if the LAN initiated the connection.
iptables -A FORWARD -i eth0 -o eth1 -m conntrack \
--ctstate ESTABLISHED,RELATED -j ACCEPT

# NAT traffic going out the WAN interface.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# rc.local needs to exit with 0
exit 0

 

Этот сценарий должен выполняться во время загрузки, поэтому нам нужно сделать файл исполняемым с помощью следующей команды:

sudo chmod 755 /etc/rc.local

 

И это все. Мы перезагружаем маршрутизатор с помощью команды sudo reboot, и мы готовы к работе. 🙂

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

7 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Николай Иваничев

Как жалко, что я не нашёл этот сайт, когда создавал свой первый сервер на Debian 7! Ранее более 25 лет работал сисадмином в сетях Windows. Переход на Linux был большим шагом “в толщину”, “насобирал” столько шишек на свою голову… Лет 7 искал, как сделать маршрутизатор на Debian, затем на CentOS. Сейчас в связи с неразрешимыми проблемами в CentOS, в частности крайне нестабильной работе сервера Samba, перевёл домашний сервер на Ubuntu 18.04.2 и эта статья мне крайне своевременна, назрела необходимость раздачи интернет по локальной сети в сельском доме. Настройки 4G роутера крайне скудные. Огромное спасибо автору статьи за очень важную для меня информацию. Николай.

ubuntu

сделал все копипастом. ip по dhcp получаю, но интернет не раздаёт(((

kilGOR

копипаст это здорово, а сетевые интерфейсы у вас точно совпадают?!
Мне, например, везде пришлось менять eth0 на eno1, а eth1 на enp1s0.
И да, это третья по счету испытанная статья из 10-и выбитых гуглом и наконец всё заработало)))

Серж

Все(кроме dhcp) сделал как в статье файл rc.local позже пропал и я его не удалял.
Как удалить изменения которые сделал скрипт???

kilGOR

Перезагрузить компьютер. iptables обнуляется при каждой перезагрузке, для того и нужен скрипт…

olegio

А если еще WiFi интерфейс я просто дописываю строки под него или там ее что то более существенное? допустим у меня еще помимо LAN два вай фай модуля.

Cimes

Я 8 раз переустанавливал UBUNTU 18.04 server.
У меня даже с этой статьей были проблемы. Но после настройки DNS на bind9 + samba + доменный контроль + squid = статья зашла на ура.

Все работает отлично. Доменному автоматически раздает ip и доступ в интернет.

Читайте также

Спасибо!

Теперь редакторы в курсе.