Làm cách nào để tải lại ứng dụng khách DHCP từ xa, để viết độ phân giải mới?


3

Tôi đang cố gắng định cấu hình dnsmasq(8)trên hệ thống Debian GNU / Linux trong DHCPmạng riêng. Trong quá trình thiết lập thủ công cục bộ - sau khi cài đặt dnsmasqistelf - người ta có thể chỉ cần bao gồm dòng

prepend domain-name-servers 127.0.0.1;

vào /etc/dhcp/dhclient.confvà khởi động lại mạng. Điều này sẽ bao gồm các máy chủ địa phương trong /etc/resolv.confvà một đã sẵn sàng để đi. (Xem thêm: http://wiki.debian.org/HowTo/dnsmasq#Local_Caching )

Nhưng những nỗ lực để làm điều tương tự từ xa, đặc biệt là khi làm việc với phần mềm quản lý cấu hình , sẽ dẫn đến kết nối mạng bị mất. Chà, vì mục tiêu không phải là khởi động lại mạng, mà là cập nhật resolv.conf..:

Làm thế nào một người có thể buộc dhclient(8)phải cập nhật resolv.conftrong khi giữ cho các kết nối mạng luôn hoạt động?

[BIÊN TẬP]

Dưới đây xin vui lòng tìm một kịch bản làm việc cho tôi:

if grep '^\s*nameserver\>.\+\<127\.0\.0\.1\>' /etc/resolv.conf >/dev/null; then
    : # do nothing
else
    grep -v '^\s*nameserver\>' /etc/resolv.conf > /tmp/resolv.conf.new
    echo "nameserver 127.0.0.1" >> /tmp/resolv.conf.new
    grep '^\s*nameserver\>' /etc/resolv.conf >> /tmp/resolv.conf.new
    mv -f /tmp/resolv.conf.new /etc/resolv.conf
fi

Điều đó thật khó xử - và tôi vẫn đang tìm kiếm một giải pháp tốt hơn.


1
Các dhclient(8)trang hướng dẫn nói nó hỗ trợ một số giao thức sôi nổi gọi là "Omapi" cho phép cấu hình từ xa, và đề cập đến những omshellcông cụ có thể được sử dụng để thiết lập / thông số nhất định unset trong các khách hàng và cập nhật nó, cũng như đóng cửa và khởi động lại. Bạn đã khám phá tuyến đường này?
kostix

1
Có, nhưng nó không cung cấp một cách để cập nhật resolv.conf. Lưu ý rằng chính máy khách DHCP không phải là vấn đề ở đây, đó là resolv.conftệp: Nó được xem xét bởi resolver(3)C-API và do đó được sử dụng bởi các phần mềm khác. Thông thường, bản cập nhật được thực hiện bởi một trong hai dhclient(8)hoặc resolvconf(8), nhưng reset đầu tiên kết nối mạng và sau này thất bại trong việc giữ gìn cấu hình hiện tại -
mjhennig

Tôi hy vọng câu trả lời sẽ phụ thuộc vào khách hàng của bạn. Với ứng dụng khách của OpenBSD dựa trên ISC DHCP (có thể là những gì bạn sử dụng), có một /etc/dhclient.conf thường được sử dụng. "dhclient -c /etc/dhclient.conf" có thể chỉ định một tệp tùy chỉnh. Tệp chỉ định thực hiện những việc như tìm ra mặt nạ mạng con, bộ định tuyến (cổng mặc định) và nội dung DNS. Bạn có thể lấy ra những gì bạn muốn. Nhưng địa chỉ IP dường như không phải là một trong những lựa chọn. Có thể không có hỗ trợ tích hợp mặc định để không truy vấn. Mặc dù vậy, "supersede" có thể bỏ qua thông tin. Có lẽ xem thêm: người đàn ông dhclient-script
TOOGAM

Câu trả lời:


2

Tôi đã đối mặt với cùng một vấn đề khi thiết lập dnsmasq thông qua ansible. Trên debian jessie, bạn có thể cập nhật dhclient.conf và làm:

/usr/bin/killall dhclient
dhclient INTERFACE

Hoặc nếu bạn thích:

dhclient -x
dhclient INTERFACE

Điều này không giết kết nối của bạn trừ khi hợp đồng thuê của bạn hết hạn và bạn nhận được một địa chỉ IP khác.

Bạn đề cập đến quản lý cấu hình. Nếu bạn đang sử dụng ansible, đây là phần có liên quan trong Playbook của tôi:

tasks:
- name: Ensure a correct resolv.conf
  template: src=templates/resolv.conf.j2 dest=/etc/resolv.conf

- name: Ensure dhclient config wont mess up my resolv.conf
  template: src=dhclient.conf.j2 dest=/etc/dhcp/dhclient.conf
  notify: Kill dhclient

handlers:
- name: Kill dhclient
  command: /usr/bin/killall dhclient
  ignore_errors: yes
  changed_when: false

Lưu ý rằng tôi không khởi động lại dhclient sau khi giết nó. Điều này hoạt động tốt trong môi trường của tôi nhưng YMMV. Bạn có thể thêm một tác vụ khác sao chép tập lệnh để xử lý dừng / khởi động và gọi lệnh đó từ trình xử lý (thậm chí có thể sử dụng {{ansible_default_ipv4.interface}}để lấy tên của giao diện).

dhclient.confMẫu của tôi là một cái gì đó như thế này:

send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers, host-name, interface-mtu, rfc3442-classless-static-routes, ntp-servers, dhcp6.fqdn, dhcp6.sntp-servers;

Vì vậy, chủ yếu là các debian mặc định dhclient.confsans các chỉ thị liên quan đến dns.


1
Ngoài ra, tôi sẽ lập luận rằng câu hỏi này phù hợp với ServerFault
GnP
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.