VPNトラブル iOS26.1 で回復
iPhone17 に切り替えて設定を移行していたけど、iPhone17 から 自宅 Buffalo ルータへの VPN(L2TP) が接続できない。今まで iPhone12 で iOS26 Beta を入れていても使えていたのに 機種変して iOS 26 の公式版で動かない。
んで、iOS26.1 Beta が早々にでているけど、『「iPhone 17」シリーズでWi-Fi接続が不安定に–一部ユーザーが不具合を報告』の記事の中に”iPhone17 はネットワークに新型チップが導入されていて、そのトラブル対策で 26.1 が公開”という話があった。ということで関連があるかと、早々に Beta インストールの設定を復活させ、iOS26.1 を入れてみたら、VPN が正しく接続できるようになった。
自宅ドメインがGoogleDNSで引けない
自宅サイトのドメイン名が9/18より、Google DNS(8.8.8.8) にて名前解決ができない状態。原因不明(後述 原因はmydns.jpへの水責めの影響)。その他の Public DNS では問題がない(はず)。mydns.jp への Dynamic DNS の情報更新も問題ない(はず)。
状況確認
$ whois tsaitoh.net Domain Name: TSAITOH.NET : Registrant Email: nic-staff@sakura.ad.jp Name Server: NS1.MYDNS.JP Name Server: NS0.MYDNS.JP Name Server: NS2.MYDNS.JP
DNSを管理してもらっている、mydns.jp で確認しても、特に問題がないはずなんだが…
$ nslookup tsaitoh.net 8.8.8.8 ;; Got SERVFAIL reply from 8.8.8.8 ### Google Public DNS Server: 8.8.8.8 Address: 8.8.8.8#53 ** server can't find tsaitoh.net: SERVFAIL $ nslookup tsaitoh.net ns0.mydns.jp ### mydns.jp Server: ns0.mydns.jp Address: 210.197.74.200#53 Name: tsaitoh.net Address: 64.33.3.150 $ nslookup tsaitoh.net 208.67.222.222 ### OpenDNS(Cisco) Server: 208.67.222.222 Address: 208.67.222.222#53 Non-authoritative answer: Name: tsaitoh.net Address: 64.33.3.150 $ nslookup tsaitoh.net 9.9.9.9 ### Quad9(IBM) Server: 9.9.9.9 Address: 9.9.9.9#53 Non-authoritative answer: Name: tsaitoh.net Address: 64.33.3.150 $ nslookup tsaitoh.net 1.1.1.1 ### Cloudflare Server: 1.1.1.1 Address: 1.1.1.1#53 Non-authoritative answer: Name: tsaitoh.net Address: 64.33.3.150
Google DNS から DoS 攻撃(水責め)
mydns.jp の運営の方に問い合わせをしたら、報告をもらえた。
DoS 攻撃が静まれば、復帰するかなぁ…
((メールより一部引用))
原因が判明しました。
現在、GoogleのDNSからDoS攻撃、いわゆる「水責め」を受けているため、こちらのDNSがGoogleとのやり取りを一時的に遮断しています。
なので、1.1.1.1では引けても8.8.8.8では引きにくい、という状況が発生しています。
Buffalo ルータの情報
Home Assistant を使っていたら、UPnP の機能でルータのパケット情報を取得しているらしい。ではどうやって取得するのか?
SSDPでUPnPデバイスを探す
Gemini に「UPnPの機能で Buffalo のルータの通信速度などの情報を調べるには?」と聞いたら、「SSDP(Simple Service Discovery Protocol)を使用してネットワーク上のUPnP対応デバイスを検索します。これは、マルチキャストアドレス239.255.255.250のUDPポート1900にM-SEARCHリクエストを送信することで行います。」とのアドバイスがもらえた。
「取得するプログラムを提案して」と聞いたら、以下の Python コードを教えてくれた。
import socket
import time
# SSDPマルチキャストアドレスとポート
SSDP_ADDR = '239.255.255.250'
SSDP_PORT = 1900
# M-SEARCHリクエストの作成
# ST: Service Type、ここではルーター(WANIPConnection)を指定
# MX: Maximum wait time in seconds
msearch_request = '\r\n'.join([
'M-SEARCH * HTTP/1.1',
'HOST: {}:{}'.format(SSDP_ADDR, SSDP_PORT),
'MAN: "ssdp:discover"',
'ST: urn:schemas-upnp-org:service:WANIPConnection:1',
'MX: 3',
'',
''
])
# ソケットの作成
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(5) # 応答を待機する時間(秒)
print("M-SEARCHリクエストを送信中...")
try:
# リクエストの送信
sock.sendto(msearch_request.encode('utf-8'), (SSDP_ADDR, SSDP_PORT))
while True:
try:
# 応答の受信
data, addr = sock.recvfrom(1024)
print("-" * 20)
print("デバイスを発見しました!")
print("IPアドレス:", addr[0])
print("ポート:", addr[1])
print("\n応答内容:")
print(data.decode('utf-8'))
except socket.timeout:
print("-" * 20)
print("タイムアウトしました。すべての応答を受信したか、デバイスが見つかりませんでした。")
break
except Exception as e:
print("エラーが発生しました:", e)
finally:
sock.close()
SSDPの返答から詳細取得
実行したら、以下の情報が得られた。これより、/getedesc.xml などで 49355 ポートに問い合わせすればいいみたい。
M-SEARCHリクエストを送信中... -------------------- デバイスを発見しました! IPアドレス: 192.168.xx.1 ポート: 1900 応答内容: HTTP/1.1 200 OK CACHE-CONTROL: max-age=1800 DATE: Tue, 09 Sep 2025 13:57:21 GMT EXT: LOCATION: http://192.168.xx.1:49355/gatedesc.xml SERVER: Linux/3.14.77 UPnP/1.0 Intel_SDK_for_UPnP_devices/1.2 ST: urn:schemas-upnp-org:service:WANIPConnection:1 USN: (略)
- http://192.168.xx.1:49355/gatedesc.xml
- http://192.168.xx.1:49355/gateinfoSCPD.xml – 情報量少ない
- http://192.168.xx.1:49355/gateicfgSCPD.xml
- http://192.168.xx.1:49355/gateconnSCPD.xml
送受信パケット量を取得
いろいろと試す中、送受信パケットを取得する lua スクリプトを Gemini に作らせたら、下記のようになった。
-- socket.http ライブラリをロードします。
-- 'luasocket'パッケージが必要です。
local http = require("socket.http")
local ltn12 = require("ltn12")
-- UPnPサービス情報
local url = "http://192.168.xx.1:49355/upnp/control/WANCommonIFC1"
-- リクエスト情報を格納するテーブル
local requests = {
{
action = "GetTotalBytesReceived",
tag = "<NewTotalBytesReceived>",
label = "受信"
},
{
action = "GetTotalBytesSent",
tag = "<NewTotalBytesSent>",
label = "送信"
}
}
-- データを取得する関数
local function get_upnp_data(req_info)
local soap_data = string.format([[<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:%s xmlns:u="urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1">
</u:%s>
</s:Body>
</s:Envelope>]], req_info.action, req_info.action)
local headers = {
["Content-Type"] = "text/xml; charset=\"utf-8\"",
["SOAPAction"] = '"urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1#' .. req_info.action .. '"'
}
print(req_info.label .. "データを取得中...")
local response_body = {}
local res, status_code = http.request{
url = url,
method = "POST",
headers = headers,
source = ltn12.source.string(soap_data),
sink = ltn12.sink.table(response_body),
timeout = 10
}
if status_code and (status_code == 200 or status_code == "200 OK") then
local response_text = table.concat(response_body)
local start_tag = req_info.tag
local end_tag = string.gsub(start_tag, "<", "</")
local _, _, bytes_string = string.find(response_text, start_tag .. "(.*)" .. end_tag)
if bytes_string then
local total_bytes = tonumber(bytes_string)
local megabytes = total_bytes / 1024 / 1024
print(string.format("合計%sバイト数: %d", req_info.label, total_bytes))
print(string.format("合計%sメガバイト数: %.2f MB", req_info.label, megabytes))
else
print(req_info.label .. "データが見つかりませんでした。")
print("応答内容:\n" .. response_text)
end
else
print(req_info.label .. "データの取得に失敗しました。")
print("ステータスコード: " .. (status_code or "不明"))
print("応答内容:\n" .. table.concat(response_body))
end
print("----------------------------------------")
end
-- 各リクエストを実行
for _, req_info in ipairs(requests) do
get_upnp_data(req_info)
end
SSDPとそのあとの処理をまとめた lua スクリプトは以下となった。
Gemini中心のコーディング
でも、今回のプラグイン作成は、Gemini で作らせた。オレがやったのは生成されたプログラムをテストして、プログラム作ってとか、Lua で作ってとか、データ抽出では厳密なXML解析せず正規表現で作って…とか、munin のプラグインに直してとか、命令するばかりで、エディタで悩みながらコード書きはしなかった。エディタ使ったのは、コードの確認・コメント加筆・余計な動作検証の print を消す程度。
sshで多段loginでブラウザ起動
sshトンネル
リモートのFireWallの内側から自宅サーバにsshトンネルを必要に応じて掘るようにしている。
リモート$ ssh -R トンネルポート:localhost:22 自宅サーバ ping -i 30 -c 60 localhost
これにより、自宅サーバからリモートに接続する際には、slogin で接続できる。
自宅サーバ$ slogin -p トンネルポート localhost
トンネル経由でブラウザ起動
サーバのメンテナンス程度なら前述の slogin で便利に作業できるけど、リモートの FireWall の内側のWebサーバに接続したいことも出てくる。
こういう場合は、多段 login を使うけど、ssh, slogin の組み合わせが面倒なのでメモ。
自宅WindowsWSL$ ssh -t -X 自宅サーバ ssh -t -p トンネルポート -X localhost google-chrome
forwarders 設定ミス
娘のスマホで AQUOS を購入ということで、メモ用にリンクを確認するが、SHARP でググったリンク https://corporate.jp.sharp を参照できない。最初は、 jp.sharp というドメイン名に驚くが、ググってみると .sharp とかの 新gTLD が使えるらしい。
自宅内上流ルータに DNS の問い合わせはできない
nslookup www.jp.sharp 8.8.8.8 は動くけど、nslookup www.jp.sharp は、返答が返ってこない。forwarders に書いてある DNS に問い合わせるけど、自宅内の上流ルータ 192.168.1.254 は nslookup 自体を拒否される。Buffalo の家庭用ルータなら、DNSにルータの IPアドレスを指定するのが普通なので、上流ルータの 192.168.1.254 を設定していたけど、これが間違いの元のようだ。
ということで、自宅上流ルータがもらっている丹南ケーブルの DNS 202.88.193.82, 202.127.80.3 を forwarders に記載して、正常動作するようになった。
((( /etc/bind/named.conf.options )))
forwarders {
// Google public DNS
8.8.8.8;
8.8.4.4;
// router
- 192.168.1.254; // 家庭内上流ルータのIPアドレス
+ 202.88.193.82; // ルータがもらう 丹南ケーブルの DNS
+ 202.127.80.3; // 丹南のセカンダリ DNS
};
network トラブル kde-plasma-desktop
自宅ネットワークが動かなくなる。
原因は Ubuntu の記事で KDE Plasma が X11 から Wayland への移行がすすみ安定してきたとのことで、”apt install kde-plasma-desktop”を実行。これがトラブルの始まりだった。
この中でたっぷりパッケージインストールがあったけど、この中で firewalld がインストールされたと共に、iptables-persistent , netfilter-persistent が uninstall された。最終的な症状としては firewalld が DNS をブロック(他のポートもほぼ全部シャットアウト)したようで、自宅ネットワークで名前解決が動かなくなり、自宅全体が ネットワークにつながらない(パケットは流れるけど、名前解決できなきゃ何もできない)
端末側で nslookup server 192.168.xx.xx でサーバに問い合わせをかけても返事がない。nmap 192.168.xx.xx で確認すると、ssh 以外のポートが全滅。iptables -L -n してもちゃんと普通のルールが表示されるし、iptables を消去しても変化なし。この辺でようやく iptables の問題ではないと見えてくる。(でもこの段階で別のFireWallが動いているとはイメージできてなかった)
ということで、
$ sudo apt purge firewalld $ sudo apt install iptables-persistent netfilter-persistent $ sudo netfilter-persistent save # 最初、iptables-persistent も消えているのに気づかず、 # netfilter-persistent save が動かず悩んだ。
設定を復旧するなか途中で LAN (enp2s0) も動かなくなるけど、netplan の設定をやり直して無事回復。(netplanの一言をメモに残しておかないと、IPアドレス固定の設定どこでやったっけ…ということを思い出せない NetworkManager だっけ /etc/network 配下だっけ…と無駄に悩む)
$ cd /etc/netplan $ sudo vi 90-NM-xxxx....xxxx.yaml $ sudo netplan apply
iPhone写真を icloudpd で同期
iPhoneの写真も大量になり、iCloud+ 200GB で保存しているけど、自分のサーバに保存したい。
Gemini に聞いたら、icloudpd を紹介してくれた。
((( インストール ))) $ pip install icloudpd : Successfully installed icloudpd-1.27.4 ((( 実行 ))) $ icloudpd --directory /data --username my@email.address --watch-with-interval 3600
うーむ、認証などの処理がうまくいかない。ひとまず、pip uninstall …
sambaをWindowsのネットワークで表示
以前から、samba を運用しているけど、エクスプローラのネットワーク検索で、samba サーバが見えない。
なにげなく、Gemini に問い合わせをかけてみたら wsdd(Web Services on Devices (WSD) daemon) をインストールする方法を教えてくれた。あらためて、wsdd でググったら、wsdd2 ならインストールするだけとのことであった。ということで、”apt install wsdd2″ でインストール。今までなら、IPアドレス直打ちとかしていたけど、他の PC から簡単に見えるようになった。
samba.service は AD 用だ!
新しい Ubuntu マシン用に設定を以降中だけど、samba で初歩的すぎることに気づかず悩む。
/etc/samba/smb.conf を移行&修正して systemctl restart samba を実行するけど、エラーが治らず悩む。エラー自体は 現行サーバの WORKGROUP と 新サーバで同じ名前を使ってたもんだから、名前を変更すれば治るはずだけど、エラーが回復しない。色々悩んだ末、Windows とのファイル共有は、smbd , nmbd の担当だし systemctl restart smbd / nmbd をするだけ。設定が反映されるのに気づかず、無駄に悩んでしまった。
Alibaba Cloud LLC からの大量アクセス
自宅サーバで作業していたら、loadaverage 30越えの高負荷。
調べてみると、Web サーバの負荷が高い。一旦 apache を止めると負荷が落ち着く。
早々にアクセス元の IP アドレスを調べると広い範囲の端末からアクセスが集中している。ひとまず FireWall で下記サブネットをアクセス拒否。
47.79.0.0/20 47.79.96.0/19 47.79.208.0/20 47.82.8.0/21
アクセス履歴の内容を確認すると、アクセス間隔を空けないマナーの悪いクローラーのようだ。

