- Вопрос или проблема
- Статус
- Цель
- Диагностика
- Ответ или решение
- 1. Подготовка конфигурации сети
- В файле /etc/dhcpcd.conf:
- В файле /etc/network/interfaces:
- 2. Настройка маршрутизации
- 3. Включение пересылки IP
- 4. Настройки NAT (если необходимо)
- 5. Настройки на устройствах в сети 192.168.2.X
- 6. Проверка соединений и диагностика
- Заключение
Вопрос или проблема
В настоящее время я пытаюсь настроить систему Debian 10 в роли маршрутизатора между двумя частными сетями.
Позвольте мне попытаться изобразить настройку
Сеть 192.168.2.X
<-> Маршрутизатор Debian 10 <-> Сеть 192.168.1.X
- Трафик в сети
192.168.1.X
приходит через интерфейсwlan0
- Трафик в сети
192.168.2.X
приходит через интерфейсeth0
«Маршрутизатор Debian 10», также известный как «Маршрутизатор», не следует путать с «Маршрутизатором провайдера», который является устройством, предоставленным моим интернет-провайдером и маршрутизирует трафик в более широкий интернет
Устройства, подключенные к 192.168.1.X
- Маршрутизатор провайдера:
192.168.1.254
- Другие: динамические / зарезервированные статические IP-адреса
Устройства, подключенные к 192.168.2.X
- Маршрутизатор Debian 10 подключен непосредственно к свитчу, который затем подключен к…
- Еще одна система Debian 10 с установленным PiHole (DNS) и включенным DHCP-сервером
- Другие системы с динамически назначенными IP-адресами
Статус
- IP-адрес маршрутизатора в сети 192.168.1.X назначается статически маршрутизатором провайдера (он получает ожидаемый адрес)
- IP-адрес маршрутизатора в сети 192.168.2.X назначается статически системой PiHole, и он получает ожидаемый адрес
cat /proc/sys/net/ipv4/ip_forward
возвращает1
(Маршрутизатор) (это установлено в/etc/sysctl.conf
)- Системы, подключенные к сети 192.168.2.X, получают IP-адреса правильно от PiHole
Что касается IP-адресов, все выглядит нормально. Однако я не могу подключиться к интернету с устройства в сети 192.168.2.X
. traceroute
не предоставляет никакой полезной информации для диагностики (просто много звездочек “*******
“).
Я не уверен, какие шаги предпринять дальше для продолжения диагностики или решения проблемы.
Я ожидаю добавить еще информации, когда буду пробовать новые подходы, однако мне придется отключить интернет-соединение, чтобы снова подключиться к сети 192.168.2.X
для продолжения расследования.
Вот вывод ip route
(запущенный на маршрутизаторе) – это не то, с чем я особенно знаком, поэтому не уверен, что это ожидаемо.
default via 192.168.2.1 dev eth0 proto dhcp src 192.168.2.1 metric 202
default via 192.168.1.254 dev wlan0 proto dhcp src 192.168.1.2 metric 303
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.2 metric 303
192.168.2.0/24 dev eth0 proto dhcp scope link src 192.168.2.1 metric 202
Вывод ip route
(запущенный на системе, подключенной к сети 192.168.2.X
, НИ В КОЕМ СЛУЧАЕ не маршрутизатор) выглядит очень странно.
default via 192.168.1.254 dev enp3s0f2 proto static metric 100
default via 192.168.1.254 dev wlp4s0 proto dhcp metric 600
169.254.0.0/16 dev enp3s0f2 scope link metric 1000
192.168.1.0/24 dev wlp4s0 proto kernel scope link src 192.168.1.30 metric 600
192.168.1.254 dev enp3s0f2 proto static scope link metric 100
192.168.2.0/24 dev enp3s0f2 proto kernel scope link src 192.168.2.11 metric 100
Два из этих записей относятся к Wi-Fi-соединению, которое должно быть в конечном итоге отключено.
default via 192.168.1.254 dev wlp4s0 proto dhcp metric 600
192.168.1.0/24 dev wlp4s0 proto kernel scope link src 192.168.1.30 metric 600
Это оставляет следующие записи
default via 192.168.1.254 dev enp3s0f2 proto static metric 100
169.254.0.0/16 dev enp3s0f2 scope link metric 1000
192.168.1.254 dev enp3s0f2 proto static scope link metric 100
192.168.2.0/24 dev enp3s0f2 proto kernel scope link src 192.168.2.11 metric 100
Я не понимаю, почему есть 4 записи вместо 2, и почему 169.254.0.0/16
присутствует – у меня нет представления, откуда появился этот IP.
Цель
Причина создания такой сети в том, чтобы я мог установить DNS-сервер маршрутизатора для моих личных устройств, чтобы они указывали на устройство PiHole. Это нужно для изоляции этого шага DNS от других пользователей сети. PiHole иногда имеет не преднамеренные эффекты и нарушает определенные ссылки, например, рекламу товаров, предоставляемых сервисами Google.
Диагностика
Из этого вопроса я узнал, что локальные адреса связи – это самоназначенные IP, используемые для связи в сети, где сервер DHCP отсутствует для назначения IP.
Это важно, из-за таблицы маршрутизации, о которой я говорил ранее.
Внесенные изменения:
- Удален маршрут по умолчанию / IP шлюза из конфигурации Ethernet
Результат:
- Это позволило мне подключиться к более широкому интернету (по Wi-Fi), одновременно внося изменения в устройства, подключенные к моей локальной Ethernet-сети через свитч.
Вот диаграмма, как все в настоящее время подключено: (На этом этапе я меняю обозначение, обновлю вышеуказанную диаграмму.)
[A] <- eth -> [switch] <- eth -> [Маршрутизатор] <- wifi -> [Маршрутизатор провайдера]
^ <- eth -> [DNS/DHCP сервер] ^
+---- wifi (без маршрута) ----------------------------+
[A]
– это настольный компьютер, который я использую для администрирования всех устройств.eth
слева – сеть192.168.2.X
wifi
справа – сеть192.168.1.X
wifi
слева – сеть192.168.1.X
, но маршрута нет
Вот содержимое таблицы маршрутизации: ip route
default via 192.168.1.254 dev wlp4s0 proto dhcp metric 600
169.254.0.0/16 dev enp3s0f2 scope link metric 1000
192.168.1.0/24 dev wlp4s0 proto kernel scope link src 192.168.1.30 metric 600
192.168.2.0/24 dev enp3s0f2 proto kernel scope link src 192.168.2.11 metric 100
Вот моя таблица маршрутизации, когда соединение eth отключено:
default via 192.168.1.254 dev wlp4s0 proto dhcp metric 600
192.168.1.0/24 dev wlp4s0 proto kernel scope link src 192.168.1.30 metric 600
Это указывает на то, что два IP-адреса маршрутизируемы через Ethernet NIC. 169.254.0.0/16
[неправильный=192.168.0.0/16] и 192.168.2.0
. Последний – это IP-адрес устройства, подключенного напрямую через свитч. [неправильный]Первый, предположительно, – любое устройство с адресом в сети 192.168.2.X
.[неправильный] Первый – это самоназначенный IP, так как не был замечен сервер DHCP в этой сети.
Если я пытаюсь подключиться к eth с настройками DHCP (все авто), подключение не удается. [что насчет авто, кроме маршрута?]
Можно подключиться по ssh к 192.168.1.30
, эта ссылка идет через Wi-Fi. Этот IP-адрес можно увидеть, потому что оба устройства подключены к одной и той же SSID. (Я думаю.) Эти IP-адреса были назначены моим маршрутизатором провайдера.
[A] <- wifi -> [B]
- A:
192.168.1.0/24
- B:
192.168.1.30/24
Я могу ssh
к этому устройству. [редактирование: нет, не могу из-за проблемы с паролем – однако, возможно, это не на самом деле проблема с паролем – я знаю, какой пароль, он просто не работает]
Несколько связано с приведенной выше точкой.
Итак, это полезная вещь, которую стоит запомнить: всякий раз, когда возникают проблемы на уровне IP-адресов, можно подключиться по ssh
к устройству, используя локальный адрес связи, который находится в сети 169.254.X.X/16
Я считаю, что проблему удалось решить, вот что я сделал:
- в
/etc/dhcpcd.conf
interface eth0
static ip_address=192.168.2.254/24
(удалил routers
)
- в
/etc/network/interfaces
установлено по умолчанию (файл пустой, кроме единственной строки source-directory /etc/network/interfaces.d
)
ip route
default via 192.168.1.254 dev wlan0 proto dhcp src 192.168.1.150 metric 303
192.168.1.0/24 dev wlan0 proto dhcp scope link src 192.168.1.150 metric 303
192.168.2.0/24 dev eth0 proto dhcp scope link src 192.168.2.254 metric 202
В настоящее время еще не полностью протестировано, я все еще работаю над этим, но ip route
теперь показывает то, что я ожидал.
(Обратите внимание, что я изменил некоторые назначения IP)
Ответ или решение
Для настройки маршрутизатора на базе Debian 10 между двумя частными сетями (192.168.1.X и 192.168.2.X) необходимо выполнить следующие шаги. Судя по вашей информации, вы уже сделали некоторые настройки, но есть ещё несколько аспектов, которые стоит учесть для успешного маршрутизирования и обеспечения доступа к интернету для устройств в сети 192.168.2.X.
1. Подготовка конфигурации сети
Убедитесь, что ваши сетевые интерфейсы корректно настроены. Вы уже упомянули, что интерфейс wlan0
подключен к сети 192.168.1.X, а eth0
к сети 192.168.2.X. Давайте убедимся, что настройки сделаны правильно.
В файле /etc/dhcpcd.conf
:
Этот файл обычно используется для настройки DHCP и статических IP адресов. Убедитесь, что настройки для eth0
выглядят следующим образом:
interface eth0
static ip_address=192.168.2.254/24
# Убедитесь, что вы не указываете здесь `routers`, это может вызвать проблемы с маршрутизацией.
В файле /etc/network/interfaces
:
Если вы используете dhcpcd
, убедитесь, что этот файл не содержит конфликтующих настроек. Это может выглядеть так:
source-directory /etc/network/interfaces.d
2. Настройка маршрутизации
Убедитесь, что маршрутизация между сетями работает корректно. После настройки выше, проверьте таблицу маршрутизации на маршрутизаторе с помощью команды:
ip route
Вы должны видеть маршруты, которые выглядят примерно так:
default via 192.168.1.254 dev wlan0
192.168.1.0/24 dev wlan0
192.168.2.0/24 dev eth0
3. Включение пересылки IP
Вы уже сказали, что проверили, что IP-пересылка включена:
cat /proc/sys/net/ipv4/ip_forward
Этот параметр должен быть равен 1
. Если он не сохраняется после перезагрузки, добавьте следующую строку в файл /etc/sysctl.conf
:
net.ipv4.ip_forward=1
После редактирования не забудьте применить изменения командой:
sudo sysctl -p
4. Настройки NAT (если необходимо)
Если вы хотите, чтобы устройства из сети 192.168.2.X
имели доступ к интернету через маршрутизатор, вам нужно будет настроить NAT (преобразование адресов). Это можно сделать с помощью iptables
. Выполните следующие команды:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Чтобы эти настройки сохранялись при перезагрузке, установите пакет iptables-persistent
:
sudo apt-get install iptables-persistent
Следуйте инструкциям на экране для сохранения правил.
5. Настройки на устройствах в сети 192.168.2.X
Убедитесь, что устройства в сети 192.168.2.X
настроены правильно. Их шлюз по умолчанию должен указывать на IP-адрес маршрутизатора 192.168.2.254
(или whatever the Router IP). Если вы используете PiHole как DHCP-сервер, убедитесь, что DHCP на PiHole настроен на раздачу необходимых параметров.
6. Проверка соединений и диагностика
Проверьте прямое подключение к интернету из сети 192.168.2.X
:
- Попробуйте выполнить ping с устройства в
192.168.2.X
на адрес, например,8.8.8.8
(Google DNS). - Выполните ping на адрес маршрутизатора
192.168.2.254
. - Убедитесь, что можно выполнить ping на устройства в сети
192.168.1.X
, включая ваш ISP маршрутизатор192.168.1.254
.
Заключение
Следуя этим шагам, вы должны быть в состоянии успешно настроить ваш Debian 10 как маршрутизатор между двумя частными сетями, а также обеспечить доступ к интернету для устройств, находящихся в сети 192.168.2.X
. Если у вас будут возникать дополнительные проблемы, обратите внимание на ваши правила iptables
и проверку маршрутов на каждом устройстве в сети.
Если у вас есть дополнительные вопросы или вам нужна помощь с конкретным шагом, не стесняйтесь обращаться.