Рейтинг:0

У клиентов нет доступа в Интернет, а у маршрутизатора Ubuntu 20.04 есть.

флаг vn

Недавно я пытался настроить свой Ubuntu 20.04 в качестве маршрутизатора. Странная проблема возникла, когда я думал, что завершил все шаги, что клиенты, подключающиеся к маршрутизатору Ubuntu, просто не имеют доступа в Интернет, в то время как сам маршрутизатор Ubuntu имеет.

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

Маршрутизатор первого уровня >----<[WAN] Маршрутизатор Ubuntu (динамический IP-адрес) [LAN]>----< Клиент (DHCP)

Следуя руководству, я сделал эти настройки на маршрутизаторе Ubuntu. /etc/netplan/00-installer-config.yaml:

сеть:
  Ethernet:
    wan1:
      соответствовать:
        MAC-адрес: xx:xx:xx:xx:xx:01
      имя набора: wan1
    DHCP4: да
  эт1:
    соответствовать:
      MACадрес: хх:хх:хх:хх:хх:02
    имя набора: eth1
    DHCP4: нет
мосты:
  бр:
    интерфейсы:
      - эт1
    адреса:
      - 192.168.3.1/24

Вывод ifconfig здесь:

br: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
    инет 192.168.3.1 сетевая маска 255.255.255.0 широковещательная рассылка 192.168.3.255
    inet6 fe80::f0de:2aff:fe06:98ad prefixlen 64 scopeid 0x20<link>
    эфир a4:1a:3a:b6:08:b5 txqueuelen 1000 (Ethernet)
    RX-пакеты 7283 байта 456695 (456,6 КБ)
    Ошибки RX 0 отброшено 0 переполнение 0 кадр 0
    Пакеты TX 295 байт 36494 (36,4 КБ)
    Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0

eth1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
    эфир a4:1a:3a:b6:08:b5 txqueuelen 1000 (Ethernet)
    RX-пакеты 7283 байта 558657 (558,6 КБ)
    Ошибки RX 0 отброшено 0 переполнение 0 кадр 0
    Пакеты TX 287 байт 35750 (35,7 КБ)
    Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
    инет 127.0.0.1 сетевая маска 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10<хост>
    loop txqueuelen 1000 (локальная петля)
    Пакеты RX 7941154 байт 604164948 (604,1 МБ)
    Ошибки RX 0 отброшено 0 переполнение 0 кадр 0
    Пакеты TX 7941154 байт 604164948 (604,1 МБ)
    Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0

wan1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    инет 192.168.1.4 сетевая маска 255.255.255.0 широковещательная рассылка 192.168.1.255
    inet6 fe80::da50:e6ff:fe3f:fdcb prefixlen 64 scopeid 0x20<ссылка>
    inet6 2409:8a50:1873:70b3:da50:e6ff:fe3f:fdcb prefixlen 64 scopeid 0x0 <глобальный>
    эфир d8:50:e6:3f:fd:cb txqueuelen 1000 (Ethernet)
    Пакеты RX 39031 байт 3017742 (3,0 МБ)
    Ошибки RX 0 отброшено 2229 переполнение 0 кадр 0
    Пакеты TX 35636 байт 36600911 (36,6 МБ)
    Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0

Кроме того, я включил переадресацию ipv4, добавив эту строку в /etc/sysctl.conf:

net.ipv4.ip вперед=1

Iptables были установлены как следующая строка ниже и поддерживались, заставляя systemd запускать iptables-restore при загрузке:

sudo iptables -t nat -A POSTROUTING -o wan1 -j MASQUERADE

Я установил dnsmasq и отредактировал /etc/dnsmasq.conf следующим образом: (системное разрешение было остановлено и отключено)

адрес прослушивания = 127.0.0.1,192.168.3.1
порт=53
интерфейс = eth1
DHCP-диапазон = 192.168.3.100,192.168.3.199,255.255.255.0,24ч
DHCP-опция = опция: маршрутизатор, 192.168.3.1
dhcp-опция = опция: DNS-сервер, 192.168.3.1

После того, как я их настроил, вроде бы все заработало. Я могу подтвердить, что DHCP работает, поскольку я вижу журналы dnsmasq, а сам маршрутизатор Ubuntu имеет доступ в Интернет.

Но что-то было не так. С клиентского устройства я попытался пропинговать домен. Домен был преобразован в правильный адрес IPV4, но клиент не может получить к нему доступ. Потом пинговал с клиента на роутер и наоборот, оба работали. Руководство, которому я следовал, никогда не упоминало об этом.Пожалуйста, дайте мне знать, если у вас есть какие-либо идеи, почему это не работает, заранее спасибо!

David avatar
флаг cn
Пожалуйста, не размещайте фотографии текста. Вырежьте и вставьте этот вывод в тело вопроса.
Рейтинг:0
флаг br

Попробуйте добавить это правило:

iptables -A FORWARD --in-interface br -j ПРИНЯТЬ

и в конце концов заменить sudo iptables -t nat -A POSTROUTING -o wan1 -j MASQUERADE к

sudo iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o wan1 -j MASQUERADE

Wireshark (или tshark, tcpdump) можно использовать для диагностики обоих интерфейсов одновременно.

Расширенный анализ

Причин, по которым ваш роутер не работает, может быть много:

  • IP-переадресация не включена
  • DNS-сервер недоступен для узлов локальной сети
  • Настройка NAT (преобразование сетевых адресов) не работает для узлов локальной сети.
  • ...

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

Не используйте имена, а числовые IP-адреса для ping-теста, пока не убедитесь, что все другие тесты, перечисленные ниже, в порядке. Таким образом вы устраняете возможную проблему одновременного DNS.

Тест 1

Проверьте состояние IP-маршрутизации (переадресации) (результат 1 означает, что переадресация включена):

кот /proc/sys/net/ipv4/ip_forward

Тест 2

Проверьте правильность настройки NAT (маскарада) для вашего интерфейса LAN:

пинг -с 3 8.8.8.8
пинг -с 3 -я 192.168.3.1 8.8.8.8

Первая команда выше — это проверка доступности IP-адреса назначения. Вы должны получить 3 действительных ответа на пинг. Вторая команда проверяет, работает ли NAT для IP-адресов вашей локальной сети. Если вы не получили ответа, это означает, что masquerade не может преобразовать исходный адрес 192.168.3.1. и другие ваши адреса в локальной сети (192.168.3.0/24) тоже имеют ту же проблему. Внимательно проверьте раздел NAT в настройках iptables. Перейдите к следующим тестам, если настройка NAT выглядит хорошо, но вы не получаете ответа на эхо-запрос.

Если ответ на эхо-запрос в порядке, но другие сетевые узлы в локальной сети по-прежнему не могут пропинговать до 8.8.8.8, то возможное решение состоит в том, чтобы указать полный сетевой адрес (а не только собственный). бр адрес интерфейса 192.168.3.1) в качестве источника для NAT:

sudo iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o wan1 -j MASQUERADE

Тест 3

Исходящие WAN-пакеты и их IP-адреса:

Проверьте tcpdump установлен и установите его, если он отсутствует.

какой tcpdump
sudo apt-get установить tcpdump

Описанный процесс поможет вам проверить функциональность tcpdump и захват сетевых данных. Вы можете остановить процесс захвата, нажав Ctrl+C в запущенном окне экземпляра tcpdump. Откройте второе окно терминала (T2). Первый (T1) будет использоваться для генерации трафика и проверки ответов. Вы будете использовать второй терминал (T2) для запуска и остановки задач захвата с помощью tcpdump. Можно использовать только один терминал для обеих задач, но если вы не знакомы с переключением приоритетных и фоновых задач, более безопасно использовать два терминала.

Т2

sudo tcpdump -i wan1 -n icmp и хост 8.8.8.8

Т1

пинг -c 2 8.8.8.8

Вы увидите два исходящих пакета ICMP (эхо-запрос) и два входящих эхо-ответа. Следите за их IP-адресами источника и назначения. Исходящий пакет имеет IP-адрес назначения 8.8.8.8, а источником является ваш общедоступный IP-адрес WAN. Вы сравните их с адресами, отображаемыми на следующем шаге.

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

Т1

пинг -с 2 -я 192.198.3.1 8.8.8.8

Что ты видишь? Есть такие возможности:

  • пакеты не перехватываются
  • отображаются только исходящие пакеты, и они имеют неверный исходный IP-адрес (например, 192.168.3.1 вместо общедоступного IP-адреса интерфейса WAN).
  • видны как исходящие, так и входящие пакеты.

Перерыв tcpdump в окне T2 (Ctrl+C). Пожалуйста, скопируйте ответ от T2 и вставьте его в свой ответ здесь. Добавьте ответ от IP-маршрут и, наконец, эти команды:

айпи ржет
sudo iptables-сохранить

Опишите результаты других тестов.

Cooper Max avatar
флаг vn
Я пробовал, и iptables модифицировались, но все равно без шансов. Интересно, есть ли у вас какие-либо другие идеи, в любом случае спасибо!

Ответить или комментировать

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