問題:返信が別のアドレスから来たか、タイムアウトしました。

問題:返信が別のアドレスから来たか、タイムアウトしました。

dockerとIPv6を使ってPiHoleを設定する方法のいくつかのガイドを読んだ後、ネットワークでPiHoleを設定してみました。まず、私のISPはプレフィックス委任を提供します。この委任は、ルータ割り当て(RA)を介してネットワークの残りの部分にアドレスを提供するために使用されます。プレフィックスは固定されず、数日ごとに循環します。

ULA設定

br0私はUbiquity UDM-Proを使用しており、次のようにインターフェイスにULAプレフィックスを追加しました。

ip address add fd79:71d8:a0b7::1/64 dev br0

その直後に、私のすべてのIPv6対応デバイスには、そのプレフィックスを含むULAアドレスが割り当てられました。

端末構成

Dockerが機能するには、IPv6を明示的に有効にしてcidrスコープを提供する必要がありました。これを行うには、daemon.json次の内容でファイルを作成しました。/etc/docker

{
  "ipv6": true,
  "fixed-cidr-v6": "fd79:71d8:a0b7::/80"
}

ip6tables次に、次のコマンドでNATテーブルに追加しました。

sudo ip6tables -t nat -A POSTROUTING -s fd79:71d8:a0b7::/80 ! -o docker0 -j MASQUERADE

これにより、docker0インターフェイスはIPv6トラフィックを受信できます。もちろん、これらの変更は再起動後も維持されないため、これらの変更を再起動後も維持するパッケージもインストールしiptables-persistentましたnetfilter-persistent

以下を使用してIPv6接続を確立できることを確認しました。

$ docker run --rm -t busybox ping6 -c 4 google.com
PING google.com (2a00:1450:4017:811::200e): 56 data bytes
64 bytes from 2a00:1450:4017:811::200e: seq=0 ttl=56 time=62.514 ms
64 bytes from 2a00:1450:4017:811::200e: seq=1 ttl=56 time=61.256 ms
64 bytes from 2a00:1450:4017:811::200e: seq=2 ttl=56 time=61.503 ms
64 bytes from 2a00:1450:4017:811::200e: seq=3 ttl=56 time=61.850 ms

--- google.com ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 61.256/61.780/62.514 ms

ピンホール構造

構成はpihole非常に簡単です。以下を使用してコンテンツをyaml保存します。pihole.yamldocker-compose

version: "3.8"

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      # dns ports
      - "53:53/tcp"
      - "53:53/udp"
      # ports for http interface
      - "19080:80/tcp"
      - "19443:443/tcp"
    environment:
      # redacted full address
      FTLCONF_LOCAL_IPV4: 10.10.x.25
      # redacted full address
      FTLCONF_LOCAL_IPV6: fd79:71d8:a0b7:0:...:ae38
    # IPs of your DNS entries
    dns:
      # this is for resolved conf, assuming you have ubuntu and disabled it
      - 127.0.0.1
      # proper DNS entries follow
      - 1.1.1.1
      - 1.0.0.1
      - 2606:4700:4700::1111
      - 2606:4700:4700::1001
    # Recommended but not required (DHCP needs NET_ADMIN)
    #   https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
    cap_add:
      - NET_ADMIN
    restart: unless-stopped

私は使用しますdocker-compose -f pihole.yaml up

問題:返信が別のアドレスから来たか、タイムアウトしました。

問題は、他のコンピュータでは利用できないことです。イメージが実行されているマシンでは問題なく使用dockerできます。digたとえば、ホストにコマンドを入力すると、次のような結果が表示されます。

$ dig @fd79:71d8:a0b7:0:...:ae38 -p 53 google.com AAAA

; <<>> DiG 9.18.12-0ubuntu0.22.04.1-Ubuntu <<>> @fd79:71d8:a0b7:0:...:ae38 -p 53 google.com AAAA
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60684
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;google.com.            IN  AAAA

;; ANSWER SECTION:
google.com.     83  IN  AAAA    2a00:1450:4017:805::200e

;; Query time: 8 msec
;; SERVER: fd79:71d8:a0b7:0:...:ae38#53(fd79:71d8:a0b7:0:...:ae38) (UDP)
;; WHEN: Mon May 15 01:44:42 EEST 2023
;; MSG SIZE  rcvd: 67

ただし、他のLinuxベースのコンピュータでこのコマンドを入力しました。コマンドがタイムアウトしました。つまり、

dig -6 @fd79:71d8:a0b7:0:...:ae38 -p 53 google.com
;; communications error to fd79:71d8:a0b7:0:...:ae38#53: timed out
;; communications error to fd79:71d8:a0b7:0:...:ae38#53: timed out
;; communications error to fd79:71d8:a0b7:0:...:ae38#53: timed out

; <<>> DiG 9.18.12-0ubuntu0.22.04.1-Ubuntu <<>> -6 @fd79:71d8:a0b7:0:...:ae38 -p 53 google.com
; (1 server found)
;; global options: +cmd
;; no servers could be reached

調査のために住所がブロックされているか確認してみましたが、netcatポートが営業のために開いていることがわかりました。

nc -z fd79:71d8:a0b7:0:...:ae38 53 -v

Connection to fd79:71d8:a0b7:0:...:ae38 53 port [tcp/domain] succeeded!

さらに調査した結果、MacOSで使用するとより多くの情報が得られる可能性がありますdig。接続自体はタイムアウトにならないようですが、その他住所

MacOSの出力は、dig以前と同じアドレスを使用して次のようになります。

$ dig -6 @fd79:71d8:a0b7:0:...:ae38 google.com
;; reply from unexpected source: fd79:71d8:a0b7::60b#53, expected fd79:71d8:a0b7:0:...:ae38#53
;; reply from unexpected source: fd79:71d8:a0b7::60b#53, expected fd79:71d8:a0b7:0:...:ae38#53
; <<>> DiG 9.10.6 <<>> -6 @fd79:71d8:a0b7:0:5043:6018:fb4f:ae38 google.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

回答を提供するというアドレスを使用すると期待どおりに機能し、

dig -6 @fd79:71d8:a0b7::60b google.com
; <<>> DiG 9.10.6 <<>> -6 @fd79:71d8:a0b7::60b google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9440
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;google.com.            IN  A
;; ANSWER SECTION:
google.com.     156 IN  A   172.217.17.142
;; Query time: 22 msec
;; SERVER: fd79:71d8:a0b7::60b#53(fd79:71d8:a0b7::60b)
;; WHEN: Mon May 15 01:51:58 EEST 2023
;; MSG SIZE rcvd: 55

ビューインターフェイスIPを使用すると、ip -6 addr show dev enp9s0f1次のものを検索できます。

5: enp9s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether b4:xx:xx:xx:xx:a6 brd ff:ff:ff:ff:ff:ff
    inet 10.10.x.25/24 brd 10.10.x.255 scope global dynamic noprefixroute enp9s0f1
       valid_lft 83538sec preferred_lft 83538sec
    inet6 2a02:587:<redacted>/128 scope global dynamic noprefixroute 
       valid_lft 83539sec preferred_lft 83539sec
    inet6 fd79:71d8:a0b7::60b/128 scope global dynamic noprefixroute 
       valid_lft 83539sec preferred_lft 83539sec
    inet6 2a02:587:<redacted>/64 scope global dynamic noprefixroute 
       valid_lft 73590sec preferred_lft 73590sec
    inet6 fd79:71d8:a0b7:0:...:ae38/64 scope global dynamic noprefixroute 
       valid_lft 86138sec preferred_lft 86138sec
    inet6 fe80::1ea:<redacted>:eb62/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

なぜ別のアドレスから返信が来たのですか?ここに示すように、アウトバウンドアドレスに別のアドレスを使用するRFC4941を無効にしました。

$ nmcli con show "Wired connection 4" | grep ipv6.ip
ipv6.ip6-privacy:                       0 (disabled)

IPv6のルーティングは次のとおりです。

$ ip -6 route show
::1 dev lo proto kernel metric 256 pref medium
2a02:587:...::60b dev enp9s0f1 proto kernel metric 100 pref medium
2a02:587:...::/64 dev enp9s0f1 proto ra metric 100 pref medium
fd79:71d8:a0b7::60b dev enp9s0f1 proto kernel metric 100 pref medium
fd79:71d8:a0b7::/80 dev docker0 proto kernel metric 256 linkdown pref medium
fd79:71d8:a0b7::/80 dev docker0 metric 1024 linkdown pref medium
fd79:71d8:a0b7::/64 dev enp9s0f1 proto ra metric 100 pref medium
fe80::/64 dev docker0 proto kernel metric 256 linkdown pref medium
fe80::/64 dev br-5c9052b3a88b proto kernel metric 256 pref medium
fe80::/64 dev br-ba2b20fe7aa1 proto kernel metric 256 pref medium
fe80::/64 dev veth3fb9416 proto kernel metric 256 pref medium
fe80::/64 dev veth7a050e3 proto kernel metric 256 pref medium
fe80::/64 dev vethe299802 proto kernel metric 256 pref medium
fe80::/64 dev veth5110238 proto kernel metric 256 pref medium
fe80::/64 dev cali7ffb27b031d proto kernel metric 256 pref medium
fe80::/64 dev calib5cff4a4a14 proto kernel metric 256 pref medium
fe80::/64 dev cali6b881403436 proto kernel metric 256 pref medium
fe80::/64 dev calib1a2ba7ef9f proto kernel metric 256 pref medium
fe80::/64 dev cali20c73fad203 proto kernel metric 256 pref medium
fe80::/64 dev calib05d5a88d5c proto kernel metric 256 pref medium
fe80::/64 dev vxlan.calico proto kernel metric 256 pref medium
fe80::/64 dev enp9s0f1 proto kernel metric 1024 pref medium
default via fe80::...:62b3 dev enp9s0f1 proto ra metric 100 pref high

なぜこれが起こるのかを理解するのに役立つ人はいますか?応答が常に他のアドレスから来る理由がわかりません... ISPが提供するプレフィックスは時間の経過とともに変更されるため、使用できないため、DNSサーバーに安定したULAアドレスを使用したいと思います。 tプライバシーアドレスを使用して再び言いますが、これは時間の経過とともに変わります。

ベストアンサー1

おすすめ記事