Как настроить статический IP-адрес, но DNS через DHCP

Я настроил статический IP-адрес в файле/etc/network/interfaces:

auto eth0
iface eth0 inet static
    address 10.152.187.122
    gateway 10.152.187.1
    netmask 255.255.255.0

Но я хотел бы, чтобы DNS был настроен автоматически с DHCP. Например, если я выполняю dhclient, он заполняет/etc/resolv.conf правильно. Но я хотел бы, чтобы это работало при запуске, и я не уверен где надлежащий способ настроить это.

Это находится на  Ubuntu 12.04 (Точный Ящер) облачное изображение.

3
задан 2 January 2015 в 19:59

3 ответа

С DHCP Вы получаете адреса сервера имен DNS, которые получает маршрутизатор, когда это получает IP-адрес от Вашего интернет-провайдера (ISP). Можно использовать адреса сервера имен DNS, которые маршрутизатор имеет как это:

auto eth0
iface eth0 inet static
  address 10.152.187.122   
  netmask 255.255.255.0
  gateway 10.152.187.1
  dns-nameservers 10.152.187.1
2
ответ дан 17 November 2019 в 10:21

То, что Вы просите, является по существу гибридной конфигурацией статического IP, но DNS DHCP. Нет такого типа настройки сети - Вы или имеете статичный, или DHCP.

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

auto eth0
iface eth0 inet static
  address 10.152.187.122
  netmask 255.255.255.0
  gateway 10.152.187.1
  dns-nameservers 10.152.187.1
  dns-nameservers 8.8.8.8
  dns-nameservers 8.8.4.4
  ...

TL; DR: нет никакого способа получить DNS DHCP, Статический IP, если Вам не установили статическую запись в таблице присвоений DHCP в маршрутизаторе - который гарантирует, что Вы будете всегда получать тот IP, потому что это конкретно уже резервируется для той определенной СИСТЕМЫ/MAC-АДРЕСА

2
ответ дан 17 November 2019 в 10:21

Мне также интересно запрашивать DNS-серверы с DHCP без использования другой информации.

Dhcpcd может разрешить запросить его (dhcpcd -o domain_name_servers -T), но я не смог найти ничего для dhclient.

Помимо использования модифицированного dhclient (см. здесь на GitHub и здесь на Stack Overflow ) или тест-клиента (, как в этом блоге ) или других скрипты (см. об переполнении стека ). Я нашел решение powershell здесь, на indented.co.uk .

Это заставило меня задуматься об использовании «основ» в Linux, и я закончил с созданным dhcp-запросом, используя printf.

Некоторые поля могут быть фиктивными (например, mac aa: bb: cc: dd: ee: ff), но они содержат опции 53 = 0x35 (len 1 / value 1 = Request) и 55 = 0x37 (len 1 / значение 6 для DNS).

Для трансляции используется socat:

printf "\x1\x1\x6\x0\xd3\x44\x33\xeb\x0\x0\x80\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\xaa\xbb\xcc\xdd\xee\xff\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x63\x82\x53\x63\x35\x01\x01\x37\x01\x06\xff" |  socat - UDP4-DATAGRAM:255.255.255.255:67,broadcast

Симлиар-сокат используется для получения ответа

socat -u udp-recv:68,reuseaddr -

или

socat -u udp-recv:68 - | dd bs=1 skip=$( printf "%d" 0xec )

С помощью xxd я обнаружил, что Я искал ...

0
ответ дан 17 November 2019 в 10:21

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

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