Làm cách nào để quản trị mạng cấu hình máy chủ tên miền cụ thể với openresolv + dnsmasq


11

Tôi thường kết nối với nhiều mạng cùng một lúc. Mỗi mạng này cung cấp cấu hình máy chủ tên thông qua dhcp. Ví dụ: Mạng 1: (eth0):

domain company1.corp #
nameserver 192.168.0.253
nameserver 192.168.0.254

Mạng 2 (tun0):

domain company2.corp #
nameserver 10.102.204.51
nameserver 10.102.208.51

# Tên đã thay đổi

Khi được kết nối đồng thời với cả hai mạng:

# resolv.conf from NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51

Giải quyết dịch vụ.company2.corp không hoạt động vì máy chủ tên đầu tiên chỉ biết về tên công ty1.corp.

Lấy cảm hứng từ bài viết này , tôi đã thiết lập openresolv (một cài đặt độ phân giải) cấu hình một dịch vụ dnsmasq cục bộ trên bản cài đặt Arch linux của tôi.

Nếu tôi định cấu hình máy chủ tên theo cách thủ công bằng cách sử dụng độ phân giải:

# resolvconf -d NetworkManager
# echo "domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
" | resolvconf -a eth0
# echo "domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
" | resolvconf -a tun0

Sau đó, tôi có thể phân giải tên từ cả company1.corp và company2.corp (máy chủ dnsmasq cục bộ xử lý việc này.)

Lưu ý rằng sau khi cấu hình thủ công, decveconf -l hiển thị 2 cấu hình riêng biệt:

~ # resolvconf -l
# resolv.conf from tun0
domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51

# resolv.conf from eth0
domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254

Tuy nhiên, khi để trình quản lý mạng thực hiện cấu hình, 2 cấu hình không tách rời nhau, giống như khi trình quản lý mạng ghi vào /etc/resolve.conf

~ # resolvconf -l
# resolv.conf from NetworkManager
# Generated by NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51

Câu hỏi của tôi là làm thế nào tôi có thể yêu cầu người quản lý mạng gọi chính xác tới giải phápvv để các máy chủ tên cho mỗi giao diện được đăng ký riêng. (Thật không may googling cho điều này là vô ích vì google nghĩ rằng "decveconf" == "giải quyết.conf")


2
Trên Google, tìm kiếm "resolvconf"với các trích dẫn. Luôn đặt dấu ngoặc kép xung quanh tên thích hợp trên Google.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


14

NetworkManager có chức năng quản lý một máy chủ dnsmasq cục bộ được tích hợp. Không cần thiết phải sử dụng độ phân giải / openresolv để làm điều này.

Để kích hoạt tính năng này:

  • Vô hiệu hóa cấu hình dnsmasq độ phân giải / openresolv nếu nó được kích hoạt trước đó và đảm bảo không có trường hợp nào chạy dnsmasq.
  • Đảm bảo dnsmasq được cài đặt
  • Thêm dns=dnsmasqvào /etc/NetworkManager/NetworkManager.conf.
  • Khởi động lại Trình quản lý mạng

Khi bạn đã hoàn thành việc này, bạn sẽ thấy NetworkManager đã bắt đầu quá trình dnsmasq:

$ pgrep dnsmasq -fl
1697 /usr/bin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/nm-dns-dnsmasq.pid --listen-address=127.0.0.1 --conf-file=/var/run/nm-dns-dnsmasq.conf --cache-size=400 --proxy-dnssec

/etc/resolve.conf nên được trỏ đến thể hiện dnsmasq cục bộ:

$ cat /etc/resolv.conf
# Generated by NetworkManager
domain company1.corp
search company1.corp
nameserver 127.0.0.1

và chúng ta có thể thấy những gì máy chủ dnsmasq đang sử dụng:

# cat /var/run/nm-dns-dnsmasq.conf 
server=/company2.corp/10.102.208.51
server=/10.in-addr.arpa/10.102.208.51
server=192.168.1.244
server=192.168.1.239

thực sự tốt đẹp, cảm ơn bạn! giải pháp rất đơn giản và dễ dàng nhưng đáng buồn là không được nhiều người biết đến - không thể cưỡng lại, xin lỗi
akostadinov

Điều này dường như hoạt động khi kết hợp một kết nối cục bộ với một hoặc hai VPN. Có vẻ như nó không hoạt động với hai kết nối địa phương. Hiện tại tôi đang kết nối với mạng văn phòng qua Ethernet, đáng buồn là kết nối Internet ngược dòng đã bị lỗi. Ngoài ra, tôi được kết nối qua USB Ethernet (điện thoại của tôi) với Internet hoạt động. Tôi không thể yêu cầu NetworkManager áp dụng tên miền cho máy chủ DNS văn phòng.
Oskar Berggren

@OskarBerggren: Trên ethernet văn phòng của bạn, dưới tab IPv4, đánh dấu vào "Chỉ sử dụng kết nối này cho các tài nguyên trên mạng của nó."
Gary van der Merwe

@GaryvanderMerwe Đó chính xác là những gì tôi đã thử, quên viết nó. Dường như có một yêu cầu lỗi / tính năng liên quan: bugzilla.gnome.org/show_orms.cgi?id=685962
Oskar Berggren

FYI không có tùy chọn để sử dụng uboundvì vậy DNSSEC đang hoạt động, xem fedoraproject.org/wiki/Networking/NameResolution/DNSSEC
akostadinov

0

Có vẻ như NetworkManager chỉ đơn giản là ghi đè /etc/resolv.confvà không sử dụng openresolv. Theo FS # 24635 , NetworkManager có hỗ trợ openreslov, nhưng ban đầu nó không được kích hoạt trong bản dựng. Phiên bản Arch Linux nào bạn đang chạy và phiên bản của gói quản trị mạng là gì?


Networkmanager 0.9.4.0-6 NetworkManager đang gọi giải phápvvvonon và không ghi vào /etc/resolev.conf. Vấn đề là NetworkManager đang hợp nhất thông tin dns và chuyển nó tới decveconf dưới dạng một giao diện chứ không phải là thông tin cho các giao diện riêng biệt.
Gary van der Merwe

0

Làm như Gary van der Merwe trả lời, nhưng trong

/etc/NetworkManager/NetworkManager.conf

Tôi đã phải thêm

[main]
dns=dnsmasq

vào tập tin. Không chỉ

dns=dnsmasq

Điều này là do tất cả các cài đặt trong tệp đó phải nằm trong một phần và bản phân phối của tôi, manjaro (archlinux), phiên bản của gói NetworkManager không điền vào tệp cấu hình. (Tôi giả sử rằng bản phân phối của Gary làm vì dòng đề xuất của anh ta làm việc cho anh ta)

Một lưu ý khác, mọi cấu hình dnsmasq phải có trong tệp cấu hình trong phần này

/etc/NetworkManager/dnsmasq.d/

danh mục. Nó có thể là một thư mục khác trên máy của bạn. Tôi đã học được thư mục đang được sử dụng bằng cách nhìn vào dòng NetworkManager sử dụng để bắt đầu dnsmasq daemon. Bạn có thể thấy dòng này bằng cách chạy ps aux|grep dnsmasq. Bạn phải đợi để chạy nó cho đến khi sửa đổi cấu hình NetworkManager'ser và khởi động lại dịch vụ của nó.

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.