Обслуживание DHCP в Ubuntu 18.04 [дубликат]

Этот вопрос является точной копией следующего:

Сводка проблемы

] У меня есть два сетевых интерфейса на машине, и мне нужно, чтобы они работали следующим образом:

  • enp3s0 : Основной сетевой интерфейс для машины. Получение IP-адреса через DHCP (будет в 172.16.0.0/24). ), шлюз и преобразователь DNS для офисной сети и мира в целом.Маршрут по умолчанию - к этому полученному шлюзу.

  • enp2s0 : Локальная подсеть, состоящая не более чем на 2 метра и ничего, что должно иметь доступ к основной сети. Обслуживать DHCP в этой сети (192.168.0.0/24, домен - .localnet ) и предоставлять локальному компьютеру разрешение DNS для клиентов .localnet .

У меня было рабочее решение для всего этого до 16.04, используя / etc / network / и dnsmasq (без NetworkManager), но я просто потерялся в новой эре netplan и с разрешением systemd . Все просто продолжает бороться со всем остальным.

Итак, какое у меня правильное, современное решение, чтобы заставить эту работу работать правильно? В идеале так, чтобы не пришлось менять до 20.04.

Дополнительная информация

Для справки, вот сценарий, который сделал то, что мне было нужно в версии 16.04.

#!/bin/bash
#
# Configure the PC to use dual network adapters.
#
# usage: dualnetwork.sh <hinetif> <localnetif>
#
# This configuration is based around the use of the classic ifupdown
# configuration files rather than NetworkManager.  This is substantially
# more stable and easier to work with.  It is probably prudent to also
# uninstall NetworkManager once this is done:
#   sudo apt-get remove network-manager
#
# Must run as root.
#
# Rob Gaddi, 29 Jan 2019

GENERATED="Generated by $0 at $(date)"
HINET=$1
LOCALNET=$2

abort () {
    echo $*
    exit 1
}

[[ ! -z "$LOCALNET" ]] || abort Must provide hinet and localnet interfaces.
ip -br addr | grep $HINET    || abort Interface $HINET not found
ip -br addr | grep $LOCALNET || abort Interface $LOCALNET not found

####################################################################
echo Configuring network interfaces
####################################################################
mkdir -p /etc/network/interfaces.d
echo source-directory /etc/network/interfaces.d > /etc/network/interfaces
cat <<-CONF > /etc/network/interfaces.d/hinet
    # $GENERATED
    auto $HINET
    iface $HINET inet dhcp
CONF
cat <<-CONF > /etc/network/interfaces.d/localnet 
    # $GENERATED
    allow-hotplug $LOCALNET
    iface $LOCALNET inet static
        address 192.168.0.20/24

    iface $LOCALNET inet static
        address 192.168.254.20/24
CONF

####################################################################
echo Installing and configuring dnsmasq
####################################################################
apt-get install --reinstall -y dnsmasq
mkdir -p /etc/dnsmasq.d
cat <<-CONF > /etc/dnsmasq.d/dualnetwork.conf
    # $GENERATED
    no-negcache
    dhcp-range=192.168.0.100,192.168.0.150,4h
    interface=$LOCALNET
    domain=localnet
    dhcp-fqdn
    log-dhcp
CONF
systemctl enable --now dnsmasq.service

Редактировать

Это отличается от Конвертировать / etc / network / interfaces в netplan для плавающего IP тем, что проблема не в планировании сети для IP-адресов машины; эта часть довольно проста. Проблема в том, чтобы заставить систему обслуживать DHCP в одной сети. Когда я попробовал это очевидным способом, dnsmasq и systemd-resolved продолжали наступать друг другу на пятки. Когда я попытался просто отключить systemd-resolvd и позволить dnsmasq выполнять всю работу, он так и не получил вышестоящий DNS-сервер, когда он принял основной сетевой DHCP.

0
задан 3 February 2019 в 09:46

1 ответ

На systemd-resolved.service(8), существует два возможных способа настроить systemd-разрешенный для знания о dnsmasq сервере:

  • добавьте его к /etc/systemd/resolved.conf как "глобальный" сервер DNS
  • добавьте его к a *.network файл в одном из каталогов, прочитанных systemd-networkd.

Для последнего может быть достаточно установить a nameservers опция в Вашем netplan конфигурируется для enp2s0, указывая на локальный IP, на котором будет работать dnsmasq.

0
ответ дан 26 October 2019 в 10:00

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

Похожие вопросы: