# Создание программного роутера Debian

<p class="callout info">За основу взята [данная статья](https://dondub.com/2021/04/router-na-ubuntu-server-21-04/ "Роутер на Ubuntu Server 21.04").</p>

<p class="callout warning">Все действия выполняются на виртуальной машине в Proxmox VE.</p>

Сначала требуется чтобы у виртуальной машины, которая будет выступать в роли роутера, было минимум два сетевых интерфейса, в данном случае они представляют собой два Linux Bridge, в качестве системы виртуализации используется Proxmox. Первый мост – стандартный vmbr0, на нем будет внешняя сеть роутера, второй мост vmbr1 – на нем будет внутренняя сеть роутера, в настройках сетевых устройств Proxmox настроен CIDR: 10.0.1.0/24

После установки Debian в виртуалку настраиваем сетевые интерфейсы:

В данном примере система имеет два сетевых интерфейса: enp6s18 и enp6s19.

enp6s18 – это vmbr0 и будет внешней сетью

enp6s19 – это vmbr1 и будет внутренней сетью.

Редактируем файл /etc/networking/interfaces, содержимое должно иметь примерно следующий вид:

```shell
auto enp6s18
iface enp6s18 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1

auto enp6s19
iface enp6s19 inet static
address 10.0.1.1
netmask 255.255.255.0
```

Далее перезапускаем сетевую службу:

```shell
sudo systemctl restart networking.service
```

#### Настроим правила файрволла

Создадим каталог /etc/firewall и скрипт firewall.sh в нём:

```shell
sudo mkdir /etc/firewall
sudo nano /etc/firewall/iptables.sh
```

В нем следует создать следующее содержимое:

```shell
#!/bin/sh

sysctl -w net.ipv4.ip_forward=1

iptables -F
iptables -t nat -A POSTROUTING -o enp6s18 -j MASQUERADE
```

Делаем скрипт исполняемым:

```shell
sudo chmod +x /etc/firewall/iptables.sh
```

#### Создадим службу rc.local

Создаем сервис для службы:

```shell
sudo nano /etc/systemd/system/rc-local.service
```

В него добавляем следующий код:

```shell
[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
```

Создадим файл /etc/rc.local

```shell
sudo nano /etc/rc.local
```

Помещаем туда следующий код:

```
#!/bin/sh -e

/etc/firewall/iptables.sh
exit 0
```

Делаем его исполняемым:

```shell
sudo chmod +x /etc/rc.local
```

#### Устанавливаем dnsmasq

Устанавливаем:

```shell
sudo apt install dnsmasq
```

Открываем конфиг:

```shell
sudo nano /etc/dnsmasq.conf
```

Добавляем в конец файла следующее:

```shell
bind-interfaces
domain-needed
bogus-priv
interface=enp6s19
resolv-file=/etc/resolv.conf
dhcp-range=10.0.1.154,10.0.1.254,24h
cache-size=150
```

Этим самым мы установили и сконфигурировали DHCP-сервер и добавили диапазон из 100 адресов с 10.0.1.154 до 10.0.1.254 в качестве адресов, которые будут назначаться автоматически, значения можно поменять на свой вкус.

<p class="callout warning">В качестве интерфейса был назначен enp6s19, который соответствует локальной сети роутера и подключен к мосту vmbr1!</p>

Перезагружаем виртуалку: sudo reboot now

Проверяем работу и радуемся.