⚙️ Настройка CentOS/Rocky/Oracle Linux в качестве маршрутизатора Linux |

⚙️ Настройка CentOS/Rocky/Oracle Linux в качестве маршрутизатора Linux

Мануал

Из этого руководства, вы узнаете, как настроить CentOS/Rocky/Oracle Linux в качестве маршрутизатора Linux.

Маршрутизатор – это устройство, которое соединяет две или более IP-сети или подсети.

Linux может быть настроен как шлюз по умолчанию для маршрутизации трафика между сетями.

Настройка CentOS/Rocky Linux/Oracle Linux в качестве маршрутизатора Linux

Назначение IP-адресов

Маршрутизатор (Oracle/CentOS/Rocky) Нода:

ip a
1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <broadcast,multicast,up,lower_up> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:61:8b:f0 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.153/24 brd 192.168.100.255 scope global dynamic noprefixroute enp0s3
valid_lft 85790sec preferred_lft 85790sec
inet6 fe80::a00:27ff:fe61:8bf0/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: enp0s8: <broadcast,multicast,up,lower_up> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:a3:6a:d3 brd ff:ff:ff:ff:ff:ff
inet 172.16.0.1/24 brd 172.16.0.255 scope global noprefixroute enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::9369:6ae8:76af:9e67/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: enp0s9: <broadcast,multicast,up,lower_up> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:32:e2:42 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.1/24 brd 172.16.1.255 scope global noprefixroute enp0s9
valid_lft forever preferred_lft forever
inet6 fe80::ea61:99b4:6980:4dd2/64 scope link noprefixroute
valid_lft forever preferred_lft forever</broadcast,multicast,up,lower_up></broadcast,multicast,up,lower_up></broadcast,multicast,up,lower_up></loopback,up,lower_up>

Таблица маршрутизации:

ip r
default via 192.168.100.1 dev enp0s3 proto dhcp metric 100
172.16.0.0/24 dev enp0s8 proto kernel scope link src 172.16.0.1 metric 105
172.16.1.0/24 dev enp0s9 proto kernel scope link src 172.16.1.1 metric 106
192.168.100.0/24 dev enp0s3 proto kernel scope link src 192.168.100.153 metric 100

Хост в сети 172.16.0.0/24:

ip a
1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <broadcast,multicast,up,lower_up> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:90:ff:e8 brd ff:ff:ff:ff:ff:ff
inet 172.16.0.10/24 brd 172.16.0.255 scope global noprefixroute enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::fffa:c73a:2ba0:bc02/64 scope link noprefixroute
valid_lft forever preferred_lft forever</broadcast,multicast,up,lower_up></loopback,up,lower_up>

Таблица маршрутизации:

ip r
default via 172.16.1.1 dev enp0s3 proto static metric 100
172.16.1.0/24 dev enp0s3 proto kernel scope link src 172.16.1.10 metric 100

Как вы, возможно, уже поняли:

  • Ни одна система LAN в сети 172.16.0.0/24 и 172.16.1.0/24 не имеет доступа в Интернет, кроме самого маршрутизатора.
  • Системы локальных сетей могут получить доступ только к маршрутизатору.
  • Системы в разных локальных сетях не могут взаимодействовать.

Включение IP-переадресации ядра на маршрутизаторе Linux

Для того чтобы маршрутизатор Linux мог работать, принимать и пересылать пакеты, необходимо включить IP-переадресацию:

🖧 Как отключить / включить IP форвардинг на Linux

Чтобы включить IP-переадресацию, необходимо откомментировать строку net.ipv4.ip_forward в конфигурационном файле /etc/sysctl.conf и установить ее значение на 1, если по какой-то случайности она установлена на 0.

Итак, сначала проверьте, определена ли указанная строка в конфигурационном файле;

grep net.ipv4.ip_forward /etc/sysctl.conf

Если строка присутствует в конфигурационном файле и закомментирована, просто раскомментируйте ее, выполнив приведенную ниже команду;

sed -i '/net.ipv4.ip_forward/s/^#//' /etc/sysctl.conf

В противном случае просто вставьте строку:

echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf

Затем примените изменения:

sysctl -p

Проверьте статус, выполнив приведенную ниже команду:

sysctl net.ipv4.ip_forward

Значение должно быть равно 1.

На данном этапе системы в разных локальных сетях 172.16.0.0/24 и 172.16.1.0/24 могут только пинговать друг друга.

Однако у них нет доступа в Интернет.

Настройка переадресации пакетов на маршрутизаторе Linux

Конфигурации на следующем шаге могут быть выполнены с помощью iptables или через firewalld.

В данном руководстве мы используем IPtables;

Поэтому остановите Firewalld, установите службу IPtables и запустите IPtables;

systemctl disable --now firewalld
dnf install iptables-services -y
systemctl enable --now iptables

Текущие правила брандмауэра сохраняются:

iptables -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
139 10300 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 78 packets, 6552 bytes)
pkts bytes target     prot opt in     out     source               destination

Прежде всего, мы установим политику по умолчанию для цепочки FORWARD на DROP, чтобы мы могли явно определить, какой трафик должен быть разрешен.

iptables -P FORWARD DROP

Далее настроим пересылку пакетов, полученных с LAN-интерфейсов маршрутизатора (enp0s8 и enp0s9), через WAN-интерфейс, которым в нашем случае является enp0s3.

iptables -I FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
iptables -A FORWARD -i enp0s9 -o enp0s3 -j ACCEPT

Включите пересылку пакетов между сетями LAN:

iptables -A FORWARD -i enp0s9 -o enp0s8 -j ACCEPT
iptables -A FORWARD -i enp0s8 -o enp0s9 -j ACCEPT

Аналогичным образом настройте пересылку пакетов, связанных с существующими соединениями, полученных на интерфейсе WAN, на интерфейсы LAN:

iptables -A FORWARD -i  enp0s3 -o enp0s8 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i  enp0s3 -o enp0s9 -m state --state RELATED,ESTABLISHED -j ACCEPT

Обратите внимание, если вы не хотите использовать отдельные правила цепочки FORWARD, описанные выше, вы можете просто разрешить все по цепочке:

iptables -I FORWARD -j ACCEPT

Настройка трансляции сетевых адресов маршрутизатора

Далее настроим  маршрутизатор таким образом, чтобы системы локальной сети получали доступ в Интернет через IP-адрес GW по умолчанию.

Это называется IP Masquerade.

IP Masquerade может быть выполнен только на таблице NAT:

iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

Для получения дополнительной информации обратитесь к man iptables.

Постоянное сохранение правил iptables

Ранее уже подробно обсуждали:

Чтобы навсегда сохранить правила iptables, используйте команду iptables-save следующим образом.

cp /etc/sysconfig/iptables{,.bak}
iptables-save > /etc/sysconfig/iptables

Перезапустите службу, чтобы перезагрузить правила и применить вновь добавленные;

systemctl restart iptables

Проверим правила:

iptables -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
34  2296 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
0     0 ACCEPT     all  --  enp0s8 enp0s3  0.0.0.0/0            0.0.0.0/0
0     0 ACCEPT     all  --  enp0s9 enp0s3  0.0.0.0/0            0.0.0.0/0
0     0 ACCEPT     all  --  enp0s9 enp0s8  0.0.0.0/0            0.0.0.0/0
0     0 ACCEPT     all  --  enp0s8 enp0s9  0.0.0.0/0            0.0.0.0/0
0     0 ACCEPT     all  --  enp0s3 enp0s8  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
0     0 ACCEPT     all  --  enp0s3 enp0s9  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT 20 packets, 4388 bytes)
pkts bytes target     prot opt in     out     source               destination

Проверьте правила NAT:

iptables -t nat -L -nv
Chain PREROUTING (policy ACCEPT 6 packets, 440 bytes)
pkts bytes target     prot opt in     out     source               destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
Chain POSTROUTING (policy ACCEPT 1 packets, 60 bytes)
pkts bytes target     prot opt in     out     source               destination
5   380 MASQUERADE  all  --  *      enp0s3  0.0.0.0/0            0.0.0.0/0
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination

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

И вот, пожалуйста.

Ваша машина Linux теперь должна иметь возможность маршрутизации трафика для вашей локальной сети.

На этом мы завершаем наше руководство по настройке Linux маршрутизатора.

см. также:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий