Ubuntu 18.04 netplan статические маршруты

Нужна помощь со статическими маршрутами в новом конфиге netplan. Есть Ubuntu Server 18.04 с 2 сетевыми интерфейсами, Ethernet и WLAN. После успешной базовой конфигурации в /etc/netplan/50-cloud-init.yaml у меня есть обе сети. Но enp3s0 это интранет, wlp2s0 это wifi роутер. И я не могу сделать интернет через Wi-Fi. После нескольких дней настройки / перенастройки файла Yaml я не могу заставить его работать.

Работает только удаление шлюза по умолчанию /sbin/route del default gw 10.185.0.1, но не маршрутизация в интрасеть. Маршрут -n список

Как добавить эти маршруты я понятия не имею...

    network:
  version: 2
  renderer: networkd
  ethernets:
        enp3s0:
            addresses: []
            dhcp4: true
            gateway4: 10.185.0.1
            nameservers:
              addresses: [10.185.x.x, y.y.y.y]
            routes:
            - to: 10.185.0.0/0
              via: 10.185.0.1
              metric: 100
              table: 101
            routing-policy:
              - from: 10.185.0.0/24
                table: 101

  wifis:
        wlp2s0:
            addresses: []
            dhcp4: true
            optional: true
            gateway4: 192.168.8.1
            access-points:
                 "Wifi":
                    password: "password"
            nameservers:
              addresses: [8.8.8.8,8.8.4.4]
            routes:
            - to: 0.0.0.0/0
              via: 192.168.8.1
              metric: 90
              table: 91
            routing-policy:
              - from: 192.168.8.0/24
                table: 91

UPD: переопределить конфигурацию /etc/systemd/network/, С помощью UseRoutes=false вызывать бесконечный поиск сети при загрузке, настройка RouteMetric=700 работает лучше, получил интернет через Wi-Fi после загрузки! Но добавление нового маршрута, как: 10.180.0.0/16 через 10.185.0.1 не вызывает эффекта, не появляется в таблице маршрутизации ядра маршрута.
И я все еще неправильно понимаю, почему tracerout 172.16.185.194 проходит через 192.168.8.1. Я читал про таблицу ip4, но - to: 172.16.0.0/12 или же /16 не работает

1 ответ

Решение

В общем, что вы хотите здесь:

  • Установите один шлюз по умолчанию (с gateway4), на интерфейсе, который идет в интернет. Если вы установите шлюз по умолчанию на обоих, тогда половина пакетов будет направлена ​​в вашу Интранет и не сможет достичь их назначения.

  • Если ваша интрасеть имеет несколько подсетей, то вам нужны статические маршруты для доступа к ним через интерфейс, подключенный к вашей интрасети. (Одним из примеров может быть маршрутизация любых подсетей RFC1918 к этому интерфейсу, что, вероятно, было бы хорошей идеей.)

Теперь, в вашем конкретном примере, вы не полностью описали свою интрасеть, но давайте предположим, что ваша интрасеть состоит из сети 10.185.xy, другими словами, 10.185.0.0 / 16.

Предположим также, что ваш интерфейс enp3s0, предоставляющий вам доступ к интрасети, получит IP-адрес в подсети 10.185.0.z, другими словами, 10.185.0.0 / 24, и что шлюзом в этой подсети является 10.185.0.1.

Таким образом, вам нужен статический маршрут, чтобы добраться до оставшихся 10.185. x.y подсети, где x не равно 0.

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

network:
  version: 2
  renderer: networkd
  ethernets:
        enp3s0:
            addresses: []
            dhcp4: true
            nameservers:
              addresses: [10.185.x.x, y.y.y.y]
            routes:
            - to: 10.185.0.0/16
              via: 10.185.0.1
  wifis:
        wlp2s0:
            addresses: []
            dhcp4: true
            optional: true
            gateway4: 192.168.8.1
            access-points:
                 "Wifi":
                    password: "password"
            nameservers:
              addresses: [8.8.8.8,8.8.4.4]

В этой отредактированной конфигурации обратите внимание, что:

  • Здесь нет gateway4 в конфигурации enp3s0, поскольку вы не хотите, чтобы трафик направлялся на этот интерфейс по умолчанию, только когда он направляется в вашу интрасеть, настроенную по статическому маршруту.

  • И наоборот, wlp2s0 не нуждается в статических маршрутах, поскольку к нему подключен шлюз по умолчанию, чего достаточно.

  • Нет необходимости в таблицах маршрутизации и политиках маршрутизации, все, что вам нужно сделать, это настроить статический маршрут (или несколько статических маршрутов) для покрытия внутренних адресов в вашей интрасети и направить их через IP-адрес шлюза в этой сети, который может направить вас в другие подсети, к которым вы не подключены напрямую.

Обратите внимание, что эта настройка на самом деле зависит от того, что ваш DHCP-сервер во внутренней сети обеспечивает для вас, например, ваш интерфейс находится в 10.185. 0/24 сети, и этот 10.185.0.1 является шлюзом, который вы можете использовать в этом интерфейсе... По этой причине, возможно, лучшей настройкой было бы использование DHCP-сервера в вашей интрасети для передачи статических маршрутов (вместо их настройки в netplan).. Таким образом, если внутренняя сеть переконфигурирована, возможно, для изменения IP-адреса шлюза или, возможно, расширена для включения других частных диапазонов RFC1819, необходимо переконфигурировать только сервер DHCP, а не все остальное...

Но если DHCP-сервер находится вне вашего контроля, то эта настройка может быть приемлемой, если предположить, что внутренняя сеть не слишком часто переконфигурируется, так что IP-адрес шлюза будет меняться. Возможно, вы захотите добавить статические маршруты ко всем диапазонам RFC1918, поскольку они будут недействительными в Интернете, поэтому их можно будет сделать действительными только во внутренней сети:

routes:
- to: 10.0.0.0/8
  via: 10.185.0.1
- to: 172.16.0.0/12
  via: 10.185.0.1
- to: 192.168.0.0/16
  via: 10.185.0.1

Я надеюсь, что вы найдете это полезным!

Обходной путь для получения доступа к Интернету и интранету на двух разных интерфейсах.

Intranet IP : 192.168.10.0/24 , interface enp0s8
Internet IP : 0.0.0.0/0 , interface enp0s3 
              Nat gateway : 10.0.2.2

а) создать файл rc.local в /etc каталог.

поместите статические маршруты в это, как показано ниже.

#!/bin/sh -e

ip route del 0.0.0.0/0 via 192.168.10.1 dev enp0s8
ip route add 0.0.0.0/0 via 10.0.2.2 dev enp0s3
ip route add 192.168.10.0/24 via 192.168.10.1 dev enp0s8

exit 0

б) сделать его исполняемым и перезапустить виртуальную машину.

Другие вопросы по тегам