Введение
В этой статье вы сможете на простом примере изучить работу с сетевыми маршрутами.
Сперва вы научитесь настраивать клиентский хост $, ему достаточно иметь один сетевой интерфейс.
У клиента может вообще не быть интерфейса, смотрящего во внешний интернет. Всю работу с внешним
миром он будет вести через второй хост — роутер (#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 есть три основных способа маршрутизации трафика:
- по прямому маршруту,
- непрямым путем,
- и через прокси-сервер.
Прямая маршрутизация — самый простой тип маршрутизации, использующий 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> 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 можно пользоваться.