Claudeさんに相談した一部始終をベッタリ貼ります。
ネット掲示板、5chのドメイン変更に伴い、Macにおいては/etc/hostsを書いて
対処していましたがiPhoneからだと/etc/hostsにあたる設定はいじれない仕様に
なっており、Mac、iPhoneともtailscaleを導入済みなのでtailscaleとMacに
Macportsからdnsマスカレードを入れてどうこうしているうちにmacが
ネットに繋がらなくなってtailscaleを削除してネット接続を回復する、という
始末になりました。macにtailscaleを再インストールしつつ、iPhoneからの
専用ブラウザでの掲示板読み書きをできるようにしたいと思います。
状況を整理すると、やりたいことは「MacのDNSリゾルバ(dnsmasq)をTailscale経由でiPhoneのDNSサーバとして使う」という構成ですね。
iPhoneはTailscale経由でMacのdnsmasqに名前解決を問い合わせ、実際のHTTP通信は直接5chサーバーへ、という流れです。
手順
Step 1: MacにTailscaleを再インストール
tailscale.com/download からmacOS版をインストールしてサインイン。
(しかし、私は sudo port install tailscale で、インストールしました)
( MacPortsで入れた、と、のちに言ってるますが)
Step 2: MacにdnsmasqをMacPortsで入れる
sudo port install dnsmasq ### Step 3: dnsmasqの設定 `/opt/local/etc/dnsmasq.conf`(MacPortsの場合)に追記: # /etc/hostsの内容をDNS応答として使う no-resolv server=8.8.8.8 server=8.8.4.4 listen-address=100.x.x.x # ← MacのTailscale IPに変更
ポイント: listen-addressにはMacのTailscale IP(100.から始まるアドレス)を指定します。tailscale ip -4コマンドで確認できます。
ちなみに /etc/hosts の内容
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
172.67.141.144 menu.5ch.net
104.19.132.105 phoebe.bbspink.com
104.26.15.243 mercury.bbspink.com
104.26.15.243 ronin.bbspink.com
104.26.15.243 egg.5ch.net
104.26.15.243 itest.5ch.net
104.26.15.243 kako.5ch.net
104.26.15.243 mevius.5ch.net
104.26.15.243 kizuna.5ch.net
104.26.15.243 nova.5ch.net
104.26.15.243 hayabusa.5ch.net
104.26.15.243 hayabusa9.5ch.net
104.26.15.243 greta.5ch.net
104.26.15.243 krsw.5ch.net
104.26.15.243 fate.5ch.net
Step 3: MacのTailscaleでDNS設定(重要)
ここが前回ネット接続が切れた原因だった可能性があります。Tailscale AdminコンソールでDNSをグローバルに上書きするのではなく、Split DNSまたは「Override DNS」をオフにした状態で使うことが重要です。
Tailscale Admin Console → DNS → 「Override local DNS」は有効にしない。
Step 4: iPhoneのTailscale設定
iPhoneのTailscaleアプリを開く
「DNS」設定で、MacのTailscale IPをカスタムDNSとして追加
Tailscale Admin Console → DNS → 「Nameservers」に100.x.x.x(MacのIP)を追加
または Tailscale App側で「Custom DNS」を手動設定
Step 5: MacのdnsmasqをLaunchDaemonとして起動
bashsudo port load dnsmasq
再起動後も自動起動されます。
前回失敗した原因と対策
おそらく dnsmasqを0.0.0.0でlistenさせたか、または TailscaleのDNS上書き設定をグローバルにかけたため、Macの通常のDNS解決も影響を受けてネットに繋がらなくなったと思われます。
listen-addressをTailscaleのIPのみに限定することで、通常のMacのネット通信には干渉しなくなります。
設定後にdig @100.x.x.x mevius.5ch.netでMacから正引きテストすることをお勧めします。
Macportsでtailscale入れたが起動方法がわからない
MacPortsでインストールしたTailscaleは、通常のmacOS App Store版と起動方法が異なります。
確認と起動手順
まずインストール内容を確認:
port contents tailscale
起動方法
MacPortsのTailscaleはデーモンとして動かします:
デーモンを起動
sudo port load tailscale
または直接
sudo tailscaled &
デーモンが起動したら、次にTailscaleへログイン:
sudo tailscale up
ブラウザが開いてログイン画面が表示されるので、アカウントでサインインします。
状態確認
bashtailscale status # 接続状態の確認
tailscale ip -4 # MacのTailscale IPを確認(dnsmasq設定に使う)
注意点
MacPortsのTailscaleとApp Store版のTailscaleは同じアカウントに同じデバイス名で登録しようとすると競合することがあります。もし以前App Store版を使っていたなら、Tailscaleの管理コンソール(admin.tailscale.com)で古いデバイスエントリを削除しておくと安全です。
sudo port load tailscaleを実行してみて、エラーが出るようであれば内容を教えてください。
前回、ネットが途切れた時にmacのホスト名が上書き?されて変わってしまっている。直さないと?
状況を整理すると:
現在のMac(Mac mini-2)のTailscale IP:100.85.xxx.xxx
以前のMac mini-1のエントリ(100.72.xxx.xxx)がまだ残っている
今すぐやること
古いMac mini-1のエントリが残っているので、Tailscale管理コンソールで削除しておきましょう:
https://login.tailscale.com/admin/machines を開く
yuutamac-mini-1(100.72.xxx.xxx、33d/117d offline)を削除
同様に長期オフラインのエントリも整理
次のステップ
TailscaleのIPが確認できたので、dnsmasqの設定に進めます。
bashtailscale ip -4
→ 100.85.xxx.xxx が返るはず
このIPをdnsmasqのlisten-addressに使います。続けてdnsmasqの設定に進みますか?
では順番に進めましょう。まず現状確認から。
Step 1: dnsmasqのインストール確認
bashport installed dnsmasq
結果を貼ってください。sudo port install dnsmasq
Password:
--->Cleaning dnsmasq
--->Scanning binaries for linking errors
--->No broken files found
--->No broken ports found.15:27インストール済みですね。次は設定ファイルを編集します。
Step 2: 設定ファイルを開く
bashsudo nano /opt/local/etc/dnsmasq.conf
ファイルが開いたら、末尾に以下を追記してください:
上位DNSサーバー
server=8.8.8.8
server=8.8.4.4
TailscaleのIPのみでリッスン(Mac通常通信に干渉しないため)
listen-address=127.0.0.1
listen-address=100.85.xxx.xxx
/etc/hostsの内容をDNS応答として使う
addn-hosts=/etc/hosts
追記したら Ctrl+O → Enter で保存、Ctrl+X で終了。
完了したら教えてください。
Step 3: dnsmasq を起動
bashsudo port load dnsmasq
エラーなく終わったら動作確認:
bashsudo lsof -i :53 | grep dnsmasq
結果を貼ってください。
何も返ってこない。。
起動できていないようです。ログを見てみましょう。
sudo /opt/local/sbin/dnsmasq --test
設定ファイルの構文チェックです。結果を貼ってください。
dnsmasq: syntax check OK.
構文はOKです。では手動で起動してみましょう。
sudo /opt/local/sbin/dnsmasq --keep-in-foreground --log-facility=/dev/stderr
何かエラーメッセージが出ますか?
Mar 15 15:38:41 dnsmasq[5305]: started, version 2.90 cachesize 150
Mar 15 15:38:41 dnsmasq[5305]: compile time options: IPv6 GNU-getopt no-DBus no-UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack no-ipset no-nftset auth no-cryptohash no-DNSSEC loop-detect no-inotify (略)
起動できています!warningが出ていますが、設定で対処できます。
Step 4: 設定ファイルを修正
warningの指示通り--bind-dynamic相当の設定を追加します。
sudo nano /opt/local/etc/dnsmasq.conf
先ほど追記した内容にbind-dynamicを1行追加:
server=8.8.8.8
server=8.8.4.4
listen-address=127.0.0.1
listen-address=100.85.xxx.xxx
addn-hosts=/etc/hosts
bind-dynamic
保存したら Ctrl+C で今の手動起動を止めて、改めて:
bashsudo /opt/local/sbin/dnsmasq --keep-in-foreground --log-facility=/dev/stderr
warningが消えましたか?
sudo /opt/local/sbin/dnsmasq --keep-in-foreground --log-facility=/dev/stderr
dnsmasq: failed to create listening socket for 100.85.xxx.xxx: Address already in use
先ほどの手動起動がまだ残っています。一度killしましょう。
bashsudo pkill dnsmasq
それから再度:
sudo /opt/local/sbin/dnsmasq --keep-in-foreground --log-facility=/dev/stderr
sudo pkill dnsmasq
~ % sudo /opt/local/sbin/dnsmasq --keep-in-foreground --log-facility=/dev/stderr
dnsmasq: failed to create listening socket for 100.85.xxx.xxx: Address already in use
別のプロセスがポート53を使っています。確認しましょう。
bashsudo lsof -i :53
結果を貼ってください。
sudo lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mDNSRespo 231 _mdnsresponder 17u IPv4 0xc54c813afa7dff2b 0t0 UDP *:domain
(略)
dnsmasqはすでに動いています!(PID 5338)port loadで起動していたようです。
Step 5: 動作確認
別のターミナルタブを開いて、名前解決テスト:
dig @100.85.xxx.xxx mevius.5ch.net
ANSWER SECTIONに104.26.15.243が返ってきますか?
dig @100.85.xxx.xxx mevius.5ch.net
; <<>> DiG 9.10.6 <<>> @100.85.xxx.xxx mevius.5ch.net
; (1 server found)
;; global options: +cmd
(略)
完璧です!104.26.15.243が返ってきています。MacのDNSサーバーは正常に動作しています。
Step 6: iPhoneのTailscale設定
次はiPhoneがこのDNSサーバーを使うように設定します。
Tailscale管理コンソールで設定します(PCブラウザ推奨):
https://login.tailscale.com/admin/dns を開く
「Add nameserver」→「Custom」を選択
100.85.xxx.xxx を入力して追加
「Override local DNS」はオフのままにする
設定できたらiPhoneのTailscaleアプリを一度オフ→オンして接続し直してください。
完了したら教えてください。iPhoneから同じく名前解決できるか確認します。
下のスイッチは2つともいじらないのですね?
2つのスイッチはそのままオフでOKです。
iPhoneのtailscaleは既に切れていたのでオンにしました
では iPhoneから名前解決できるか確認しましょう。
iPhoneで Safari を開いて、以下のURLにアクセスしてみてください:
http://mevius.5ch.net
5chのページが開けますか?
また、専用ブラウザ(BBS用アプリ)でも試してみてください。
アクセスできていますが、2点問題があります。
URLがmevius.5ch.ioになっている → リダイレクトされています。mevius.5ch.netでアクセスできているのでDNSは機能しています
文字化け → サイト側のエンコーディングの問題でSafariでは起きやすいです
専用ブラウザ(BimoBrowser、Chaikaなど)で試してみてください。そちらでは正常に表示されるはずです。どのアプリを使っていますか?
Threadmaster. ◯
mae2c 開くが板の中のスレ順が最新書きこ順になっていない
(ソート=>時刻降順、で他の専ブラと同じ表示になりました)
twinkle ◯
Channeler ◯
完了した内容まとめ
Mac → Tailscale + dnsmasq で5chのDNSサーバー構築
iPhone → Tailscale経由でMacのdnsmasqを参照
動作確認済みアプリ → Threadmaster、Twinkle、Channeler、mae2ch(ソート設定済み)
一点だけ確認しておきたいのですが、Macを再起動したときにdnsmasqが自動起動するかまだ確認していません。
sudo port load dnsmasq
これは実行済みなのでLaunchDaemonに登録されているはずですが、念のため:
sudo launchctl list | grep dnsmasq
PIDの数字が表示されれば自動起動の設定もOKです。sudo launchctl list | grep dnsmasq
Password:
5338 0 org.macports.dnsmasq. 完璧です!5338というPIDが表示されているので自動起動も設定済みです。
全て完了しました
Macを再起動してもdnsmasqが自動的に立ち上がり、iPhoneからTailscale経由で5chにアクセスできる環境が整いました。
お疲れ様でした!