2016-01-14 17 views
12

Tôi sử dụng plugin mạng Weave trên Docker-Swarm.Cách truy cập Weave DNS-Server từ bên ngoài?

Tôi đã tạo một mạng docker với một dải IP cụ thể, khác với Mạng Weave mặc định, mà tôi định tuyến từ mạng nội bộ của mình.

Để làm cho vùng chứa thậm chí còn dễ truy cập hơn, tôi sử dụng dệt để đính kèm các tên DNS như tên người dùng.auto.mycompany.de. Bây giờ tôi muốn truy cập những người từ mạng công ty của tôi. Vấn đề là, dệt chỉ cho phép truy cập vào DNS dệt từ máy chủ cục bộ.

Giống như trên một trong các nút bầy đàn của tôi, tôi có thể làm:

host foobar.auto.mycompany.de 172.17.0.1 
Using domain server: 
Name: 172.17.0.1 
Address: 172.17.0.1#53 
Aliases: 

foobar.auto.mycompany.de has address 10.40.13.3 
Host foobar.auto.mycompany.de not found: 3(NXDOMAIN) 
Host foobar.auto.mycompany.de not found: 3(NXDOMAIN) 

Nhưng tôi không tìm thấy một cách để làm cho container dệt truy cập vào một trong những IP từ này (10.40.130/24) docker mạng hoặc lộ cổng đến nút swarm.

Cách duy nhất tôi có thể nghĩ đến, nhưng không thích, đang làm một cái gì đó như thế này:

iptables -t nat -A DOCKER -p tcp --dport 53 -j DNAT --to-destination 172.17.0.1:53 

(điều này không làm việc, nó chỉ là ý tưởng)

Hoặc làm xáo trộn sự dệt kịch bản để làm cho nó lộ ra cổng khi bắt đầu container dệt.

Có ai biết giải pháp nào tốt hơn không?

Trả lời

2

Trong thực tế thiết lập các quy tắc

iptables -A DOCKER -p tcp -m tcp --dport 53 -j DNAT --to-destination 172.17.0.1:53 
iptables -A DOCKER -p udp -m udp --dport 53 -j DNAT --to-destination 172.17.0.1:53 

hiện nó. Khi tôi lần đầu tiên thử điều đó, tôi chỉ đơn giản là bỏ qua để xem, rằng yêu cầu của tôi sẽ đến từ "bên ngoài" máy chủ để làm việc, không phải từ bên trong thiết bị loopback.

Vẫn không phải là một giải pháp khá nhưng nó thực hiện công việc. Tôi rất mong được thấy các giải pháp tốt hơn từ các bạn.

(Giá trị tiền thưởng!)

Các vấn đề liên quan