Category: Linux

  • なぜTailscaleを経由してpi-holeを利用することはこんなにも簡単なのか?

    なぜTailscaleを経由してpi-holeを利用することはこんなにも簡単なのか?

    はじめに pi-holeによるAd Blockが良すぎて、自宅外からも使いたくなったためVPNを利用することに決めた。 その際に採用したのがTailscale。実際の設定手順は下記を参考にすることでものの30分で完了したと思う。 Access a Pi-hole from anywhere · Tailscale Docs 問題はその後、「なぜこんなにも簡単に済むのか」が説明できなかった。 自身はあらゆるすべての技術を理解しないと気が済まない、というタチではない。 ただ今回のtailscaleによるVPNの導入はあまりにも簡単すぎたし、その結果得られた効果が非常に大きかった。そのため、それがなぜ実現されたのかを説明できないことに気持ち悪さを感じた。 仮にこれを人に勧める際に「めっちゃいいよ、何がどうなってるか知らんけど」は自身が己に対して抱く理想ではないのだろう。 当初の自分の理解と違和感 下記のような捉え方をしていた。 一方で、Tailscale上ではpi-hole側のポート情報を与えてないにも関わらずなぜTailscale上のIPだけで通信ができるのか?と。 答えはDNSの基本中の基本にあった DNSへのリクエストはUDP/53で行われる、これが答えでした。 UDPは、TCPのような通信の信頼性確保のための処理がなく、その分クライアントおよびサーバ上でのプロトコルオーバヘッドは小さくなります。このことからDNSのような小さなデータをやりとりするときにおいては効率的、かつ高速に動作します。 そうか、DNSへのリクエストはUDPなのかと。そうすると次なる疑問が出てきたので、それはまた次回のトピックとして調べてみようと思う。 果たして、TCPを使う場合にはTailscaleを使ってどのようにしてリクエストを送れるのか? 追記 2025/07/04 果たして、TCPを使う場合にはTailscaleを使ってどのようにしてリクエストを送れるのか? UDPパンチングホールがほとんどではあると思うが、中にはTCPを使ったものも本当にあるみたい。 参考 TCPでホールパンチングしてみる https://zenn.dev/kota_yata/articles/de4218969753bb