ホーム » コンピュータ » Network (ページ 3)

「Network」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

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 スクリプトは以下となった。

munin でのパケット流量観測に組み込んでみた。

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

アクセス履歴の内容を確認すると、アクセス間隔を空けないマナーの悪いクローラーのようだ。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト

メタ情報