これは、Docker、pi-hole(コンテナー)、およびwormholeプロキシ(コンテナー)を同じホストで実行するホーム実験です。 DockerHostのOSはRHEL7.xです。
私の当初の目的はpi-holeについて詳しく知ることだったので、VMWareESXI内でホストされているVM)でコンテナーとしてサービスをホストしました。一部のLinux VMでは、pi-を使用できました。 /etc/resolv.conf
ファイルを編集してpi-holeを指すようにし、DNSサーバーとしての穴を作成します。そこではすべて正常に機能します。
そのため、物理的なプライマリデスクトップ(Windows 10)でテストする場合、ネットワークアダプターの設定でDNSサーバーを変更する代わりに、pi-と一緒にフォワードプロキシサーバー(ワームホールプロキシ)コンテナーをホストできると思いました。同じドッカーホスト上の穴コンテナ。そして、DNSサーバーとしてpi-holeを使用するようにForwardProxyサーバーに指示するだけです。
Forward ProxyServerがpi-holeをDNSサーバーとして使用する場合に問題が発生します。 Forward ProxyServerログに次のエラーメッセージが表示されます。
wormhole_1_e0b4b0824de0 | 2018-10-07 05:32:28,528 wormhole[5]: [691dd8][192.168.20.40]: CONNECT 502 incoming.telemetry.mozilla.org:443 (gaierror: -3 Try again)
wormhole_1_e0b4b0824de0 | 2018-10-07 05:32:28,692 wormhole[5]: [643358][192.168.20.40]: CONNECT 502 incoming.telemetry.mozilla.org:443 (gaierror: -3 Try again)
wormhole_1_e0b4b0824de0 | 2018-10-07 05:32:28,693 wormhole[5]: [654eb8][192.168.20.40]: CONNECT 502 incoming.telemetry.mozilla.org:443 (gaierror: -3 Try again)
Forward Proxy Serverコンテナとpi-holeコンテナの両方を同じDockerホストでホストする場合、プロキシサーバーにDNSとしてpi-holeを使用するように明示的に指示しないと、正常に機能します。別のVM)でフォワードプロキシサーバーコンテナをホストし、DNSサーバーとしてpi-holeを使用するようにプロキシサーバーを指定すると、それも正常に機能します。いくつかの形式の競合がありますが、ポートを共有していないため、どうなるかわかりません。
私の問題を簡単に再現するために、これが私が使用したdocker-compose.yml
sです。
以下は、ワームホールプロキシ(フォワードプロキシ)サーバーのdocker-compose.yml
です。 dns:
はDockerホストを指しています。
version: "3"
services:
wormhole:
image: bashell/wormhole:latest
ports:
- "8888:8800/tcp"
- "8888:8800/udp"
environment:
TZ: "America/New_York"
restart: always
dns:
- 192.168.10.120
以下は、パイホールのdocker-compose.yml
です。ボリュームのホストマウントポイントを変更する必要があります。
version: "3"
services:
pihole:
image: pihole/pihole:v4.0_AMD64
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "80:80/tcp"
- "443:443/tcp"
environment:
# enter your docker Host IP here
ServerIP: 192.168.10.120
# IPv6 Address if your network supports it
# ServerIPv6:
# jwilder/proxy envs, see readme for more info
PROXY_LOCATION: pihole
VIRTUAL_Host: pihole.local
VIRTUAL_PORT: 80
TZ: "America/New_York"
DNS1: 208.67.222.222
DNS2: 1.1.1.1
WEBPASSWORD: stackexchange
# Add your own custom hostnames you need for your domain
# extra_hosts:
# Point any of the jwilder virtual_Host addresses
# to your docker Host ip address
# - 'pihole.yourdomain.local:192.168.1.55'
volumes:
- '/Development/Applications/pi-hole/volumes/pihole/:/etc/pihole/:z'
# WARNING: if this log don't exist as a file on the Host already
# docker will try to create a directory in it's place making for lots of errors
- '/Development/Applications/pi-hole/volumes/log/pihole.log:/var/log/pihole.log:z'
- '/Development/Applications/pi-hole/volumes/dnsmasq.d:/etc/dnsmasq.d:z'
restart: always
フォワードプロキシサーバーがDockerホストをDNSサーバーとして指すようにする代わりに、フォワードプロキシサーバーとDNSサーバーの両方が同じDockerネットワーク上にあり、フォワードプロキシサーバーがDockerによって割り当てられたDNSサーバーのIPアドレスを指すようにしました。 。
以下はdocker-compose.yml
フォワードプロキシサーバーの場合
version: "3"
services:
wormhole:
image: bashell/wormhole:latest
ports:
- "8888:8800/tcp"
- "8888:8800/udp"
environment:
TZ: "America/New_York"
restart: always
dns:
- 172.20.0.99
networks:
- beyonddc
networks:
beyonddc:
external: true
以下はdocker-compose.yml
私のDNSサーバー用
version: "3.5"
services:
pihole:
image: pihole/pihole:v4.0_AMD64
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "80:80/tcp"
- "443:443/tcp"
networks:
beyonddc:
ipv4_address: 172.20.0.99
environment:
# enter your docker Host IP here
ServerIP: 192.168.10.120
# IPv6 Address if your network supports it
ServerIPv6: 2601:189:4200:eb2:250:56ff:febf:d245
# jwilder/proxy envs, see readme for more info
PROXY_LOCATION: pihole
VIRTUAL_Host: pihole.local
VIRTUAL_PORT: 80
TZ: "America/New_York"
DNS1: 208.67.222.222
DNS2: 1.1.1.1
WEBPASSWORD: stackexchange
# Add your own custom hostnames you need for your domain
# extra_hosts:
# Point any of the jwilder virtual_Host addresses
# to your docker Host ip address
# - 'pihole.yourdomain.local:192.168.1.55'
volumes:
- '/Development/Applications/pi-hole/volumes/pihole/:/etc/pihole/:z'
# WARNING: if this log don't exist as a file on the Host already
# docker will try to create a directory in it's place making for lots of errors
- '/Development/Applications/pi-hole/volumes/log/pihole.log:/var/log/pihole.log:z'
- '/Development/Applications/pi-hole/volumes/dnsmasq.d:/etc/dnsmasq.d:z'
restart: always
networks:
beyonddc:
driver: bridge
# Must specify the name for the network again otherwise by default
# Docker will use the folder name as prefix of the network.
# The name field is only available in version 3.5 and beyond
name: beyonddc
ipam:
config:
- subnet: 172.20.0.0/16
これら2つのdocker-compose.ymlファイルを1つにマージすることをお勧めします。
version: "3"
services:
wormhole:
image: bashell/wormhole:latest
link: pihole:dns.local
ports:
- "8888:8800/tcp"
- "8888:8800/udp"
environment:
TZ: "America/New_York"
restart: always
dns:
- dns.local
pihole:
image: pihole/pihole:v4.0_AMD64
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "80:80/tcp"
- "443:443/tcp"
environment:
# enter your docker Host IP here
ServerIP: 192.168.10.120
# IPv6 Address if your network supports it
# ServerIPv6:
# jwilder/proxy envs, see readme for more info
PROXY_LOCATION: pihole
VIRTUAL_Host: pihole.local
VIRTUAL_PORT: 80
TZ: "America/New_York"
DNS1: 208.67.222.222
DNS2: 1.1.1.1
WEBPASSWORD: stackexchange
# Add your own custom hostnames you need for your domain
# extra_hosts:
# Point any of the jwilder virtual_Host addresses
# to your docker Host ip address
# - 'pihole.yourdomain.local:192.168.1.55'
volumes:
- '/Development/Applications/pi-hole/volumes/pihole/:/etc/pihole/:z'
# WARNING: if this log don't exist as a file on the Host already
# docker will try to create a directory in it's place making for lots of errors
- '/Development/Applications/pi-hole/volumes/log/pihole.log:/var/log/pihole.log:z'
- '/Development/Applications/pi-hole/volumes/dnsmasq.d:/etc/dnsmasq.d:z'
restart: always
そうすることで、両方のコンテナが同じDockerネットワークに自動的に追加され、コンテナのリンクが可能になります(上記のワームホールサービスを参照してください。ここでdns.local
piholeコンテナのホスト名として、ただしワームホールコンテナのスコープ内のみ。その文は意味がありますか?)