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
б) сделать его исполняемым и перезапустить виртуальную машину.