Định tuyến TLD hoàn chỉnh (ví dụ * .dev) đến 127.0.0.1


29

Đối với mục đích phát triển, tôi muốn tất cả các yêu cầu DNS tới TLD .dev để chuyển tiếp đến PC của riêng tôi.

Các tập tin máy chủ không đủ. Tôi sử dụng nhiều tên miền và nhiều tên miền phụ. Tôi sẽ phải thêm một dòng cho mỗi kết hợp.

Tôi đã đọc được rằng một bộ chuyển tiếp DNS như DNSmasq có thể được sử dụng để thực hiện công việc (ví dụ như được mô tả ở đây ). Ngoài ra phần mềm này đã được cài đặt trên Ubuntu 12.10.

Vấn đề là tôi không thấy cách thức và nơi tôi nên định cấu hình DNSmasq, nghĩa là tôi nên đặt dòng này ở đâu:

address=/dev/127.0.0.1

1
Bạn có thể không muốn sử dụng .devnhư Google đã lấy nó. Tôi vẫn đang nghiên cứu xem họ sẽ sử dụng nó vào mục đích gì và họ có kế hoạch cho những người thường xuyên kết nối với nó hay chỉ là nhân viên, nhưng bạn có thể không muốn chuyển hướng tất cả quyền truy cập trong trường hợp đó là trước đây, trừ khi đây hoàn toàn là một hộp kiểm tra sẽ không bao giờ kết nối với máy chủ bên ngoài.
chiến thắng

Câu trả lời:


18

Dnsmasq độc lập hoàn toàn (máy chủ DHCP và DNS) không được cài đặt theo mặc định trong Ubuntu 12.04 và 12.10, nhưng gói có tên dnsmasq-base được cài đặt theo mặc định trong Ubuntu Desktop 12.04 và 12.10. Gói dnsmasq-base chứa nhị phân dnsmasq và được NetworkManager sử dụng.

Để làm những gì bạn muốn, bạn sẽ cần sử dụng dnsmasq làm máy chủ DNS lưu trữ. Bạn cần phải:

  • Cài đặt dnsmasq sudo apt-get cài đặt dnsmasq
  • Thay đổi cài đặt mạng của bạn, để máy tính của bạn sử dụng chính nó như máy chủ dns.
  • Thực hiện các thay đổi cho các tập tin cấu hình:

Tạo /etc/dnsmasq.d/dev-tldvới các nội dung sau:

local=/dev/

address=/dev/127.0.0.5

Lệnh đầu tiên cho biết *.devcác yêu cầu không thể được chuyển tiếp đến máy chủ DNS thực của bạn. Thứ hai nói *.devgiải quyết 127.0.0.5đó là localhost.

  • Khởi động lại dịch vụ dnsmasq (không phải người quản lý mạng)

Cảm ơn bạn! Thật vô cùng hữu ích khi tôi biết rằng DNSMasq hiện tại không phải là vấn đề thực sự. Sau khi cài đặt gói hoàn chỉnh và cấu hình nó theo cách tôi đã mô tả trước khi tôi làm cho nó hoạt động. :)
Roel van Duijnhoven

1
Tôi muốn câu trả lời khác cho các cài đặt máy tính để bàn gần đây. Đối với các cài đặt máy tính để bàn gần đây, bạn sẽ chạy hai trường hợp dnsmasq theo cách này. Câu trả lời của bạn có thể rất hữu ích trong các thiết lập không phải của Trình quản lý mạng, các cài đặt cũ hơn (không sử dụng dnsmasq) hoặc thậm chí cài đặt máy chủ!
gertvdijk

Đúng, câu trả lời khác là tốt nhất kể từ Ubuntu 12.10.
BenjaminRH

21

Trong Ubuntu 12.10 trở lên, bạn có thể thực hiện việc này với dnsmasq do NetworkManager điều hành.

  1. Tạo thư mục mkdir /etc/NetworkManager/dnsmasq.dnếu nó không tồn tại.

    sudo mkdir /etc/NetworkManager/dnsmasq.d
    
  2. Quăng dòng sau vào /etc/NetworkManager/dnsmasq.d/dev-tld.

    address=/dev/127.0.0.1
    
  3. (Ubuntu 12.10) Khởi động lại Trình quản lý mạng.

    sudo service network-manager restart
    
  4. (Ubuntu> 13.04) Khởi động lại Dnsmasq.

    sudo service dnsmasq restart
    
  5. Tận hưởng sự tuyệt vời.

nhập mô tả hình ảnh ở đây


1
Cảm ơn AbrahamVanHelpsing cho liên kết đến wiki wiki về cách làm điều này.
JRG

Sau khi làm theo các bước của bạn, tôi vẫn thấy "máy chủ không xác định" sau khi chạy ping. Tôi có cần định cấu hình / bật DNSMasq ở một nơi khác không? Hoặc cấu hình các thuộc tính mạng của tôi theo một cách khác? Cảm ơn!
Roel van Duijnhoven

Hấp dẫn. nó hiển thị tốt cho tôi
JRG

À, @RoelvanDuijnhoven - bạn đang chạy 12.10 hay 12.04? Hoạt động tốt cho tôi vào ngày 12.10.
JRG

Tôi đang chạy 12.10. Nhưng tôi cần phải đề cập rằng tôi đã cố gắng thay đổi một số tệp cấu hình trước khi đặt câu hỏi ở đây. Có thể những thay đổi này giảm thiểu giải pháp của bạn. Tuy nhiên, giải pháp của Javier Rivera đã làm được điều đó!
Roel van Duijnhoven

1

Các công việc sau đây đã làm việc cho tôi trong Ubuntu 16.04:

  1. cài đặt, dựng lên dnsmasq

    sudo apt-get -y install dnsmasq
    
  2. Chỉnh sửa dnsmasq.conftập tin:

    sudo nano /etc/dnsmasq.conf
    
  3. Thêm lệnh của bạn:

    address=/dev/127.0.0.1
    

    Đối với thẻ đại diện (*) thì bạn có thể sử dụng dấu chấm (.) Sau đó dnsmasq để giải quyết WHATEWER_YOU_PUT_HERE.yourmachine.yourdomaincùng một ip. Ví dụ,address=/.localhost.dev/127.0.0.1

  4. Khởi động lại dịch vụ dnsmasq:

    sudo /etc/init.d/dnsmasq restart
    

1

Chỉ cần cài đặt một bản 19.04 mới và cách duy nhất tôi làm cho nó hoạt động là vô hiệu hóa systemd-resolvedNetworkManagersử dụng dnsmasqthay thế cho DNS. NetworkManagerđã tích hợp sẵn hỗ trợ dnsmasqdnsmasq-basegói được cài đặt theo mặc định.

Tôi chỉ nhiều tên miền cho các máy ảo khác nhau như *.customerX.testđể 192.168.33.10*.productY.testđể 192.168.33.20và vân vân. Tôi sẽ không sử dụng *.devnữa mà thay vào đó là một trong những tên miền cấp cao nhất được bảo lưu .

Dung dịch

  1. Vô hiệu hóa systemd-resolved

    sudo systemctl disable systemd-resolved.service
    sudo systemctl stop systemd-resolved.service
    sudo rm /etc/resolv.conf
    
  2. Chỉnh sửa /etc/NetworkManager/NetworkManager.confđể sử dụng dnsmasqcho DNS.

    [main]
    dns=dnsmasq
    
  3. Đặt dnsmasqcấu hình vào/etc/NetworkManager/dnsmasq.d/test-tld.conf

    address=/test/127.0.0.1
    address=/customerX.test/192.168.33.10
    
  4. và cuối cùng khởi động lại NetworkManagersẽ tạo ra một cái mới/etc/resolv.conf

    sudo systemctl restart network-manager.service
    
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.