Làm cách nào để thực thi dnsmasq chỉ sử dụng máy chủ dns ngược dòng cho một số tên miền được chỉ định?


15

Ngay bây giờ tôi đã có dòng sau trong dnsmasq.conf, xử lý tốt tất cả các yêu cầu ( /#/phù hợp với bất kỳ tên miền nào; điều này là bắt buộc):

address=/#/127.0.0.1

Tuy nhiên, có một số tên miền cần được phân giải thành các địa chỉ IP khác 127.0.0.1.

Là giải pháp tạm thời, chúng đã được thêm vào /etc/hosts:

209.85.148.95   ajax.googleapis.com
207.97.227.245  underscorejs.org
72.21.194.31    s3.amazonaws.com

Thật không may, đây là một giải pháp rất tạm thời: nó sẽ ngừng hoạt động ngay khi địa chỉ IP của bất kỳ miền mục tiêu nào thay đổi.

Câu hỏi của tôi là: làm thế nào để thực thi dnsmasq sử dụng máy chủ dns ngược dòng để giải quyết địa chỉ IP của một số tên miền (được chỉ định)?

Câu trả lời:


28

Bạn có thể làm điều này bằng cách sử dụng lệnh server=eg

server=/ajax.googleapis.com/8.8.8.8

sẽ truy vấn máy chủ DNS công cộng của Google cho tên miền ajax.googleapis.com, tương tự

server=/amazonaws.com/209.244.0.3

sẽ truy vấn máy chủ DNS công cộng của Level3 cho miền amazonaws.com.

Bạn có thể nhóm nhiều tên miền lại với nhau

server=/co.uk/com/8.8.4.4

Sẽ gửi các tên miền .co.uk và .com đến máy chủ DNS vào ngày 8.8.4.4

Bạn cũng có thể có nhiều server=chỉ thị

−S, --server = [/ [<domain>] / [domain /]] [<ipaddr> [# <port>] [@ <source> [# <port>]]

Chỉ định địa chỉ IP của sever ngược dòng trực tiếp. Đặt cờ này không ngăn chặn việc đọc /etc/resolv.conf, sử dụng -R để làm điều đó. Nếu một hoặc nhiều tên miền tùy chọn được cung cấp, máy chủ đó chỉ được sử dụng cho các tên miền đó và chúng chỉ được truy vấn bằng cách sử dụng máy chủ được chỉ định. Điều này được dành cho các máy chủ tên riêng: nếu bạn có một máy chủ tên trên mạng liên quan đến các tên có dạng xxx.iternal.thekelleys.org.uk tại 192.168.1.1, sau đó đưa cờ -S /i INTERNal.thekelleys.org.uk/ 192.168.1.1 sẽ gửi tất cả các truy vấn cho các máy nội bộ đến máy chủ tên đó, mọi thứ khác sẽ đến các máy chủ trong /etc/resolv.conf. Một đặc tả miền trống, // có ý nghĩa đặc biệt là "chỉ tên không đủ tiêu chuẩn" tức là tên mà không có bất kỳ dấu chấm nào trong đó. Một cổng không chuẩn có thể được chỉ định là một phần của địa chỉ IP bằng ký tự #.

Cũng được phép là cờ -S cung cấp tên miền nhưng không có địa chỉ IP; điều này cho dnsmasq biết rằng một miền là cục bộ và nó có thể trả lời các truy vấn từ / etc / hosts hoặc DHCP nhưng không bao giờ nên chuyển tiếp các truy vấn trên miền đó tới bất kỳ máy chủ ngược dòng nào. local là một từ đồng nghĩa cho máy chủ để làm cho các tệp cấu hình rõ ràng hơn trong trường hợp này.

Địa chỉ IP thứ hai tùy chọn sau ký tự @ cho dnsmasq biết cách đặt địa chỉ nguồn của các truy vấn cho máy chủ tên này. Nó phải là một địa chỉ thuộc về máy mà dnsmasq đang chạy nếu không dòng máy chủ này sẽ được ghi lại và sau đó bỏ qua. Cờ cổng truy vấn được bỏ qua cho bất kỳ máy chủ nào có địa chỉ nguồn được chỉ định nhưng cổng có thể được chỉ định trực tiếp như một phần của địa chỉ nguồn.


Tôi không nghĩ anh ta cần nhiều serverdòng: bất kỳ địa chỉ nào anh ta muốn không giải quyết (127.0.0.1), anh ta có thể thêm chúng vào bằng addresscác dòng; bất cứ điều gì khác, DNSMasq sẽ truy vấn server. Khá chắc chắn đó là cách thiết lập của tôi.
gravyface

1
@gravyace: Tôi đọc câu hỏi khi muốn giải quyết mọi thứ thành 127.0.0.1 với một số ngoại lệ mà anh ta muốn sử dụng DNS để giải quyết trong trường hợp họ thay đổi địa chỉ. Tôi thấy cách này là sử dụng chỉ thị của máy chủ.
user9517 được hỗ trợGoFundMonica

Có lẽ vậy. Ai biết. Dù bằng cách nào, điều đó sẽ khiến anh ấy đi.
gravyface

Hoạt động như một lá bùa!
nrph
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.