Как настроить несколько сетевых интерфейсов в centos 8

Настройка tcp/ip в centos

Введение

В этой статье вы сможете на простом примере изучить работу с сетевыми маршрутами.

Сперва вы научитесь настраивать клиентский хост $, ему достаточно иметь один сетевой интерфейс.

У клиента может вообще не быть интерфейса, смотрящего во внешний интернет. Всю работу с внешним
миром он будет вести через второй хост — роутер (#1) $.

Клиент и роутер должны быть в одной подсети, чтобы клиент смог найти роутер. Во внешний интернет роутер (#1) выходит через
роутер (#2)

В этом примере:

IP клиента во внутренней (Host-only) сети VirtualBox — 192.168.56.186/24

IP роутера (#1) во внутренней (Host-only) сети VirtualBox — 192.168.56.181/24

IP роутера (#1) в домашней (Bridged Adapter) сети — 10.1.54.217/21

IP роутера (#2) в домашней сети 10.1.55.254

Совет

Если вы недостаточно уверенно оперируете терминами сеть, подсеть, маска сети — советую сперва изучить статью

«Компьютерные сети»

Если вы работаете с

VirtualBox

чтобы повторить этот пример клиенту можете оставить только Host-only Adapter а роутеру оставьте два — Host-only и Bridged Adapter

Статическая маршрутизация

Так как статические маршруты настраиваются вручную, то любые изменения сетевой топологии требуют участия администратора для корректировки таблиц маршрутизации. В рамках маленькой сети такие изменения незначительны и происходят крайне редко. И наоборот, в крупных сетях корректировка таблиц маршрутизации может потребовать огромных затрат времени.
Если доступ к сети может быть получен только по одному направлению, то указание статического маршрута может оказаться вполне достаточным. Такой тип сети носит название тупиковой сети (stub network). Для настройки статической маршрутизации на роутере необходимо внести запись о сети, которую может достигнуть пакет, отправленный в определенный интерфейс.
Для этого необходимо в конфигурационном режиме ввести команду ip route, в которой указываем IP-адрес и маску сети назначения, тип и номер интерфейса, через который эта сеть может быть достигнута

R1(config)# ip route

Пример: Для сети, изображенной на рисунке необходимо настроить маршрутизацию таким образом, чтобы роутер (R1) пересылал пакеты в сети 92.154.228.0/22 и 92.154.232.0/22

Решением будет указанием 2 команд:

R1(config)# ip route 92.154.228.0 255.255.252.0 Se 1/0
R1(config)# ip route 92.154.232.0 255.255.252.0 Se 1/0

Для проверки конфигурации набираем команду show ip route

R1# show ip route
Codes: C — connected, S — static, I — IGRP, R — RIP, M — mobile,
D — EIGRP, EX — EIGRP external, O — OSPF,
92.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
C 92.154.224.0/22 is directly connected, FastEthernet0/0
S 92.154.228.0/22 is directly connected, Serial1/0
S 92.154.232.0/22 is directly connected, Serial1/0
C 92.154.252.0/30 is directly connected, Serial1/0

Как видно из вывода команды кроме подсоединенных сетей появились 2 записи по которым роутер будет все пришедшие к нему пакеты для сетей 92.154.228.0/22 и 92.154.232.0/22 маршрутизировать на интерфейс Serial1/0.

Для того чтобы пакеты из этих сетей уходили обратно необходимо подобным образом настроить роутеры R2 и R3

R2(config)# ip route 92.154.224.0 255.255.252.0 serial 1/0
R2(config)# ip route 92.154.232.0 255.255.252.0 serial 1/1

R3(config)# ip route 92.154.224.0 255.255.252.0 serial 1/0
R3(config)# ip route 92.154.228.0 255.255.252.0 serial 1/0

Еще настроить статическую маршрутизацию можно указав в команде ip route IP-адрес интерфейса следующего транзитного маршрутизатора вместо типа и номера интерфейса роутера, через который может быть достигнута сеть назначения. Например конфигурация роутера R1 для нашего примера будет:

R1(config)# ip route 92.154.228.0 255.255.252.0 92.154.252.2

R1(config)# ip route 92.154.232.0 255.255.252.0 92.154.252.2

R1# show ip route static
92.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
S 92.154.228.0/22 [1/0] via 92.154.252.2
S 92.154.232.0/22 [1/0] via 92.154.252.2

Для отмены статического маршрута используется команда no ip route

Как настроить 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

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 = all

Меняем на:

Inet_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# ifconfig

eno16777728: flags=4163 mtu 1500
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 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. Все в порядке, наша задача выполнена.

Изменить маршрут по умолчанию

Вы можете удалить маршрут по-умолчаню с помощью команды ip route del:

# ip route del default via 192.168.1.1 dev enp0s3

1

# ip route del default via 192.168.1.1 dev enp0s3

Чтобы указать новый маршрут по-умолчанию в CentOS используется команда:

# ip route add default via 192.168.1.2 (маршрут через IP адрес шлюза)

1

# ip route add default via 192.168.1.2 (маршрут через IP адрес шлюза)

# ip route add default via enp0s3 (маршрут через имя устройства)

1

# ip route add default via enp0s3 (маршрут через имя устройства)

Чтобы изменить параметры маршрута по умолчанию, используется команда:

# ip route replace default via 192.168.1.2

1

# ip route replace default via 192.168.1.2

Какой маршрут Linux подходит для вашего сайта?

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

В Linux есть три основных способа маршрутизации трафика:

  1. по прямому маршруту,
  2. непрямым путем,
  3. и через прокси-сервер.

Прямая маршрутизация — самый простой тип маршрутизации, использующий IP-адрес сайта назначения в качестве исходного адреса для исходящих пакетов.

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

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

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

Способы просмотра таблицы маршрутизации в Линукс

Для просмотра таблицы в ОС Линукс можно использовать команду:

Как видно из скриншота выше, команда показала всего две записи. В первой записи указан шлюз (gateway) 192.168.168.254, вторая запись говорит о наличии доступа в подсеть 192.168.168.0 на интерфейсе eth0.

Другой способ вывести информацию о статических маршрутов — использовать команду «route», однако, как правило утилита просит права супер пользователя, поэтому предварительно введем «su-«.

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

В этой информации содержится:

  • target (цель) — IP-адрес.
  •  gateway — адрес шлюза.
  • source — адрес отправителя.
  • dev — интерфейс.

Наиболее подходящий метод для просмотра таблицы маршрутизации в ОС Линукс – использовать утилиту «ip».

Подробней про «ip» можно посмотреть в другой статье: https://www.vseprolinux.ru/komanda-ip

Здесь:

  • default – IP-адрес по умолчанию.
  • via 192.168.168.254 — адрес шлюза, куда будут отправлять пакеты по умолчанию.
  • dev eth0 — интерфейс сети, за счёт него открывается доступ к шлюзу.
  • proto kernel — обозначает, что маршрут устанавливался ядром, если static, то установка выполняется администратором.

Настройка IPv6 при установке CentOS 8

Если вы хотите задать настройки для IPv6, то перейдите на соответствующую вкладку. Возможные варианты настройки:

  • Игнорировать (Ignore) — IPv6 игнорируется для этого соединения.
  • Автоматическая (Automatic) — NetworkManager использует объявление маршрутизатора (RA) для создания автоматической конфигурации без сохранения состояния.
  • Автоматически, только адреса (Automatic, addresses only) — NetworkManager использует RA для создания автоматической конфигурации без сохранения состояния, но DNS-серверы и поисковые домены игнорируются и должны настраиваться вручную.
  • Автоматический, только DHCP (Automatic, DHCP only) — NetworkManager не использует RA, но запрашивает информацию у DHCPv6 напрямую для создания конфигурации с сохранением состояния.
  • Ручная (Manual) — Параметры IPv6 настраиваются вручную для статической конфигурации.
  • Link-Local Only — link-local адрес с FE80 ::/10 префиксом назначается интерфейсу


Если вы выбрали метод, который требует ввода параметров вручную, введите сведения об IP-адресе для этого интерфейса, маске сети и шлюзе. Используйте кнопки Добавить и Удалить, чтобы добавить или удалить адреса. Введите разделенный запятыми список DNS-серверов в поле DNS-серверов и разделенный запятыми список доменов в поле «Search Domain» для любых доменов, которые вы хотите включить в поиск серверов имен. При желании введите имя для этого сетевого подключения в поле идентификатора клиента DHCP (DHCP client ID).Это имя должно быть уникальным в подсети. Когда вы назначаете значимый идентификатор клиента DHCP для соединения, это соединение легко идентифицировать при устранении неполадок в сети. Снимите флажок, если он стоит «Require IPv6 addressing for this connection to complete (Требовать адресацию IPv6 для этого соединения для завершения)«, чтобы разрешить системе устанавливать это соединение в сети с поддержкой IPv4, если конфигурация IPv6 не удалась, но конфигурация IPv4 прошла успешно.
Сохраняем все сетевые настройки. Теперь можно сказать, что вы произвели базовую настройку сети при установке CentOS 8, можно дальше продолжить инсталляцию.

Как изменить имя в CentOS 8

Давайте я покажу вам какой конфигурационный файл отвечает за имя хоста (Hostname). Если вы или не вы во время установки CENTOS 8 не удосужились задать правильное DNS имя вашего сервера, то у вас оно по умолчанию будет localhost.localdomain. Посмотреть, это можно командой uname или hostname.

uname -n или hostname

В моем примере, это CentOS 8

Предположим, что я хочу сделать имя SuperCentOS01, для этого отредактируйте конфигурационный файл etc/hostname. Пишем команду;

vi etc/hostname

либо вы можете воспользоваться и вот такой командой, чтобы задать нужное имя хоста в CentOS 8:

hostnamectl set-hostname SuperCentos01

Синтаксис и основные ключи утилиты route

Теперь поговорим поподробней о команде route.

Общий синтаксис:

route [if

Основные ключи:

  • -f — удаляет из таблицы маршрутизации все маршруты;
  • -p – сохраняет маршрут на постоянную основу;
  • add – добавляет новый маршрут;
  • change — меняет текущий маршрут в таблице маршрутизации;
  • delete — удаляет маршрут из таблицы маршрутизации;
  • print — отображает содержимое таблицы маршрутизации;
  • destination — при добавлении или изменении маршрута этот параметр используется для указания идентификатора сети назначения;
  • mask — при добавлении или изменении маршрута этот параметр используется для указания маски подсети для сети назначения;
  • gateway — при добавлении или изменении нового маршрута этот параметр используется для указания шлюза (маршрутизатора или модема);
  • metric — используется для указания целого числа в диапазоне от 1 до 9999, являющегося метрикой стоимости для маршрута. Если для определенной сети назначения существует несколько возможных маршрутов, будет использован маршрут с наименьшим значением метрики;
  • if — используется для указания номера индекса интерфейса, который подключен к сети назначения.

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

route print

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

Нравится49Не нравится14

Настройка MASTER сервера

Создадим файл настройки:

# touch /etc/keepalived/keepalived.conf

Комментарии в файле настройки выделяются знаком «!»
Добавим блок global_defs:

global_defs {
  ! имя балансера
  router_id LVS_1
}

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

vrrp_instance DOVECOT {
        !Указывает на то что в каком состоянии стартует нода
        state MASTER
        !Интерфейс для виртуальных IP
        interface ens18
        !Интерфейс для обмена служебными пакетами между нодами
        lvs_sync_daemon_inteface ens18
        !Уникальное имя виртуального роутера
        virtual_router_id 102
        !Приоритет данной ноды относительно других, нода с наибольшим приоритетом переходит в состояние MASTER
        priority 150
        !Как часто происходит обновление состояния кластера
        advert_int 1
        !Аутентификация используется для синхронизации между нодами
        authentication {
                auth_type PASS
                auth_pass 12345678
        }
        !Виртуальные адреса, которые настроит keealived
        virtual_ipaddress {
                192.168.135.237/24
        }
}

Далее следует блок настройки виртуального сервера:

virtual_server 192.168.135.237 22 {
        !Частота проверок
        delay_loop 6
        !Выбираем режим балансировки, для dovecot лучше выбрать Locality-Based Least-Connection
        lb_algo lblc
        !Выбираем метод перенаправления, в нашем случае Direct Routing
        lb_kind DR
        protocol TCP
        !Описываем back-end серверы
        real_server 192.168.135.238 143 {
                !Задаем вес сервера
                weight 1
                !Настраиваем проверку на доступность
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 143
                        nb_get_retry 3
                        delay_before_retry 3
                }
        }
        real_server 192.168.135.239 143 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 143
                        nb_get_retry 3
                        delay_before_retry 3
                }
        }
}

Запустим и добавим сервис keepalived в автозагрузку:

# systemctl enable keepalived
# systemctl start keepalived

На MASTER ноде должен добавится виртуальный IP:

# ip a | grep ens18
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.135.235/24 brd 192.168.135.255 scope global ens18
    inet 192.168.135.237/24 scope global secondary ens18

Как узнать свой ip-адрес

Чтобы узнать ip-адрес системы можно выполнить следующие команды:

ifconfig | grep inet
    inet addr:93.170.169.118  Bcast:93.170.169.255  Mask:255.255.254.0
    inet6 addr: fe80::5054:ff:fe8b:f117/64 Scope:Link
    inet addr:127.0.0.1  Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host

ip addr | grep inet
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
    inet 93.170.169.118/23 brd 93.170.169.255 scope global ens3
    inet6 fe80::5054:ff:fe8b:f117/64 scope link 

На данный момент команда ifconfig является хоть и устаревшей, но еще работающей командой (В CentOS требуется установить пакет net-tools). Начиная с ядра версии 2.2 ей на смену пришел пакет iproute2, состоящий из утилит: ip, tc, ss.

# System config network tui в CentOS 7

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

# nmtui

Главный экран:

Допустим, мы хотим изменить IP адрес через графический интерфейс, выбираем «Изменить соединение»

Выбираем сетевое подключение, в моем случае оно одно, и нажимаем «Изменить …»

Меняем настройки, которые вы хотите изменить и нажимаем «ОК«.

Вот так просто через графический интерфейс можно настраивать сеть.
Если по какой то причине у вас не установлен данный пакет, то установить
его можно следующей командой:

yum install NetworkManager-tui

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

Для просмотра текущей таблицы маршрутизации на узле с установленной ОС Linux используется команда netstat -r или route$ netstat -r

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

192.168.10.0 * 255.255.255.0 U 0 0 0 eth0

default 192.168.10.254 0.0.0.0 UG 0 0 0 eth0

В этом примере в таблице маршрутизации присутствуют только две записи. Первая указывает на наличие доступа в подсеть 192.168.10.0. Так как узел принадлежит данной подсети, в использовании шлюза нет необходимости. Согласно второй записи, весь остальной трафик с этого узла перенаправляется на шлюз 192.168.10.254.

Все настройки сетевого интерфейса eth0 (в данном случае единственного) хранятся в конфигурационном файле /etc/sysconfig/network-scripts/ifcfg-eth0:

      DEVICE=eth0
      HWADDR=00:1D:60:07:92:28
      IPADDR=192.168.10.14
      NETMASK=255.255.255.0
      BROADCAST=192.168.10.255
      ONBOOT=yes

При добавлении второго сетевого интерфейса eth1 с IP-адресом 192.168.11.4 потребуется изменение конфигурации таблицы маршрутизации при помощи утилиты route2:

      # route add -net 192.168.11.0 netmask 255.255.255.0 dev eth1
      # netstat -r

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

192.168.10.0 * 255.255.255.0 U 0 0 0 eth0

192.168.11.0 * 255.255.255.0 U 0 0 0 eth1

default 192.168.10.254 0.0.0.0 UG 0 0 0 eth0

Настройки сетевого интерфейса eth1 заносятся в конфигурационный файл /etc/sysconfig/network-scripts/ifcfg-eth1:

      DEVICE=eth1
      HWADDR=00:0A:48:05:7B:DB
      IPADDR=192.168.11.4
      NETMASK=255.255.255.0
      BROADCAST=192.168.11.255
      ONBOOT=yes

Маршрутизатор сети 192.168.11.0 может быть связан с другой подсетью 192.168.12.0. В этом случае при необходимости настраивается так называемый транзитный маршрут, по которому пакеты, приходящие на eth1 с назначением в подсеть 192.168.12.0, будут перенаправлены на шлюз 192.168.11.1:

     # route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.11.1  
     # netstat -r

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

192.168.10.0 * 255.255.255.0 U 0 0 0 eth0

192.168.11.0 * 255.255.255.0 U 0 0 0 eth1

192.168.12.0 192.168.11.1 255.255.255.0 UG 0 0 0 eth1

default 192.168.10.254 0.0.0.0 UG 0 0 0 eth0

Для того чтобы внесенные изменения сохранились после перезагрузки узла, необходимо создать конфигурационный файл /etc/sysconfig/network-scripts/route-eth1, содержащий запись о транзитном маршруте:

      192.168.12.0/24 via 192.168.11.1

Для корректной работы двух и более сетевых интерфейсов на одном узле также необходимо в файле /etc/sysctl.conf установить значение параметра net.ipv4.ip_forward равным 1. Последним шагом будет перезагрузка сервиса network:

      # /etc/init.d/network restart

Настройка роутера

У роутера обычно несколько активных сетевых интерфейса. В данном примере
enp0s8 слушает в ту же сеть, что и клиент а
enp0s3 слушает на другой роутер, который слушает внешний интернет.

На роутере тоже можно изучить существующие маршруты.

ip r s

default via 10.1.55.254 dev enp0s10 proto dhcp metric 101
10.1.48.0/21 dev enp0s10 proto kernel scope link src 10.1.54.217 metric 101
192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.181 metric 100

Как вы можете увидеть — по умолчанию мой роутер использует 10.1.55.254/21 — это другой роутер, который
слушает внешний интернет.

Выполните

cat /proc/sys/net/ipv4/ip_forward

Если у вас там 0, значит маршрутизация выключена.

Чтобы включить маршрутизацию добавьте
net.ipv4.ip_forward=1
в конец

sysctl.conf

sudo vi /etc/sysctl.conf

# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward=1

Проверить результат

sudo sysctl -p

net.ipv4.ip_forward = 1

!cat

cat /proc/sys/net/ipv4/ip_forward

1

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

С клиента можно получить пинг от роутера (#1)

ping 10.1.54.217

PING 10.1.54.217 (10.1.54.217) 56(84) bytes of data.

64 bytes from 10.1.54.217: icmp_seq=1 ttl=64 time=0.760 ms

Но пинг до

роутера (#2)

не получится

$ ping 10.1.55.254

Чтобы это исправить нужно с помощью iptables настроить NAT MASQUARADE

Показать существующие маршруты

Список интерфейсов клиента можно изучить командой

ip a s

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.186 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::7a4:b74c:942a:bbdf prefixlen 64 scopeid 0x20<link>
ether 08:00:27:1c:cd:94 txqueuelen 1000 (Ethernet)
RX packets 1004 bytes 129137 (126.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 20276 bytes 1273399 (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
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 13030 bytes 1146784 (1.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13030 bytes 1146784 (1.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:34:a8:f3 txqueuelen 1000 (Ethernet)
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

Чтобы увидеть маршруты выполните

ip route show

Или просто

ip r

192.168.56.0/24 dev enp0s3 proto kernel scope link src 192.168.56.186 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1

Можно использовать команду route

route

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.56.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s8
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

Или

netstat

netstat -r

Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

netstat -rn

Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

настройка параметров сети с помощью файлов конфигураций

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

расположение конфигурационных файлов

Настройка параметров сети (IP адрес, маска сети, шлюз, параметры DNS) производится в файлах ifcfg-ethX, которые находятся в папке /etc/sysconfig/network-scripts.
Параметры DNS описываются также в файле /etc/resolv.conf.
Маршруты (из таблицы маршрутизации) хранятся в файлах /etc/sysconfig/network-scripts/route-ethX.

ifcfg-ethX

Файлы находятся в папке /etc/sysconfig/network-scripts.

Параметры

Название параметра Описание параметра Возможные значения Пример использования
DEVICE наименование интерфейса eth0
eth1
device=eth0
device=eth1
BOOTPROTO способ назначения IP dhcp
none
static
(пустое значение)
bootproto=dhcp
bootproto=
bootproto=static
bootproto=none
HWADDR MAC адрес   HWADDR=»00:00:00:00:00:00″
NM_CONTROLLED должен ли интерфейс управляться NetworkManager «yes»
«no»
NM_CONTROLLED=»yes»
ONBOOT Должен ли этот интерфейс «подниматься» при запуске сетевой службы «yes»
«no»
ONBOOT=»yes»
TYPE тип интерфейса «Ethernet» TYPE=»Ethernet»
UUID     UUID=»ffffffff-ffff-ffff-ffff-ffffffffffff»
IPADDR IP адрес интерфейса   IPADDR=192.168.1.3
NETMASK маска подсети интерфейса   NETMASK=255.255.255.0
GATEWAY шлюз интерфейса   GATEWAY=192.168.1.1
DNS1 1-й DNS сервер интерфейса   DNS1=192.168.1.1
DNS2 2-й DNS сервер интерфейса   DNS2=192.168.1.2
DOMAIN текущий домен   DOMAIN=MYDOMAIN.LOCAL

resolv.conf

Этот файл находится в папке /etc.

Название параметра Описание параметра Возможные значения Пример использования
nameserver адрес DNS сервера. Таких записей может быть несколько (не более 3-х) nameserver 192.168.1.1
nameserver 192.168.1.2
domain имя локального домена (?)   domain mydom.local
search подставляемое имя домена, если адрес задан не полностью   search mydom.local

route-ethX

Файлы находятся в папке /etc/sysconfig/network-scripts.

Формат файла:

например:
или

Шлюз по умолчанию задается в файлах ifcfg-ethX. Можно также указать шлюз по умолчанию, например, следующим образом:

В файле route-eth0 нужно указывать все маршруты с dev eth0, а в файле route-eth1 — соответственно, все маршруты с dev eth1.

Установка и настройка dnsmasq в CentOS 7

С большой долей вероятности dnsmasq у вас уже установлен. Проверить это можно следующей командой:

Если вывод такой же, значит пакет уже стоит. Если нет, то устанавливаем dnsmasq командой:

Редактируем файл конфигурации /etc/dnsmasq.conf и приводим его к очень простому виду:

Запускаем dnsmasq:

Либо перезапускаем, если он был у вас запущен:

Добавляем dnsmasq в автозагрузку:

Я редактировал конфиг, когда у меня уже был установлен и запущен dnsmasq. И он то ли завис, то ли просто затупил, но я не мог его перезагрузить или остановить с помощью systemctl. Пришлось перезагрузить сервер. После этого все нормально заработало. Клиент на windows получил сетевые настройки. Информация об этом появилась в логе /var/log/messages. Я проверил на клиенте интернет, все было в порядке, он работал.

На этом настройка завершена, шлюзом под CentOS 7 можно пользоваться.

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

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