Làm cách nào tôi có thể thiết lập độ phân giải miền ký tự đại diện (127.0.0.1) vào ngày 18.04?


18

Trên Ubuntu 14.04 tôi đang sử dụng dnsmasq để phân giải các tên miền wildcard example.com cho máy cục bộ (máy tính để bàn ở nhà).

Sau khi đọc nhiều xung quanh, tôi không thể sắp xếp cuộc sống của mình giống nhau trên bản cài đặt sạch ngày 18.04.

Tất cả những gì tôi muốn đạt được vào lúc này là:

  • cho ping example.com ping 127.0.0.1 chứ không phải 93.184.216.34;
  • cho ping anysubdomain.example.com cũng ping 127.0.0.1;
  • ping google.com để ping google.com thật thông qua bộ định tuyến / IP DNS.

Chắc chắn điều này phải đơn giản, thậm chí tầm thường?

Nhưng tôi đã bối rối. Tôi có thể giải quyết được example.com nhưng chỉ với chi phí phá vỡ mọi thứ khác.

Tôi có thể làm cái này như thế nào?


1
Tại sao không chỉ cài đặt dnsmasq như bạn đã làm vào ngày 14.04?
vidarlo

1
@vidarlo Tất nhiên đó là điều đầu tiên tôi làm, như tôi đã chỉ ra trong câu hỏi của mình. Nhưng không giống như trong 14.04 dẫn đến lỗi "không thể tạo ra ổ cắm nghe cho cổng 53: Địa chỉ đã được sử dụng". Câu trả lời tôi chấp nhận hoạt động tốt mà không cần cài đặt dnsmasq một cách rõ ràng.
Nick Rice

Câu trả lời:


28

Dưới đây là các bước cho Ubuntu 18.04. Nó hơi lâu một chút vì systemd-resolvedkhông chơi tốt NetworkManagerkhi được cấu hình dnsmasq.

Tuy nhiên, tôi vẫn khuyên bạn nên bắt đầu dnsmasqtừ NetworkManagervì các thay đổi kết nối mạng (WIFI, có dây, ...) sẽ được xử lý trong suốt.

Kích hoạt dnsmasq trong NetworkManager

Chỉnh sửa tệp /etc/NetworkManager/NetworkManager.confvà thêm dòng dns=dnsmasqvào [main]phần, nó sẽ trông như thế này:

[main]
plugins=ifupdown,keyfile
dns=dnsmasq

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

Hãy để Quản lý mạng /etc/resolv.conf

sudo rm /etc/resolv.conf ; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf

Cấu hình example.com

echo 'address=/.example.com/127.0.0.1' | sudo tee /etc/NetworkManager/dnsmasq.d/example.com-wildcard.conf

Tải lại NetworkManagervà kiểm tra

NetworkManager nên được tải lại để những thay đổi có hiệu lực.

sudo systemctl reload NetworkManager

Sau đó, chúng tôi có thể xác minh rằng chúng tôi có thể truy cập một số trang web thông thường:

dig askubuntu.com +short
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69

Và cuối cùng xác minh rằng example.comtên miền và tên miền phụ được giải quyết là 127.0.0.1:

dig example.com askubuntu.example.com a.b.c.d.example.com +short
127.0.0.1
127.0.0.1
127.0.0.1

Ý bạn là gì với "systemd-Nghị quyết không chơi tốt với NetworkManager"?
Sebastian Stark

1
Khi NetworkManager sử dụng dns = dnsmasq, nó sẽ báo cho systemd được giải quyết để sử dụng dnsmasq, có thể là tự động.
pim

1
Cảm ơn bạn, điều này đã làm việc hoàn hảo! Dường như tôi không thể cho bạn tiền thưởng trong một giờ nữa, và vì nó đã đi vào một buổi sáng ở đây, tôi đi ngủ bây giờ và sẽ làm điều đó khi tôi quay trở lại vào ngày mai.
Nick Rice

2
Tuyệt vời. Tôi đã đọc nhiều kỹ thuật khác nhau. Đây là một trong những cuối cùng đã làm việc.
Redsandro

3
Đối với những người thích hoàn nguyên về hệ thống được giải quyết, mặc định /etc/resolv.conftrỏ đến /run/systemd/resolve/stub-resolv.conf.
Pothi Kalimuthu

2

Trước tiên, đảm bảo trong /etc/NetworkManager/NetworkManager.confdòng sau không có mặt hoặc nhận xét:

dns=dnsmasq

Khởi động lại Trình quản lý mạng:

sudo systemctl restart NetworkManager

Đảm bảo rằng dnsmasq do NetworkManager kiểm soát không chạy nữa, bằng cách giết tiến trình hoặc khởi động lại hệ thống của bạn.

Sau đó cài đặt dnsmasq:

sudo apt install dnsmasq

Thêm vào như sau /etc/dnsmasq.d/example.com:

address=/example.com/127.0.0.1

Khởi động lại dnsmasq:

sudo systemctl restart dnsmasq

Bây giờ bạn nên ghi đè ký tự đại diện cho ví dụ.com.


1
Tôi không thể làm điều này để làm việc. Ngay lập tức sau khi cài đặt tối thiểu sạch (với tùy chọn "xóa đĩa"), sudo apt install dnsmasqlỗi "không thể tạo ổ cắm nghe cho cổng 53: Địa chỉ đã được sử dụng". Dù sao thì tôi vẫn tiếp tục đến cuối cùng trong trường hợp một bước sau giải quyết được điều đó, nhưng nó đã không làm được và điều này không hiệu quả.
Nick Rice

Sau đó, dnsmasq được khởi động bởi NetworkManager vẫn đang chạy. Vì vậy, trước tiên nó nên bị vô hiệu hóa, cuối cùng bị giết và chỉ sau đó gói dnsmasq mới được cài đặt.
Sebastian Stark

Cảm ơn, Sebastian. Tuy nhiên tôi đã chấp nhận câu trả lời của pim, nó hoạt động hoàn hảo, vì vậy tôi có thể tiếp tục ngay bây giờ mà không cần phải chơi với nó nữa.
Nick Rice

@NickRice Không có vấn đề gì với điều này, nhưng có lẽ những người khác muốn thử
Sebastian Stark

Vâng tất nhiên, Sebastian. Tôi đã thử câu trả lời của bạn trước vì nó đơn giản nhất và nếu tất cả những gì nó cần là một bước ban đầu được thêm vào thì đó là một bước rất tốt.
Nick Rice

0

Điều này sẽ không đơn giản như chỉnh sửa tập tin máy chủ. Bạn có một cặp đôi tùy chọn:

Proxy DNS python này sẽ xử lý các ký tự đại diện trong / etc / hosts

Sử dụng DNSmasq


Cảm ơn. Liên kết của bạn đến câu hỏi DNSmasq là những gì tôi đang làm trong 14.04. Chỉ làm tương tự trong bản cài đặt 18.04 mới không hoạt động do xung đột cổng. Vì vậy, ra khỏi hộp một cái gì đó khác cần làm so với điều đó. Nhìn vào tất cả các mã cần thiết cho proxy DNS python, tôi không thể tin tất cả những gì cần thiết. Đó không phải là ngoại trừ, tôi cho rằng, đối với những người khăng khăng sử dụng / etc / hosts.
Nick Rice

Bạn có thể làm gì netstat -tulpnđể kiểm tra những gì sử dụng cổng? EDIT: Nevermind, đã thấy câu trả lời được chấp nhận. vấn đề là giải quyết systemd.
Harikrish Nam R
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.