Я настроил статический 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 (Точный Ящер) облачное изображение.
С 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
То, что Вы просите, является по существу гибридной конфигурацией статического 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-АДРЕСА
Мне также интересно запрашивать 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 я обнаружил, что Я искал ...