Firewalld, установка и настройка, зоны, nat, проброс портов

Настройка сети в centos

Проброс портов (Port Forwarding)

Необходим для перенаправление сетевых запросов на сервер, стоящий за NAT и не имеющий прямого выхода во внешнюю сеть. Настройки отличаются в зависимости от способа управления брандмауэром netfilter.

Firewalld

firewall-cmd —zone=external —permanent —add-forward-port=port=25:proto=tcp:toport=8025:toaddr=192.168.0.15

* где 25 — прослушиваемый внешний порт, для которого сработает перенаправление; tcp — используемый транспортный протокол; 8025 — на какой порт перенаправить запрос; 192.168.0.15 — IP-адрес сервера, на который отправляем запросы

* также обратите внимание, что в команде мы используем зону external, но в вашей среде она может и не использоваться. Посмотреть список активных зон можно командой firewall-cmd —get-active-zones

Разрешаем сам порт:

firewall-cmd —permanent —zone=external —add-port=25/tcp

Чтобы правило вступило в силу:

Iptables

Настройка выполняется двумя командами и двумя спомобами.

iptables -t nat -I PREROUTING -p tcp -m tcp -d 10.8.232.111 —dport 25 -j DNAT —to-destination 192.168.0.15:8025

iptables -t nat -I POSTROUTING -p tcp -m tcp -s 192.168.0.15 —sport 8025 -j SNAT —to-source 10.8.232.111:25

iptables -t nat -I PREROUTING -p tcp -i eth0 —dport 25 -j DNAT —to-destination 192.168.0.15:8025

iptables -I FORWARD -p tcp -d 192.168.0.15 —dport 8025 -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT

* где eth0 — внешний сетевой интерфейс.

iptables -I INPUT 1 -p tcp —dport 8025 -j ACCEPT

* обратите внимание, что мы разрешаем порт, на который переводим запрос, так как цепочки POSTROUTING и PREROUTING работают до цепочки FILTER, а потому открывать нужно не входящий порт (25), а тот, на который назначается пакет (8025). Источник

Источник

System config network tui в CentOS 7

Для управления сетевыми настройками в CentOS можно воспользоваться графической утилитой nmtui. Проверить ее наличие в системе очень просто. Достаточно запустить ее в консоли:

# nmtui

Если она у вас не установлена, то исправить это очень просто. Устанавливаем в CentOS system config network tui:

# yum install NetworkManager-tui

С помощью tui можно указать любые сетевые настройки, которые мы делали раньше через командную строку и редактирование конфигурационных файлов. Давайте сделаем это. Вызываем программу:

# nmtui

Выбираем первый пункт Edit a connection, затем выбираем сетевой интерфейс и жмем «Edit»:
Здесь мы можем изменить имя сетевой карты, mac адрес, указать тип сетевых настроек — ручной или dhcp, указать вручную ip адрес, адрес шлюза, днс сервера, добавить маршруты и некоторые другие настройки:

После завершения редактирования сохраняем настройки, нажимая ОК.
Если в первом экране утилиты выбрать пункт Set System Hostname, то можно быстро указать имя хоста. Результат будет такой же, как мы делали раньше в консоли.

NetworkManager

Проверить статус можно командой

systemctl status NetworkManager

NetworkManager.service — Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-02-18 17:30:13 EET; 1 months 30 days ago
Docs: man:NetworkManager(8)
Main PID: 841 (NetworkManager)
Tasks: 5
CGroup: /system.slice/NetworkManager.service
├─ 841 /usr/sbin/NetworkManager —no-daemon
└─9599 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens192.pid -lf /var/lib/NetworkManager/dhclient-5c2584c5-7d87-4826-ba2a-79713eb62a9a-ens192.lease -cf /var/lib/Net…

May 12 00:29:44 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): gateway 10.1.103.254
May 12 00:29:44 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): lease time 7200
May 12 00:29:44 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): nameserver ‘10.10.10.1’
May 12 00:29:44 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): nameserver ‘10.1.0.2’
May 12 00:29:44 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): domain name ‘urn.su’
May 12 00:29:44 localhost.localdomain NetworkManager: <info> dhcp (ens192): domain search ‘urn.su.’
May 12 00:29:44 localhost.localdomain NetworkManager: <info> dhcp (ens192): domain search ‘hel.fi.urn.su.’
May 12 00:29:44 localhost.localdomain NetworkManager: <info> dhcp (ens192): domain search ‘ad.urn.su.’
May 12 00:29:44 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): state changed bound -> bound
May 12 00:29:44 localhost.localdomain dhclient: bound to 10.1.102.211 — renewal in 2903 seconds.

Именование сетевых интерфейсов в CentOS

Классическая схема именования сетевых интерфейсов в Linux присваивает имена eth0, eth1 и так далее по порядку. Но эти имена не привязываются жестко к интерфейсам и после перезагрузки при наличии нескольких сетевых интерфейсов, эти имена могут поменяться. Это может доставлять некоторые проблемы, при настройке, например, межсетевого экрана через firewalld или iptables. В связи с этим начиная с RedHat 7 и CentOS 7, решено было назначать имена сетевых интерфейсов на основе иерархии различных схем именования. По умолчанию systemd будет поочередно применять схемы именования, остановившись на первой доступной и применимой. Имена присваиваются в автоматическом режиме, остаются неизменными даже если аппаратные средства добавлены или изменены. С другой стороны, такие имена интерфейсов менее читабельны, например, enp5s0 или ens3, чем традиционные eth0 и eth1.

Можно вернуться к стандартному имени интерфейса Linux с помощью следующих действий.

Отредактируйте файл /etc/default/grub:

В строку GRUB_CMDLINE_LINUX нужно добавить:

net.ifnames=0 biosdevname=0

Пример полной строки:

GRUB_CMDLINE_LINUX="consoleblank=0 fsck.repair=yes crashkernel=auto nompath selinux=0 rhgb quiet net.ifnames=0 biosdevname=0"

Обновите конфигурацию grub:

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

И заменить значение DEVICE:

Сохраните файл, перезагрузите сервер и проверьте все ли в порядке:

Интерфейс теперь называется eth0.

Настройка шлюза по-умолчанию в CentOS 8

Если есть необходимость поменять шлюз по умолчанию, или задать его при его отсутствии, то это легко делается. Для начала вам необходимо посмотреть текущие параметры, кто в вашей системе шлюз по умолчанию, для этого есть старая, добрая команда:

netstat -nr

Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.253.2 0.0.0.0 UG 0 0 0 ens36
192.168.31.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
192.168.253.0 0.0.0.0 255.255.255.0 U 0 0 0 ens36

В итоге в моем примере есть основной шлюз 0.0.0.0 192.168.235.2. Напоминаю, что в системе может быть только один шлюз по умолчанию.

Если хотите поменять его, то для этого вы можете ввести команду:

route add default gw 192.168.31.1

Если нужно удалить шлюз или маршрут, то для этого есть ключ del.

route del default gw 192.168.31.1

Пример: разрешаем ssh на нестандартном порте

Давайте разрешим доступ к серверу по ssh на порте 2234/tcp, а не на 22/tcp, как по-умолчанию. Попутно чуть-чуть коснемся selinux.

Сначала посмотрим, что вообще разрешено постоянно на нашем сервере:

# firewall-cmd —permanent —list-all
public (default)
  interfaces:
  sources:
  services: ssh dhcpv6-client
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

Я не использую пока ipv6, поэтому сразу уберу соотв. правило из firewalld:

# firewall-cmd —permanent —zone=public —remove-service=dhcpv6-client

Разрешим на постоянной основе (чтобы после перезагрузки не потерлось) соединение на порт 2234/tcp (на него повесим sshd):

# firewall-cmd —permanent —zone=public —add-port=2234/tcp

Перезагрузим правила:

# firewall-cmd —reload

Проверим:

# firewall-cmd —zone=public —list-ports
2234/tcp

Ок, порт открыт. Редактируем конфиг sshd:

# nano /etc/ssh/sshd_config

port 2234

# systemctl restart sshd.service

Но SELinux, которую вы, надеюсь, не отключали, не даст подключиться к ssh на нестандартном порте (порт 2234/tcp для sshd — нестандартный). Вы можете этот шаг пропустить и проверить, как сработатет защита SELinux, а можете сразу все настроить:

# yum provides semanage
# yum install policycoreutils-python
# semanage port -a -t ssh_port_t -p tcp 2234

Вот теперь все ок. Проверяем подключение по ssh на новом порте. Если все ок, закрываем доступ к порту 22:

# firewall-cmd —permanent —zone=public —remove-service=ssh
# firewall-cmd —reload

Смотрим, что получилось:

# firewall-cmd —list-all
public (default, active)
  interfaces:
  sources:
  services:
  ports: 2234/tcp
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

Вот и все.

Step 2 Configuring IPtables/Firewalld rules

Next we need to start services of IPtables/firewalld on our systems to configure the NATting rule,

$ systemctl start firewalld              (For Centos/RHEL 7)
$ service iptables start                     (For Centos/RHEL 6)

Next step is to configure the NATting rule on the firewall. Run the following command,

CentOS/RHEL 6$ iptables -t nat -A POSTROUTING -o XXXX -j MASQUERADE$ service iptables restartCentOS/RHEL 7
$ firewall-cmd —permanent —direct —passthrough ipv4 -t nat -I POSTROUTING -o XXXX -j MASQUERADE -s 192.168.1.0/24
$ systemctl restart firewalld

Here, XXXX is the name of the network interface with the WAN IP address. This completes configuration of Linux machine as router, next we will test our router after configuring a client machine.

Step 3 Configuring the client machine

To test the router, we need to assign the internal (LAN) IP address as gateway on our client machine, its 192.168.1.1 in our case. So whether using a Windows machine or linux machine as client, make sure that we have 192.168.1.1 as our gateway. Once that’s done, open terminal/CMD run a ping test against a website to make sure that internet is accessible on client machine,

$ ping google.com

We can also check by browsing websites via our web browser.

If you think we have helped you or just want to support us, please consider these :-

Connect to us: | | Google Plus

Donate us some of you hard earned money:

Linux TechLab is thankful for your continued support.

Установка и подключение брандмауэра для запуска при загрузке

На некоторых дистрибутивах Linux, включая многие образы CentOS 7, FirewallD установлен по умолчанию. Однако, если необходимо установить FirewallD, выполните следующую команду:

sudo yum install -y firewalld

После установки FirewallD необходимо включить сервис и перезагрузить сервер. Помните, что если FirewallD включен, то при загрузке он сразу запустится. Поэтому необходимо создавать правила брандмауэра и тестировать их до конфигурирования автоматического запуска брандмауэра во избежание возможных проблем.

sudo systemctl enable firewalld 
sudo reboot

При перезапуске сервера брандмауэр будет запущен и поместит сетевые интерфейсы в сконфигурированные зонаы (или переключится на зону по умолчанию), любые правила, связанные с зоной/зонами, будут применены к соответствующим интерфейсам.

Проверить, что сервис запущен и доступен можно с помощью:

sudo firewall-cmd --state

Ответ:

running

Теперь брандмауэр запущен и работает согласно конфигурации по умолчанию.

Сохранение статических маршрутов

Статические маршруты указываются в файлах /etc/sysconfig/network-scripts/route-IFNAME с добавлением имени интерфейса

Вариант 1

1
2
3
4
5

cat/etc/sysconfig/network-scripts/route-eth1

192.168.0.0/16via192.168.11.1

10.10.0.0/16via192.168.11.1

 

Вариант 2

1
2
3
4
5
6
7
8
9
10
11
12

cat/etc/sysconfig/network-scripts/route-eth1

ADDRESS0=192.168.0.0

NETMASK0=255.255.0.0

GATEWAY0=192.168.11.1

ADDRESS1=172.16.0.0

NETMASK1=255.196.0.0

GATEWAY1=192.168.11.1

ADDRESS2=10.10.0.0

NETMASK2=255.255.0.0

GATEWAY2=192.168.11.1

 

Оба варианта имеют право на существование, но первый немного лаконичней. После чего необходимо перезагрузить демон сети

Создание набора правил с помощью FirewallD

В следующем примере мы покажем, как настроить брандмауэр, если у вас был веб-сервер. Мы предполагаем, что ваш сервер имеет только один интерфейс , и вы хотите разрешить входящий трафик только по портам SSH, HTTP и HTTPS.

  1. Измените зону по умолчанию на dmz

    Мы будем использовать зону dmz (демилитаризованную), потому что по умолчанию она разрешает только SSH-трафик. Чтобы изменить зону по умолчанию на dmz и назначить ее интерфейсу , выполните следующие команды:

  2. Откройте порты HTTP и HTTPS:

    Чтобы открыть порты HTTP и HTTPS, добавьте в зону dmz постоянные правила обслуживания:

    Немедленно внесите изменения в силу, перезагрузив брандмауэр:

  3. Проверить изменения

    Чтобы проверить параметры конфигурации зоны dmz, введите:

    Приведенный выше вывод говорит нам, что dmz является зоной по умолчанию, применяется к интерфейсу и что порты ssh (22), http (80) и https (443) открыты.

Онлайн курсы по Mikrotik

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте .

Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области. Особенности курсов:

  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.

Как выполняется в CentOS настройка сети из консоли

Для начала нужно понять, какие интерфейсы доступны. Для этого вводим команду «ip a» и получаем ответ.

В нашем случае доступно 2 интерфейса:

lo – локальная петля;

enp0s3 – сетевой адаптер Ethernet.

Дальше в CentOS настройка сетевого интерфейса выполняется через конфигурационные файлы, названия которых начинается с приставки «ifcfg». Найти их можно в каталоге /etc/sysconfig/network-scripts/

Рассмотрим процесс на примере файла ifcfg-enp0s3.

Откройте его в редакторе nano (при желании можно использовать другой редактор).

nano /etc/sysconfig/network-scripts/ifcfg-enp0s3

Увидите несколько параметров.

DEVICE — название сетевого интерфейса.

TYPE — тип интерфейса.

BOOTPROTO — способ назначения IP-адреса.

ONBOOT — запуск интерфейса при включении сервера.

IPADDR — IP-адрес.

NETMASK — маска.

GATEWAY — шлюз.

Эти параметры нужно подкорректировать, укажите следующие значения.

DEVICE=enp0s3

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.0.0

NETMASK=255.255.255.0

GATEWAY=192.168.0.1

DNS1=8.8.8.8

Сохраните изменения с помощью сочетания клавиш «Ctrl+X», затем нажмите «Y». Перезапустите сеть.

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

# cp /etc/sysconfig/network-scripts/ifcfg-eno2 /etc/sysconfig/network-scripts/ifcfg-eno3

# vi /etc/sysconfig/network-scripts/ifcfg-eno3

# systemctl restart network

Предварительная настройка сервера

Любую настройку сервера я рекомендую начинать с обновления:

# yum -y update

После этого я устанавливаю mc, так как привык к нему и постоянно пользуюсь:

# yum -y install mc

Дальше отключаем selinux. Находим файл /etc/sysconfig/selinux и редактируем его:

# mcedit /etc/sysconfig/selinux

Приводим строку с соответствующим параметром к следующему виду:

SELINUX=disabled

Чтобы применить изменения, перезагружаем сервер:

# reboot

Более подробно о базовой настройке сервера CentOS 7 читайте отдельно. Мы же двигаемся дальше.

Теперь настроим сеть. Я очень подробно рассмотрел вопрос настройки сети в CentOS 7 в своем отдельном материале. Рекомендую с ним ознакомиться. Здесь же я кратко выполню необходимые команды, без пояснений.

Сначала удаляем NetworkManager. Он нам не понадобится, выполним все настройки вручную. Иногда он может вызывать непонятные ошибки, я предпочитаю им не пользоваться:

# systemctl stop NetworkManager.service
# systemctl disable NetworkManager.service

Теперь включаем классическую службу сети в CentOS 7:

# systemctl enable network.service

Настраиваем сетевые интерфейсы:

# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0

HWADDR=00:15:5D:01:0F:06
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
NAME="eth0"
UUID="4e65030c-da90-4fb8-bde4-028424fe3710"
ONBOOT="yes"
# mcedit /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
HWADDR=00:15:5d:01:0f:12
TYPE=Ethernet
ONBOOT=yes
IPADDR=192.168.10.1
NETMASK=255.255.255.0

Перезапускаем службу сети:

# systemctl restart network.service

Смотрим, что получилось:

# ip a

Вы настраивайте сеть в зависимости от своих условий. Если внешний адаптер получает настройки не по dhcp, как у меня, а в статике, то не забудьте настроить шлюз по-умолчанию и dns сервер. Как это сделать написано в моей статье о сетевых параметрах, ссылку на которую я приводил выше.

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

Привязка интерфейса к карте

При наличии нескольких сетевых карт возникает вопрос о порядке их нумерации. В CentOS 6 эта задача возложена на подсистему обнаружения и конфигурации устройств — udev.

Конфигурационный файл обновляется автоматически при первом обнаружении очередной сетевой карты и находится в файле /etc/udev/rules.d/70-persistent-net.rules файл состоит из строк такого содержания:

  1. PCI device 0x1af4:0x1000 (virtio-pci)
    SUBSYSTEM==»net», ACTION==»add», DRIVERS==»?*», ATTR{address}==»52:54:00:29:24:1e», ATTR{type}==»1″, KERNEL==»eth*», NAME=»eth0″
    Видно, что нумерация опирается на аппаратный (MAC) адрес карты. Если в компьютере заменить карту, то интерфейс eth0 станет недоступным, а новая карта получит имя eth1. Если есть желание вручную назначить имена картам, то можно отредактировать этот файл, выставив желаемые соответствия между MAC адресами именами интерфейсов (возможно потребуется перезагрузка)

IP forwarding

NAT uses IP forwarding and by default it’s not enabled in the kernel parameters. First we need to check if IP forwarding is enabled and if it’s not, we need to enable it.

To check if IP forwarding is enabled:

CentOS/RHEL:

$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

Debian:

jensd@deb:~$ sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

The above outputs shows that IP forwarding is not enabled.

To enable IP forwarding persistently (survives a reboot):

CentOS/RHEL:

$ echo "net.ipv4.ip_forward = 1"|sudo tee /etc/sysctl.d/99-ipforward.conf
net.ipv4.ip_forward = 1

Debian:

jensd@deb:~$ sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf

To activate the changes immediately:

CentOS/RHEL:

$ sudo sysctl -p /etc/sysctl.d/99-ipforward.conf
net.ipv4.ip_forward = 1

Debian:

jensd@deb:~$ sudo sysctl -p
net.ipv4.ip_forward = 1

Theoretical explanation

To above scenario is better known as port forwarding and it allows you to forward an incoming packet to another destination. That destination can be another port or IP-address. With the scheme under here, I will try to make things a little more visual and explain how port forwarding works:

The left part of the scheme shows the original situation: the client connects to service A, running on server A (ip: 10.1.1.1). Incoming packets come through service A on server A and the outgoing packets go back to the original source IP, client A. The goal of the NAT-setup is to forward the traffic to service A running on server B (ip:10.2.2.2) without any modifications to client A. Our new setup needs to be transparent for the client.

The right part of the scheme shows our goal: the client still connects to TCP port 9999 to the IP of server A (10.1.1.1) so nothing changed on that side. As soon as a TCP packet with destination port 9999 arrives at server A, it should be forwarded to server B (ip: 10.2.2.2). Before redirecting the TCP-packet to the other machine, the packet needs to be modified so that it get’s sent back to server A before sending back to the original host.

To completely understand this process, we need to take a deeper look into how Iptables works. When a packet passes through Iptables, it passes a set of chains. Decisions made by those chains are called rules and that’s basically how you configure Iptables.

Overview of the chains used by Iptables

For our setup to work, we need to add a DNAT and SNAT rule (Prerouting and Postrouting). The first one will make sure that the packet gets routed to the other host (ip: 10.2.2.2) and the second one will make sure that the source address of the packet is no longer the original one but the one of the machine who performed the NAT. That way, the packet will be sent back to it’s original source via the host which owns ip 10.1.1.1.

Предварительная настройка сервера

Любую настройку сервера я рекомендую начинать с обновления:

# yum -y update

После этого я устанавливаю mc, так как привык к нему и постоянно пользуюсь:

# yum -y install mc

Дальше отключаем selinux. Находим файл /etc/sysconfig/selinux и редактируем его:

# mcedit /etc/sysconfig/selinux

Приводим строку с соответствующим параметром к следующему виду:

SELINUX=disabled

Чтобы применить изменения, перезагружаем сервер:

# reboot

Более подробно о базовой настройке сервера CentOS 7 читайте отдельно. Мы же двигаемся дальше.

Теперь настроим сеть. Я очень подробно рассмотрел вопрос настройки сети в CentOS 7 в своем отдельном материале. Рекомендую с ним ознакомиться. Здесь же я кратко выполню необходимые команды, без пояснений.

Сначала удаляем NetworkManager. Он нам не понадобится, выполним все настройки вручную. Иногда он может вызывать непонятные ошибки, я предпочитаю им не пользоваться:

# systemctl stop NetworkManager.service
# systemctl disable NetworkManager.service

Теперь включаем классическую службу сети в CentOS 7:

# systemctl enable network.service

Настраиваем сетевые интерфейсы:

# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0

HWADDR=00:15:5D:01:0F:06
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
NAME="eth0"
UUID="4e65030c-da90-4fb8-bde4-028424fe3710"
ONBOOT="yes"
# mcedit /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
HWADDR=00:15:5d:01:0f:12
TYPE=Ethernet
ONBOOT=yes
IPADDR=192.168.10.1
NETMASK=255.255.255.0

Перезапускаем службу сети:

# systemctl restart network.service

Смотрим, что получилось:

# ip a

Вы настраивайте сеть в зависимости от своих условий. Если внешний адаптер получает настройки не по dhcp, как у меня, а в статике, то не забудьте настроить шлюз по-умолчанию и dns сервер. Как это сделать написано в моей статье о сетевых параметрах, ссылку на которую я приводил выше.

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

Настройка сети CentOS 8 через Nmcli

nmcli — это интерфейс командной строки NetworkManager, он идет по умолчанию в CentOS 8, это новое и более удобное средство по настройке сети в centOS 8. Как я показывал выше вы можете посмотреть список ваших интерфейсов командой ip addr show, у меня это ens33 и ens36. Чтобы получить более подробную информацию о сетевом интерфейсе ens33, вы можете выполнить следующую команду:

На выходе ужен больше полезных данныж, тут видно и статус подключения, Ip-адрес, шлюз, DNS, маску, MTU:

Давайте теперь для интерфейса настроим сеть вот с такими параметрами:

  • Ip — поменяем на 192.168.31.10/24
  • Шлюзом сделаю 192.168.31.131
  • DNS 192.168.31.231

Первой командой мы зададим или поменяем текущий IP-адрес.

далее зададим шлюз:

Теперь нужно перезапустить ваш сетевой интерфейс или сеть centOS 8. Сделать, это можно командой:

Эти изменения также будут сохранены в файле /etc/ sysconfig/network-scripts/ens33.

Если нужно настроить дополнительнвый IP-адрес, то введите

Добавить дополнительный DNS:

Как видите утилита nmcli позволяет очень быстро задать статический IP или произвести полную настройку сети в CentOS 8.

Преимущества firewalld

Основное преимущество — вы немного абстрагируетесь от цепочек iptables.Для включения перенаправления портов не придется думать про PREROUTING или POSTROUTING в дополнение к FORWARD. Вам дается «API от iptables от производителя», что-то в этом роде

Если вы включили nat, то неважно, где конкретно (под каким порядковым номером текущих правил) размещено правило. Вы просто указываете — включи nat на eth0

И без глупостей ;) Это может быть удобно, если надо организовать web интерфейс управления брандмауэром.

Есть возможность проверить статус (например, включен nat или нет!). И также использовать это в своих скриптах, в логике вашего приложения, например. Я не знаю, как в iptables создать именно запрос статуса (вкл/выкл). Можно, конечно, что-то в роде iptables -L -t nat | grep ‘…’, но согласитесь, это немного не то же самое, что выполнить ‘firewall-cmd —zone=external —query-masquerade’. Есть, к примеру, сотни VM с CentOS, в которых могут немного отличаться названия wan интерфейсов или еще что-то в этом роде. А так вы имеете универсальный командлет, который даст ожидаемый результат на разных машинах.

Сохранение настроек runtime и permanent

Конфигурация Firewalld состоит из двух частей. Первая применяется сразу после выполнения команды и продолжает работать в ядре. Изменения не сохраняются после перезагрузки системы или службы firewalld. Вторая, постоянная конфигурация записывается и хранится в конфигурационных файлах и загружается вместе с firewalld после перезагрузки системы.

Для того, чтобы сразу записать команду в постоянную конфигурацию, перед командой следует написать опцию , например:

# firewall-cmd --permanent --zone=public --add-service=http

Как только вы закончили ввод одной или более команд с этой опцией, необходимо их применить. Применение настроек permanent осуществляется командой:

# firewall-cmd --reload

Для большинства runtime команд (без ) выполнять эту строчку не требуется, они начинают работать сразу после выполнения команды для файервола. Но, напоминаем, если вы не пишете перед другими опциями , они по умолчанию не сохранятся в постоянной конфигурации.

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: