Vấn đề
Tôi muốn chặn các độ phân giải DNS trả về địa chỉ IP phạm vi riêng tư. Những gì tôi đã tìm thấy cho đến nay là để làm điều đó, bạn cần thiết lập máy chủ DNS bộ nhớ cache/đệ quy. Tuy nhiên, vì tôi muốn sử dụng nó bên trong docker, đó là nơi tôi gặp khó khăn.
Cách đơn giản nhất tôi tìm thấy là sử dụng dnsmasq
(như đã giải thích trong phần khác này câu trả lời). Mặt khác, chỉ cần chạy một quy trình duy nhất để tìm hiểu về giám sát
giải quyết vấn đề đó. Tuy nhiên, đã tạo một hình ảnh docker mẫu và khi tôi sử dụng máy chủ dns localhost (dnsmasq
) bằng cách thêm cờ --dns 127.0.0.1
hoặc thay thế /etc/resolv.conf
từ bên trong container tôi gặp lỗi ** máy chủ không thể tìm thấy google.com: TỪ CHỐI
, điều này chỉ có ý nghĩa sau cảnh báo tôi nhận được tại thời điểm chạy vùng chứa:
CẢNH BÁO: Cài đặt DNS máy chủ cục bộ (--dns=127.0.0.1) có thể không thành công trong vùng chứa.
Môi trường
Hình ảnh docker mẫu:
TỪ Ubuntu: mới nhất
CHẠY bản cập nhật apt &&\
nâng cấp apt -y
CHẠY cài đặt apt -y người giám sát \
dnsmasq \
dnsutils \
iputils-ping \
nano
CHẠY echo "stop-dns-rebind"> /etc/dnsmasq.d/stop-rebinding
SAO CHÉP supervisor.conf /etc/supervisor.conf
ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisor.conf"]
người giám sát.conf:
[giám sát]
gật đầu = đúng
logfile=/dev/stdout
logfile_maxbytes=0
[chương trình:dnsmasq]
lệnh = dnsmasq --no-daemon
thiết bị xuất chuẩn_logfile=/dev/thiết bị xuất chuẩn
thiết bị xuất chuẩn_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
Xây dựng:
xây dựng docker sudo. -t samplednsmasq
Chạy:
Sudo docker run -it --dns 127.0.0.1 --rm samplednsmasq:latest
Nó có khả thi không?
Tôi muốn biết liệu có cách nào để làm cho nó hoạt động không (không sử dụng nhiều vùng chứa như docker-compose) và dnsmasq, tôi cũng sẵn sàng cho các lựa chọn thay thế khác không liên quan đến máy chủ bộ nhớ đệm dns.
Dung dịch:
đã thay đổi giám sát viên.conf
đến:
[giám sát]
gật đầu = đúng
logfile=/dev/stdout
logfile_maxbytes=0
[chương trình:dnsmasq]
lệnh = dnsmasq --no-daemon --interface=lo --stop-dns-rebind
thiết bị xuất chuẩn_logfile=/dev/thiết bị xuất chuẩn
thiết bị xuất chuẩn_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
Cũng cập nhật Dockerfile
TỪ Ubuntu: mới nhất
CHẠY bản cập nhật apt &&\
nâng cấp apt -y
CHẠY cài đặt apt -y người giám sát \
dnsmasq \
dnsutils \
iputils-ping \
nano \
công cụ mạng
CHẠY echo "listen-address=127.0.0.1\nbind-interfaces\nstop-dns-rebind" > /etc/dnsmasq.d/stop-rebinding &&\
tiếng vang "\nserver=8.8.8.8\nserver=8.8.4.4\nno-resolv" >> /etc/dnsmasq.conf
SAO CHÉP supervisor.conf /etc/supervisor.conf
ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisor.conf"]