- Полезные команды по работе с сетью в CentOS
- Узнать Gateway
- Ошибки и предупреждения
- Анализ логов сетевых подключений NAT в Linux
- Проверка наличия драйверов сетевой карты
- Настройка DNS
- Как настроить 2 IP адреса на одном интерфейсе
- Network
- Настройка параметров сети с помощью файлов конфигураций
- расположение конфигурационных файлов
- структура конфигурационных файлов
- ifcfg-ethX
- resolv.conf
- route-ethX
- Как настроить несколько IP адресов на одном сетевом интерфейсе CentOS?
- Hostname
- Шаг 1. Проверка текущего hostname
- Шаг 2. Смена hostname
- Изменить маршрут по умолчанию
- Как настроить сеть в консоли
- Как узнать, какие сетевые интерфейсы установлены
- Как настроить сеть
- Динамическая настройка параметров сети
- # Как настроить адрес по DHCP в CentOS 7
- Установка ifconfig
- Настройка маршрутизации
- добавление маршрутов
- просмотр таблицы маршрутов
- удаление маршрутов
- Сетевые настройки на сервере CentOS 7
- Как получить сетевые настройки по DHCP
- Схема локальной сети со шлюзом доступа в Интернет, типы NAT
- Установка статического IP
- Как отключить IPv6 в CentOS?
- Доступ из локальной сети в Интернет
- Ручная настройка конфигурационного файла сетевого интерфейса в CentOS
- Настройка статического IP адреса в CentOS
- Получение динамического IP адреса для интерфейса через DHCP
- Получить DHCP адрес
- Использование сетевых утилит traceroute, dig в CentOS
- Изменить IP
- Создать новый сетевой адаптер
- Как добавить статический маршрут в CentOS 7
- Примеры файлов
- Включение / отключение сетевого интерфейса
- Виртуальный интерфейс
- Как настроить DNS в CentOS 7
- Как указать DNS сервера для сетевого интерфейса в CentOS?
- Просмотр текущей конфигурации сети
- # System config network tui в CentOS 7
- NetworkManager
- Validating Your Network Settings
- Настройка Destination NAT и port forwarding
- Как узнать IP адрес в CentOS 7
- Либо второй вариант определения локального ip адреса:
- # Как изменить hostname в CentOS 7
- Изменить маршрут в Linux
- Как изменить hostname в CentOS 7
- Перезагрузка сетевого сервиса
- Настройка нескольких сетевых интерфейсов в CentOS
Полезные команды по работе с сетью в CentOS
-
ifdown eth1
— отключить указанный сетевой интерфейс. -
ifup eth1
– поднять указанный сетевой интерфейс. -
ifconfig
– проверить информацию о всех интерфейсах. -
ifconfig -a | grep ether | gawk '{print $2}'
— команда для вывода MAC-адресов интерфейсов -
ip a | grep ether | gawk '{print $2}'
— тоже самое, только через утилиту ip a -
service network restart
или
systemctl restart network
– перезапустить сервис network с помощью systemctl -
systemctl restart NetworkManager.service
– перезапустить NM -
ip route
или
ip route show
— посмотреть таблицу маршрутизации (https://winitpro.ru/index.php/2020/04/13/nastrojka-marshrutov-v-linux/) -
ping host
– пропинговать указанный хост -
whois domain
– получить информацию whois для домена -
dig domain
– получить DNS информацию о домене
Узнать Gateway
Чтобы узнать текущий IP адрес шлюза (gateway) выполните
default via 10.0.2.1 dev enp0s3 proto dhcp metric 100
IP адрес шлюза 10.0.2.1
Ошибки и предупреждения
sudo systemctl restart networking
Job for network.service failed because the control process exited with error code. See «systemctl status network.service» and «journalctl -xe» for details.
systemctl status network.service
Анализ логов сетевых подключений NAT в Linux
Одним из моментов, для повышения уровня безопасности после настройки port forwarding на наш личный сервер из внешней сети, будет сборка и анализ логов внешний подключений. Ведь кроме нас, этим доступом может попробовать воспользоваться злоумышленник.
Сначала включим запись в лог файл /var/log/messages все попытки соединений на используемый нами нестандартный RDP порт:
iptables -I INPUT 1 -p tcp --dport 13389 -m state --state NEW -j LOG --log-prefix "NEW RDP SESSION"
Подключимся к нашему личному серверу, чтобы в логе появилась запись. Теперь отфильтруем все записи в лог файле, которые нам нужны:
kernel: NEW RDP SESSION IN= OUT=eth1 SRC=167.71.67.79 DST=84.201.168.122 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=16270 DF PROTO=TCP SPT=60836 DPT=13389 WINDOW=29200 RES=0x00 SYN URGP=0
Читать такой лог не очень удобно, тем более каждый день. Поэтому, следующим шагом, автоматизируем анализ логов, чтобы регулярно получать отчеты, на основе нашего фильтра. Для этого воспользуемся утилитой Logwatch, ее установка через стандартный менеджер пакетов yum:
yum install logwatch
Сначала попробуем сгенерировать отчет вручную:
/usr/sbin/logwatch --detail low --service iptables --range today
- —service — задает конкретный сервис, сообщения от которого нужно анализировать, в нашем случае, только от iptables;
- —range — указывает период выборки данных, today – все события за сегодня;
- —detail — степень детализация отчета (high, med, low).
По умолчанию logwatch отобразит отчет на экран, получим примерно такой вывод:
--------------------- iptables firewall Begin ------------------------ Listed by source hosts: Logged 2 packets on interface eth1 From 167.71.45.65 - 2 packets to tcp(13389) ---------------------- iptables firewall End -------------------------
Отчет работает, осталось выполнять его по расписанию, раз день и отправлять себе на email, для этого обновим команду и запишем ее в файл /etc/cron.daily/00logwatch:
Здесь добавились опции:
—output — указывает способ вывода отчета, mail – отправить на почту;
—mailto — e-mail адрес получателя отчета.
Проверка наличия драйверов сетевой карты
Чтобы узнать, загружены ли драйверы сетевой карты, запустите команду:
Если в результате Вы увидите какие-либо сообщения, содержащие текст ethX, то значит, драйверы установлены успешно, и необходимо только поднять/настроить интерфейс сетевой карты.
Настройка DNS
возможна только через файл /etc/resolv.conf (см. ниже)
Как настроить 2 IP адреса на одном интерфейсе
Если у вас появилась необходимость настроить 2 IP адреса на одном интерфейса в CentOS, то сделать это достаточно просто. Воспользуемся командой ifconfig. Для начала проверим список сетевых интерфейсов:
# ifconfigeno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 254 bytes 30173 (29.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 204 bytes 27658 (27.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (Local Loopback)
RX packets 11 bytes 940 (940.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 940 (940.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Добавим к интерфейсу eno16777728 еще один ip адрес 192.168.159.120:
# ifconfig eno16777728:1 192.168.159.120 upПроверим, что получилось:
#ifconfig
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 254 bytes 30173 (29.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 204 bytes 27658 (27.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eno16777728:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.120 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (Local Loopback)
RX packets 11 bytes 940 (940.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 940 (940.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Все в порядке, мы добавили второй ip адрес на один и тот же интерфейс. Но после перезагрузки дополнительный адрес не сохранится. Чтобы его сохранить, необходимо создать файл настроек интерфейса в папке /etc/sysconfig/network-scripts
# mcedit /etc/sysconfig/network-scripts/ifcfg-eno16777728:1Сохраняем файл, перезагружаемся и проверяем, что получилось. Второй ip адрес должен быть на месте.
Network
Проверить статус можно командой
systemctl status network
Настройка параметров сети с помощью файлов конфигураций
Если Вы хотите настроить сеть таким образом, чтобы указанные параметры сети сохранялись и после перезагрузки системы, Вам необходимо изменить конфигурационные файлы.
расположение конфигурационных файлов
Настройка параметров сети (IP адрес, маска сети, шлюз, параметры DNS) производится в файлах ifcfg-ethX, которые находятся в папке /etc/sysconfig/network-scripts.
Параметры DNS описываются также в файле /etc/resolv.conf.
Маршруты (из таблицы маршрутизации) хранятся в файлах /etc/sysconfig/network-scripts/route-ethX.
структура конфигурационных файлов
ifcfg-ethX
Файлы находятся в папке /etc/sysconfig/network-scripts.
resolv.conf
Этот файл находится в папке /etc.
route-ethX
Файлы находятся в папке /etc/sysconfig/network-scripts.
например:
192.168.5.50/24 via 192.168.0.2 dev eth0
или
5.12.35.141/16 via 192.168.1.3 dev eth1
Шлюз по умолчанию задается в файлах ifcfg-ethX. Можно также указать шлюз по умолчанию, например, следующим образом:
default via 192.168.0.1 dev eth0
В файле route-eth0 нужно указывать все маршруты с dev eth0, а в файле route-eth1 — соответственно, все маршруты с dev eth1.
Как настроить несколько IP адресов на одном сетевом интерфейсе CentOS?
# nano /etc/sysconfig/network-scripts/ifcfg-eth0
И измените его следующим образом:
# Generated by parse-kickstart UUID="b8bccd4c-fb1b-4d36-9d45-044c7c0194eb" IPADDR1="*.*.*.*" IPADDR2="*.*.*.*" GATEWAY="*.*.*.*" NETMASK="255.255.255.0" BOOTPROTO="static" DEVICE="eth0" ONBOOT="yes" DNS1=77.88.8.8 DNS2=8.8.8.8 DNS3=8.8.4.4
GATEWAY — основной шлюз
Либо создайте alias к вашему основному файлу конфигурации:
# nano /etc/sysconfig/network-scripts/ifcfg-eth0:1
И добавьте несколько строк, без основного шлюза:

После всех настроек нужно выполнить перезапуск сети:
Restarting network (via systemctl): [ OK ]
В Windows тоже можно настроить несколько IP адресов (алиасов) на одном интерфейсе.
Hostname
Шаг 1. Проверка текущего hostname
Чтобы получить информацию о хосте выполните
Static hostname: localhost.localdomain
Icon name: computer-vm
Chassis: vm
Machine ID: a714bee8007d114a84177dbb15072f2e
Boot ID: b02d9498c1764a338c781672aac1be29
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.el7.x86_64
Architecture: x86-64
Нужная информация находится в первой строке
Static hostname: localhost.localdomain
Шаг 2. Смена hostname
Так как CentOS 7 поддреживает только Fully Qualified Domain Names (FQDNs),
советую тщательно проверить hostname, который вы планируете использовать.
- Строчные буквы от a до z
- Цифры от 0 до 9
- Точки и дефисы
- Hostnames может быть от 2 до 63 символов
- Hostnames должен начинаться и заканчиваться цифрой или буквой
hostnamectl set-hostname my.new-hostname.server
Подробности в статье
hostname

Изменить маршрут по умолчанию
Вы можете удалить маршрут по-умолчаню с помощью команды ip route del:
# ip route del default via 192.168.1.1 dev enp0s3
Чтобы указать новый маршрут по-умолчанию в CentOS используется команда:
# ip route add default via 192.168.1.2
(маршрут через IP адрес шлюза)
# ip route add default via enp0s3
(маршрут через имя устройства)
Чтобы изменить параметры маршрута по умолчанию, используется команда:
# ip route replace default via 192.168.1.2

Как настроить сеть в консоли
Настроить сеть можно не только на этапе установки, но и после неё. Настройка сети CentOS через консоль пригодится, если вы пропустили этап настройки при установке или хотите изменить существующие параметры сети.
Как узнать, какие сетевые интерфейсы установлены
Чтобы посмотреть список установленных сетевых интерфейсов, перейдите в консоль через пользователя root и введите команду:
Результат выполнения каждой из команд в консоли представлен ниже. В примере команда ip a показывает, что установлено два интерфейса — lo (локальная петля) и enp0s3 (сетевой адаптер Ethernet). Заметьте, что команда ls отображает только названия интерфейсов. Имена интерфейсам назначаются автоматически.

Как настроить сеть
Рассмотрим настройку сети для сетевого интерфейса, например, с названием enp0s3.
В CentOS в каталоге /etc/sysconfig/network-scripts/ хранятся конфигурационные файлы (Network Config) с настройками всех сетевых интерфейсов. Эти файлы начинаются с приставки ifcfg-. Так, для рассматриваемого сетевого интерфейса название файла ifcfg-enp0s3, а путь до него — /etc/sysconfig/network-scripts/ifcfg-enp0s3.
Чтобы настроить сеть для интерфейса:
Для начала вы можете посмотреть сетевые настройки с консоли. Откройте конфигурационный файл с помощью текстового редактора nano (вы можете использовать другой удобный вам редактор):
nano /etc/sysconfig/network-scripts/ifcfg-enp0s3Где enp0s3 — название сетевого интерефейса.
Содержимое конфигурационного файла зависит от сетевого интерфейса. В файле могут быть указаны разные параметры сети. Файл выглядит следующим образом:

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.8DEVICE — имя настраиваемого сетевого интерфейса;
ONBOOT — запуск интерфейса при старте сервера: yes (запускать автоматически), no (запускать вручную);
NETMASK — маска подсети;
GATEWAY — шлюз для доступа к интернету;
DNS1 (а также DNS2, DNS3) — DNS-серверы — можно добавить несколько.
Сохраните изменения и выйдите из редактора. Для этого нажмите Ctrl+X, затем Y.
Затем необходимо перезапустить сеть. Если у вас CentOS 7, введите команду:
sudo systemctl restart networkingЕсли у вас CentOS 8, введите команду:
Готово, после того, как произойдет перезапуск сети, сеть будет настроена. Мы рассмотрели, как происходит в CentOS настройка сети из консоли.
VPS с установленной CentOS
Закажите сервер с чистой CentOS или панелью управления ISPmanager всего за пару минут.
Заказать VPS c Centos
Динамическая настройка параметров сети
Обратите внимание: в данном случае настройки сети будут применяться сразу же, но они не сохранятся после перезагрузки!
# Как настроить адрес по DHCP в CentOS 7
Предположим что у вас сетевая карта настроена на статический IP, а вы хотите получать настройки по DHCP. Тут будем действовать в обратном порядке. переходим в папку /etc/sysconfig/network-scripts и открываете файл на редактирование с названием вашей сетевой картой. Название сетевой можно посмотреть командой ifconfig или ip addr. Находим там и удаляем параметры DNS, IPADDR, PREFIX, GATEWAY а в параметре BOOTPROTO указываем значение «dhcp».
Для немедленного применения изменений перезапустим сеть:
# /etc/init.d/network restart
Проверяем, все ли мы сделали верно:
Установка ifconfig
yum provides ifconfig
yum whatprovides ifconfig
ifconfig входит, например, в состав net-tools
sudo yum install net-tools
Настройка маршрутизации
добавление маршрутов
просмотр таблицы маршрутов
Для просмотра таблицы маршрутизации запустите команду:
netstat -rn
или
route -n
удаление маршрутов
Сетевые настройки на сервере CentOS 7
Первый раз с сетевыми настройками сервера CentOS мы сталкиваемся, когда производим установку. На экране первоначальной настройки есть отдельный пункт, касающийся настройки сетевых интерфейсов:

Зайдя в него мы видим список подключенных сетевых карт. Каждую из них можно включить соответствующим ползунком (пункт 1 на картинке). При активировании интерфейса он автоматически получает настройки по dhcp. Результат работы dhcp можно посмотреть тут же. Если вас не устраивают эти настройки, их можно отредактировать, нажав configure (пункт 3 на картинке). Здесь же можно задать hostname (пункт 2 на картинке):

Открыв окно дополнительный настроек Ehernet, вы сможете изменить имя сетевого интерфейса, указать настройки IP (пункт 1 на картинке), выбрать ручные настройки (пункт 2 на картинке), назначить ip адрес (пункт 3 на картинке), установить dns сервер (пункт 4 на картинке) и сохранить сетевые настройки (пункт 5 на картинке):

После выполнения остальных настроек начнется установка. После установки у вас будет сервер с указанными вами сетевыми настройками.
Теперь рассмотрим другую ситуацию. Сервер, а соответственно и конфигурацию сети, производили не вы, а теперь вам надо ее посмотреть либо изменить. В вашем распоряжении консоль сервера, в ней и будем работать. Если у вас установка производилась с дистрибутива minimal, то при попытке посмотреть сетевые настройки с помощью команды ifconfig в консоли вы увидите следующее:
-bash: ifconfig: command not foundили в русской версии:
-bash: ifconfig команда не найденаДля работы с ifconfig и прочими сетевыми утилитами необходимо установить пакет net-tools. Сделаем это:
# yum -y install net-tools.x86_64Теперь можно увидеть настройки сети:
# ifconfigeno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
inet6 fe80::20c:29ff:fe7d:593f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 319 bytes 36709 (35.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 256 bytes 148817 (145.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 6 bytes 624 (624.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6 bytes 624 (624.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Если у вас нет желания устанавливать дополнительный пакет, то можно воспользоваться более простой командой ip с параметрами:
# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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: eno16777728: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:7d:59:3f brd ff:ff:ff:ff:ff:ff
inet 192.168.159.129/24 brd 192.168.159.255 scope global dynamic eno16777728
valid_lft 1709sec preferred_lft 1709sec
inet6 fe80::20c:29ff:fe7d:593f/64 scope link
valid_lft forever preferred_lft forever

По настройкам из этого файла мы получаем ip адрес по dhcp. Чтобы вручную прописать статический ip, приводим файл к следующему содержанию:

Мы изменили параметры:
BOOTPROTOс dhcp на noneDNS1 указали dns сервер IPADDR, настроили статический ip адрес PREFIX, указали маску подсети GATEWAY. настроили шлюз по-умолчанию
Чтобы изменения вступили в силу, необходимо перечитать сетевые настройки:
# /etc/init.d/network restartПроверяем, применилась ли новая конфигурация сети:
# ifconfig:
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
inet6 fe80::20c:29ff:fe7d:593f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 672 bytes 71841 (70.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 572 bytes 290861 (284.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Все в порядке, новые настройки сетевого интерфейса установлены.
Как получить сетевые настройки по DHCP
Теперь рассмотрим обратную ситуацию. Допустим, у вас сетевая карта имеет какие-то настройки, установленные вручную. Но вы хотите, чтобы ваш компьютер получал настройки сети по dhcp в качестве клиента . Для этого вам нужно произвести операцию, обратную той, что мы делали раньше. То есть открываем файл /etc/sysconfig/network-scripts/ifcfg-eth0 и удаляем там строки с параметрами DNS, IPADDR, PREFIX, GATEWAY а в параметре BOOTPROTO указываем значение «dhcp». Сохраняем файл и перезапускаем сеть:
# /etc/init.d/network restartЗатем проверяем, получил ли наш client по dhcp настройки.
Схема локальной сети со шлюзом доступа в Интернет, типы NAT
NAT (Network Address Translation) – трансляция IP адресов, это механизм, позволяющий подменять адрес источника и назначения в заголовке IP пакетов, при их прохождении через маршрутизатор, т.е. между разными сетями.
Настраивать NAT будем между внутренней сетью с адресацией 10.2.0.0/24 и внешней сетью Интернет, двух видов:
- source NAT – это подмена IP адреса источника, в нашем случае, для организации выхода в Интернет через один публичный IP адрес нескольких клиентов.
- destination NAT — подмена IP адреса назначения, в нашем случае, для обеспечения доступа из внешней сети Интернет через публичный IP адрес к серверам внутренней сети.
Определим элементы сети (рисунок 1), между которыми будет организован NAT:
- gw-server – сервер шлюз, т.е. наш CentOS Linux сервер, который предоставляет доступ за пределы внутренней сети. У него два интерфейса, первый eth1(10.2.0.1) во внутренней сети, второй eth0(84.201.168.122) с публичным IP адресом и доступом в Интернет;
- web-server01 – веб сервер внутренней сети, IP адрес 10.2.0.11;
- my-server01 – личный сервер внутренней сети, IP адрес 10.2.0.12.

Примечание: для серверов внутренней сети web-server01 и myserver01 маршрут по умолчанию установлен на интерфейс eth1(10.2.0.1) сервера gw-server01.
Установка статического IP
nmcli conn show
NAME UUID TYPE DEVICE
enp0s3 64486a76-a4b0-4693-9110-205da942c9c5 ethernet enp0s3
enp0s8 fc26857f-4cb0-3756-a7fa-95ec246b3981 ethernet enp0s8
Настроим статический IP адрес для enp0s8
Настройки сети хранятся в директории
Отредактировать нужно файл
ifcfg-enp0s8
Основные параметры:
TYPE — тип соединения, проводное (Ethernet), беспроводное(Wired) и т д;
BOOTPROTO — способ получения IP адреса, static, dhcp или none;
NAME — имя соединения;
DEVICE — имя сетевого интерфейса;
ONBOOT — необходимо ли запускать при старте системы;
IPADDR — IP адрес, который будет использован для этого компьютера;
GATEWAY — шлюз для доступа к интернету;
NETMASK — маска сети;
DNS1 — сервер для разрешения доменных имен DNS.
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
Для DHCP, который, скорее всего, стоит по умолчанию будет что-то
Нужно именить BOOTPROTO на none и добавить несколько строк
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
# Server IP #
# Subnet #
# Defautl Gateway #
# DNS Servers #
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=40a957b1-90fd-428c-9e99-df7849e1d104
DEVICE=enp0s3
ONBOOT=yes
sudo systemctl restart network
Как отключить IPv6 в CentOS?
# netstat -tulnp

У меня сервер тестовый, поэтому ipv6 используется только для sshd и cronyd. Это можно определить по “:::”.
Чтобы не возникало проблем после отключения ipv6 в конфигурации сети, отключите данный протокол в сервисах, в которых они используются на вашем сервере. Например для sshd, нужно открыть конфигурационный файл:
# mcedit /etc/ssh/sshd_config
И раскомментируйте строки:
#AddressFamily any #ListenAddress 0.0.0.0
После чего перезапустите сервис:

Как видим, для sshd протокол ipv6 теперь недоступен. Проделайте аналогичные настройки со всеми сервисами.
Перейдем к отключению протокола ipv6 в настройках сети. Откройте файл /etc/sysctl.conf:
# nano /etc/sysctl.conf
И добавьте туда следующие строки:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
Сохраните файл и примените через:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
Перейдем к файлу /etc/sysconfig/network. Добавьте в него следующую конфигурацию:
NETWORKING_IPV6=no IPV6INIT=no

Из файла конфигурации сетевого интерфейса /etc/sysconfig/network-scripts/ifcfg-eth0 удалите строку:
IPV6INIT="yes"
И наконец добавим запрет на работу ipv6 в grub:
# nano /etc/default/grub
В конец строки GRUB_CMDLINE_LINUX, добавляем:
ipv6.disable=1

После всех настроек, сохраните файл и обновите grub:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Выполните перезагрузку сервера и проверьте конфигурацию сети:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 185.*.*.* netmask 255.255.255.0 broadcast 185.*.*.255 ether 52:54:00:d3:1c:3e txqueuelen 1000 (Ethernet) RX packets 10068 bytes 613092 (598.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 32 bytes 5399 (5.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Протокол ipv6 на сервере отключен.
Доступ из локальной сети в Интернет
При source NAT для серверов внешней сети, запросы от наших клиентов из внутренней сети будут выглядеть так, как будто с ними общается напрямую сервер шлюз — gw-server01.
В прошлой статье “Базовая настройка файервола Linux с помощью iptables” мы рассмотрели азы использования iptables. В этот раз, работать в iptables будем не только с таблицей filter, но и с таблицей nat. В отличие от таблицы для фильтрации трафика filter, таблица nat содержит следующие chains(цепочки):
- PREROUTING — в этой цепочке обрабатываются входящие IP пакеты, до их разделения на предназначенные для самого сервера или для передачи другому, т.е. до принятия решения о выборе маршрута для IP пакета;
- OUTPUT – цепочка предназначена для обработки IP пакетов, которые сгенерированы локально приложением на сервере. Локально сгенерированные IP пакеты не проходят цепочку PREROUTING;
- POSTROUTING — в этой цепочке обрабатываются все исходящие IP пакеты, уже после принятия решения о маршруте для IP пакета.
Отличаются и действия, выполняемые для IP пакетов, в этой таблице:
- MASQUERADE и SNAT— производит подмену IP адреса источника для исходящих пакетов. Отличием этих действий является то, что SNAT дает возможность задать конкретный IP адрес нового источника, а в случае MASQUERADE это происходит динамически;
- DNAT — производит подмену IP адреса назначения для входящих пакетов.
Важно: действие MASQUERADE и SNAT задается только для цепочки POSTROUTING, а действие DNAT только для цепочек PREROUTING или OUTPUT.
На рисунке 2 изображены этапы обработки IP пакета из внутренней сети на шлюзе gw-server01 при SNAT на iptables. IP адрес и порт назначения при этом остаются неизменными.
- IP пакет поступил на внутренний интерфейс eth1 сервера gw-server01. Так как IP назначения не принадлежит серверу gw-server01, IP пакет переходит к обработке цепочкой FORWARD.
- После прохождения цепочки FORWARD, для IP пакета определяется исходящий сетевой интерфейс, с которого он должен быть отправлен, это отмечено желтым цветом
- В конце IP пакет проходит цепочку POSTROUTING, в которой происходит подмена IP адреса источника, на IP адрес внешнего интерфейса eth0 сервера gw-server01
Приступим к настройке. Сначала нужно установить параметр ядра, который позволяет передавать пакеты между интерфейсами сервера. Для этого в файл /etc/sysctl.conf добавим переменную:
net.ipv4.ip_forward = 1
Чтобы применить изменения, выполним команду
sysctl -p /etc/sysctl.conf
здесь sysctl это команда, которая позволяет управлять параметрами ядра, ключ -p означает, что нужно считать параметры из файла.
Создадим правило в iptables, разрешающее передачу пакетов между внутренним (eth1) и внешним (eth0) интерфейсом:
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
и разрешим передавать между интерфейсами пакеты, относящиеся к уже установленным соединениям.
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
Предыдущие два правила имеет смысл создавать, только если для цепочки FORWARD по умолчанию установлена политика DROP:
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -s 10.2.0.0/24 -o eth1 -j SNAT --to-source 84.201.168.122
- —to-source должен быть адресом на интерфейсе, с которого планируется выпускать во внешнюю сеть IP пакеты;
- -s 10.2.0.0/24 задано из расчета, что внутренняя сеть 10.2.0.0/24, но это необязательный параметр, если его не указать, ограничений на источник взаимодействия не будет.
Посмотрим получившуюся конфигурацию для таблицы filter и цепочки FORWARD (вывод обрезан):
iptables -L -n -v

и конфигурацию для таблицы nat и цепочки POSTROUTING (вывод обрезан):
iptables -t nat -L -n -v


Вывод команды Connected 1.1.1.1, показывает, что подключение прошло успешно.
Ручная настройка конфигурационного файла сетевого интерфейса в CentOS
Выведем список доступных сетевых интерфейсов в системе:
# ip a
Файлы конфигурации сети вашего сервера хранятся в каталоге /etc/sysconfig/network-scripts. Эти файлы создает демон NetworkManager для каждого сетевого интерфейса. В нашем случае файл конфигурации называется ifcfg-eth0 (у вас может отличаться в зависимости от схемы именования сетевого интерфейса).
Рассмотрим основные параметры:
- DEVICE – имя сетевого адаптера, совпадает с именем в системе, у нас это eht0
- BOOTPROTO – способ назначения IP-адреса (static — статическое значение, указываем в ручную. dhcp — получить адрес автоматически)
- IPADDR – IP-адрес
- NETMASK – маска подсети
- GATEWAY – шлюз по умолчанию
- DNS1 – Основной DNS-сервер
- DNS2 — альтернативный DNS-сервер
- ONBOOT — способ запуска сетевого интерфейса (yes – автоматически, no – вручную)
- UUID – уникальный идентификатор сетевого интерфейса. Можно сгенерировать самостоятельно командой uuidgen.
- IPV4_FAILURE_FATAL – отключение сетевого интерфейса с IP-адресом v4, если он имеет неверную конфигурацию (yes – отключить, no – не отключать)
- IPV6_FAILURE_FATAL – отключение сетевого интерфейса с IP-адресом v6, если он имеет неверную конфигурацию (yes – отключить, no – не отключать)
- IPV6_AUTOCONF – разрешает или запрещает автоконфигурирование Ipv6 с помощью протокола
- IPV6_INIT – включение возможности использования адресации Ipv6(yes – адресация может использоваться, no – не используется)
- PEERROUTES – устанавливает приоритет настройки шлюза по умолчанию, при использовании DHCP
- IPV6_PEERROUTES — устанавливает приоритет настройки шлюза по умолчанию, при использовании DHCP для IPv6
Исходя из этой информации, настроим сетевой интерфейс.
Настройка статического IP адреса в CentOS
Откроем файл для редактирования:
# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0

В этом примере я указал статический IP адрес, маску подсети, шлюз и несколько DNS серверов. Включаем автозапуск интерфейса:
ONBOOT=”yes”
После всех модификаций, нужно выполнить рестарт сервиса network. Если все в порядке, вы получите такой листинг:
Restarting network (via systemctl): [ OK ]
Также можно просто перезапустить все профили подключений :
# nmcli connection reload
Получение динамического IP адреса для интерфейса через DHCP
Если ваш сервер должен получить IP адрес от DHCP севера, откройте конфигурационный файл интерфейса и измените настройки:

Получить DHCP адрес
Если нужно явно запросить у DHCP адрес выполните
sudo dhclient enp0s8
Вместо enp0s8 введите имя нужного адаптера
Использование сетевых утилит traceroute, dig в CentOS
Для диагностики сетевых подключений в CentOS полезно использовать специальные утилиты. Но если вы использовали установку minimal, то их скорее всего в системе не будет. К примеру, популярная утилита traceroute при попытке ее запуска выдаст сообщение:
# traceroute ya.ru
bash: traceroute: command not foundЕе нужно установить отдельно из репозитория:
# yum -y install tracerouteТо же самое с популярной программой dig для работы с dns серверами и записями:
# dig ya.ru
bash: dig: command not foundЧтобы эта сетевая утилита заработала, необходимо установить пакет bind-utils:
# yum -y install bind-utilsНастройка 802.1Q VLAN в CentOS 7Для поднятия тегированного интерфейса на CentOS нужно в первую очередь проверить поддержку ядром 8021q:
# modprobe 8021qЕсли сообщений об ошибке нет, значит все в порядке. Если же модуль не найден, необходимо пересобрать модули ядра, включив поддержку необходимого модуля.
Теперь создаем файл конфигурации для vlan в /etc/sysconfig/network-scripts:
# mcedit ifcfg-vlan4000Обращаю внимание на выделенное жирным. Во всех инструкциях в интернете, что мне попались, этот параметр был указан как TYPE=Ethernet, но с такой настройкой интерфейс с vlan не поднимался, появлялась ошибка:
Error: no device found for connection ‘System vlan4000’.
Только после того, как я исправил, все заработало как надо. Так что сохраняем и активируем интерфейс:
# ifup vlan4000Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
Проверяем наш vlan:
# ip l lsВсе в порядке, тегированный интерфейс поднят. По аналогии можно создать еще несколько подобных интерфейсов, не забывая изменять им имена и адреса.
На этом мой объемный материал на тему настройки сети в CentOS закончен.
Буду очень рад комментариям, замечаниям, поправкам. Они наверняка будут. Создавая подобные материалы я в первую очередь учусь сам и подтягиваю свои знания в предметной области. Тут могут быть где-то ошибки и описки, хотя я и проверяю все на живых системах во время написания руководств, но все равно возможны неточности и опечатки.
Изменить IP
Быстро изменить IP можно с помощью ifconfig
Сперва нужно установить пакет содержащий ifconfig —
по инструкции
Менять IP нужно командой
sudo ifconfig enp0s8 192.168.56.111
Вместо enp0s8 введите нужный интерфейс
Вместо 192.168.56.111 введите IP, который хотите установить
Если ваш IP был получен от DHCP сервера — сообщите ему о смене выполнив
sudo dhclient -r
Изменённый таким образом IP адрес будет сброшен DHCP сервером на тот, который ему больше нравится
после первой перезагрузки.
Если нужно поменять ещё и маску подсети — выполните
sudo ifconfig enp0s8 192.168.56.111 netmask 255.255.255.0
Создать новый сетевой адаптер
Подробный разбор этого действия вы можете изучить в статье
«Создать новый интерфейс»
Как добавить статический маршрут в CentOS 7
Для управления маршрутизацией в CentOS может понадобиться добавить статический маршрут. Сделать это достаточно просто с помощью консольной команды. Для начала проверим существующие маршруты, используя netstat:
# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728
192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728
В данном случае у нас один маршрут для адреса 0.0.0.0/0.0.0.0 шлюз используется 192.168.159.2, он же шлюз по-умолчанию. То есть по сути, статических маршрутов никаких нет. Добавим один из них.
Допустим, у нас есть подсеть 192.168.8.0 маска 255.255.255.0, трафик в эту подсеть маршрутизирует шлюз 192.168.159.5 Добавляем маршрут:
# route add -net 192.168.8.0/24 gw 192.168.159.5Проверяем, появился ли добавленный маршрут в таблицу маршрутизации:
# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728
192.168.8.0 192.168.159.5 255.255.255.0 UG 0 0 0 eno16777728
192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728Все в порядке, маршрут добавлен. Но после перезагрузки этот статический маршрут будет удален. Чтобы этого не произошло и добавленные маршруты сохранялись, необходимо их записать в специальный файл. В папке /etc/sysconfig/network-scripts создаем файл с именем route-eth0 следующего содержания:
# mcedit /etc/sysconfig/network-scripts/route-eth0
192.168.8.0/24 via 192.168.159.5
Перезагружаемся и проверяем, на месте ли маршрут:
# reboot# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728
192.168.8.0 192.168.159.5 255.255.255.0 UG 0 0 0 eno16777728
192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728
Все в порядке, статический маршрут добавлен.
Примеры файлов
Пример файла /etc/sysconfig/network-scripts/ifcfg-eth0:
Пример файла /etc/sysconfig/network-scripts/route-eth0:
Пример файла /etc/resolv.conf:
Включение / отключение сетевого интерфейса
После того, как Вы настроили сеть, она по-прежнему может бьть недоступна. Причиной может быть то, что не включен (т.е. не «поднят») сетевой интерфейс.
Включить сетевой интерфейс можно командой:
ifconfig <имя-интерфейса> up
например:
ifconfig eth0 up
Отключить сетевой интерфейс не менее просто:
ifconfig <имя-интерфейса> down
например:
ifconfig eth0 down
Виртуальный интерфейс
Виртуальный интерфейс — это alias к существующему интерфейсу. Допустим у вас есть ens192
cp /etc/sysconfig/network-scripts/ens192 /etc/sysconfig/network-scripts/ens192:0
vi /etc/sysconfig/network-scripts/ens192:0
Поменяйте там что-то, например поставьте другой IP из той же подсети
systemctl restart network
Так как виртальный интерфейс может быть только внутри той же подсети, он не даст вам возможности слушать другую сейть.
Как настроить DNS в CentOS 7
Текущие настройки dns сервера в CentOS можно посмотреть в двух местах:
- В файле с настройками сетевой карты ifcfg-eth0, которым мы ранее неоднократно редактировали.
- В файле /etc/resolv.conf
Зачем они сейчас в двух местах, я не знаю, но раньше настройки dns сервера в каких-то дистрибутивах, не помню уже точно каких, указывались только в resolv.conf, но в какой-то момент это изменилось. И все сетевые настройки стали храниться в одном файле вместе с адресом, шлюзом, маской и прочим. Если сейчас отредактировать файл resolv.conf и внести туда какие-то dns сервера, то после перезагрузки они будут заменены на значения из файла ifcfg-eth0.
Так что для того, чтобы установить параметры dns сервера, нужно отредактировать файл сетевых настроек ifcfg-eth0, добавив туда столько серверов, сколько требуется.
DNS1="192.168.159.2"
DNS2="8.8.8.8"
DNS3="8.8.4.4"Для применения настроек сохраняем файл и перезапускаем сеть, все как обычно. После перезагрузки сервера настройки dns будут записаны в файл resolv.conf
# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.159.2
nameserver 8.8.8.8
nameserver 8.8.4.4Как отключить ipv6 в CentOS 7
В настоящее время активного использования протокола ipv6 нет и в обычной работе он не нужен. Хотя нас уже много лет пугают, что свободных ip адресов уже практически не осталось, но на деле пока еще всем хватает. Так что с точки зрения практических соображений ipv6 в настоящее время на сервере не нужен и его можно отключить.
Перед отключением ipv6 необходимо на всякий случай проверить, какие программы его используют в своей работе. Это нужно для того, чтобы избежать ошибок в их работе, предварительно отключив ipv6 в конфигурациях. Для того, чтобы увидеть, какие программы висят на ipv6 интерфейсе воспользуемся командой netstat:
# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2317/master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1333/sshd
tcp6 0 0 ::1:25 :::* LISTEN 2317/master
tcp6 0 0 :::22 :::* LISTEN 1333/sshd
udp 0 0 0.0.0.0:49252 0.0.0.0:* 694/avahi-daemon: r
udp 0 0 0.0.0.0:123 0.0.0.0:* 715/chronyd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 694/avahi-daemon: r
udp 0 0 127.0.0.1:323 0.0.0.0:* 715/chronyd
udp6 0 0 :::123 :::* 715/chronyd
udp6 0 0 ::1:323 :::* 715/chronyd
Все строки с ::: это ipv6 протокол. В моем случае это sshd, postfix и chronyd. Отключим им ipv6 и оставим только ipv4.
Начнем с sshd. Открываем файл настроек /etc/ssh/sshd_config и находим строки:
#AddressFamily any
#ListenAddress 0.0.0.0Раскомментируем их и изменим. Должно получиться вот так:
AddressFamily inet
ListenAddress 0.0.0.0Теперь открываем файл настроек постфикс /etc/postfix/main.cf. Ищем там строку:
#inet_protocols = allinet_protocols = ipv4Отключаем ipv6 в chronyd. Для этого создаем файл /etc/sysconfig/chronyd и добавляем строку:
OPTIONS=-4Теперь отключаем ipv6 в CentOS. Открываем файл /etc/sysctl.conf и добавляем туда строки:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1Редактируем файл /etc/sysconfig/network, добавляя туда:
NETWORKING_IPV6=no
IPV6INIT=noПерезагружаемся и проверяем результат:
# reboot# ifconfigeno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 2301 bytes 243024 (237.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2138 bytes 1327955 (1.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Нигде нет упоминания про inet6 и адреса формата ipv6. Значит все в порядке, мы отключили ipv6 в CentOS. Теперь проверим список открытых портов:
# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2291/master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1322/sshd
udp 0 0 0.0.0.0:123 0.0.0.0:* 2453/chronyd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 697/avahi-daemon: r
udp 0 0 127.0.0.1:323 0.0.0.0:* 2453/chronyd
udp 0 0 0.0.0.0:57259 0.0.0.0:* 697/avahi-daemon: r
Все порты ipv4. Все в порядке, наша задача выполнена.
Как указать DNS сервера для сетевого интерфейса в CentOS?
Настроить DNS-сервера для вашего сервера, вы можете с помощью файла /etc/resolv.conf или указать их в настройках сетевого интерфейса. При настройке static конфигурации для сетевого интерфейса, мы уже указывали DNS-сервера, через параметры:
DNS1= DNS2= DNS3=
Установите нужные вам DNS-сервера и перезагрузите сервис network.
В файл /etc/resolv.conf, DNS-сервера прописываются автоматически при перезагрузке сервера, забирая их с файла конфигурации сети. Если же вы не указали DNS-сервера при настройке сети, пропишите их вручную в файл /etc/resolv.conf:
nameserver 77.88.8.8 nameserver 8.8.8.8 nameserver 8.8.4.4
Просмотр текущей конфигурации сети
Для того, чтобы узнать текущие параметры сети в CentOS, есть очень простой способ — запустите команду:
# System config network tui в CentOS 7
Так же для управления сетевыми интерфейсами и настройками в CentOS можно воспользоваться графической утилитой nmtui. Это сделать очень просто. Достаточно запустить ее в консоли:
# nmtui
Допустим, мы хотим изменить IP адрес через графический интерфейс, выбираем «Изменить соединение»
Меняем настройки, которые вы хотите изменить и нажимаем «ОК«.
Вот так просто через графический интерфейс можно настраивать сеть.
Если по какой то причине у вас не установлен данный пакет, то установить
его можно следующей командой:
yum install NetworkManager-tui
NetworkManager
Проверить статус можно командой
systemctl status NetworkManager
Validating Your Network Settings
Verify your network is now working with the new settings with the command:
ip a show [network_device_name]The output will display interface information based on which you can verify if the changes are live.

After reading this article, you should have successfully configured the network settings on your CentOS system. If one method seems too difficult, try another method explained in this article.
Настройка Destination NAT и port forwarding
Теперь рассмотрим обратную ситуацию. Мы хотим, чтобы клиенты снаружи имели возможность попадать на наш сайт во внутренней сети. А также нам нужно заходить на свой личный сервер (или рабочую станцию) из Интернета. Отличие этого случая не только в направлении взаимодействия, но еще и в том, что требуется перенаправить запросы на отдельные порты, 80(TCP) и 3389(TCP), при этом подменять сервер назначения и возможно, порт назначения. Эта техника называется port forwarding (проброс портов).
Сначала разрешим передачу пакетов с внешнего интерфейса (eth0) на внутренний (eth1) интерфейс:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
Это правило разрешает передавать IP пакеты между интерфейсами независимо от источника. Но можно отдельным правилом запретить подключение через NAT для отдельных IP адресов или подсетей:
iptables -I FORWARD 1 -o eth1 -s 167.71.67.136 -j DROP
Внимание: здесь в команде используется ключ –I вместо –A. Ключ –I позволяет добавить правило по определенному номеру в последовательности правил цепочки, указав индекс. Например, в команде выше, индекс единица в цепочке FORWARD, то есть, правило будет добавлено в начало цепочки. Если это правило будет добавлено в конец, оно не сработает, так как IP пакет будет обработан предыдущим правилом, разрешающим любые источники взаимодействия, и на этом его прохождение по цепочке FORWARD будет завершено.
Теперь перенаправим все соединения на порт 80 интерфейса внешней сети(eth0) на IP адрес веб сервера внутренней сети web-server01:
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to-destination 192.168.0.11
—to-destination — должен быть IP адресом, на который нужно заменить IP адрес назначения.
Для проверки, попробуем подключиться из сети Интернет через telnet на публичный IP адрес сервера gw-server на порт 80:
telnet 84.201.168.122 80
Результатом будет ответ веб сервера web-server01 из нашей внутренней сети:
HTTP/1.1 400 Bad Request Server: nginx/1.14.2 Date: Wed, 31 Jul 2019 10:21:21 GMT Content-Type: text/html Content-Length: 173 Connection: close
Аналогично можно настроить доступ из интернета на свою рабочую станцию по RDP. Так как доступ по RDP будет нужен ограниченному количеству человек, безопасней будет использовать при подключении нестандартный порт, например 13389, а уже с него перенаправлять на порт 3389 сервера внутренней сети (либо изменить номер RDP порта на Windows компьютере). Измененный порт назначения указывается через двоеточие после IP адреса:
iptables -t nat -A PREROUTING -p tcp --dport 13389 -i eth0 -j DNAT --to-destination 192.168.0.12:3389
Для проверки, попробуем подключиться из сети Интернет через telnet (или командлет PowerShell Test-NetConnection) на публичный IP адрес сервера gw-server на порт 13389:
telnet 84.201.168.122 13389
В ответ получим пустой экран и курсор, это говорит о том, что соединение работает.
Как узнать IP адрес в CentOS 7
Для того, чтобы быстро узнать текущий IP адрес в CentOS необходимо воспользоваться следующими командами:
# ifconfig | grep inet
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
inet 127.0.0.1 netmask 255.0.0.0
Либо второй вариант определения локального ip адреса:
# ip addr | grep inet
inet 127.0.0.1/8 scope host lo
inet 192.168.159.129/24 brd 192.168.159.255 scope global eno16777728
Обе команды позволяют быстро узнать свой ip адрес.
# Как изменить hostname в CentOS 7
Если вы не сменили при установке Hostname или вы хотите его изменить,
то сделать это совсем не сложно. Для начала давайте проверим, какой
hostname у нас установлен:
# hostname centos.home
В моем случае это centos.home. Допустим мы хотим сделать имя: superserver.work, для этого необходимо отредактировать фай /etc/hostname
mcedit /etc/hostname
После того, как изменили имя, давайте проверим, что у нас получилось:
# hostname superserver.work
Как видим, имя сменилось. Значит мы все сделали верно. Как видите, это сделать не так сложно.
P.S.: Для смены hostname перезагрузка не требуется.
Изменить маршрут в Linux
Чтобы изменить уже существующий маршрут, можно использовать команду ip route replace:
# ip route replace 192.168.0.0/24 via 192.168.1.1

Чтобы сбросить все временные маршруты в таблице маршрутизации, просто перезапустите сетевой сервис:
Restarting network (via systemctl): [ OK ]
default via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.0.0/24 via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 metric 100
Как изменить hostname в CentOS 7
По-умолчанию, во время установки CentOS ставит имя хоста localhost.localdomain. Если вы его не поменяли, то можно это сделать позже. Для начала давайте проверим, какое имя хоста у вас установлено. Делается это с помощью команды в консоли hostname, либо с помощью uname:
# hostnamelocalhost.localdomain# uname -n
Для того, чтобы изменить имя хоста в CentOS, необходимо отредактировать файл /etc/hostname. Проверим его содержимое:
# cat /etc/hostnameОтредактируем этот файл, чтобы изменить hostname:
# mcedit /etc/hostnameСохраняем файл и проверяем:
# hostnameВсе в порядке, мы изменили имя хоста на centos.localhost
Перезагрузка сетевого сервиса
Перезагрузить сетевой сервис (при этом перезагружаются все сетевые интерфейсы) в CentOS можно командой:
service network restart
При этом перезапускаются все конфигурационные файлы из каталога /etc/sysconfig/network-scripts.
Настройка нескольких сетевых интерфейсов в CentOS
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 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:d3:1c:3e brd ff:ff:ff:ff:ff:ff inet 185.*.*.*/16 brd 185.*.*.255 scope global eth0 valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 52:54:00:5f:f3:b8 brd ff:ff:ff:ff:ff:f
Чтобы сконфигурировать второй интерфейс, нужно создать для него файл:
# nano /etc/sysconfig/network-scripts/ifcfg-eth1
И добавьте следующую конфигурацию:
IPADDR="*.*.*.*" GATEWAY="*.*.*.*" NETMASK="255.255.255.0" BOOTPROTO="static" DEVICE="eth1" ONBOOT="yes"

После этого на сервере нужно установить шлюз по умолчанию. Проверим какой шлюз установлен в данный момент и при необходимости поменяем его:
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 185.*.*.1 0.0.0.0 UG 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 185.*.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 185.*.*.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
В качестве основного шлюза у нас выступает интерфейс eth1. Я же хочу использовать eth0, для этого изменим его:
# route add default gw *.*.*.*
– заменяем шлюз на тот, который указан в сетевом интерфейсе eth0
# route delete default gw *.*.*.*
— удаляем шлюз интерфейса eth1

Если вы хотите, чтобы данная настройка сохранилась после перезагрузки сервера, добавьте эти команды в rc.local (см. статью об автозагрузке сервисов в CentOS).

