メインコンテンツへスキップ

Ubuntu26.04にアップデートしたらWireGuardでVPNできなくなった話

    VPNできない!?(焦り)

    気軽に宅内SSHするためにWireGuardでVPNを構築している金なしマンとしては、出先でこういうことに気づきます。

    休みだし外出するか!
    ↓
    カフェで優雅に宅内サーバメンテするか…
    ↓
    VPN繋がらないにゃしい!

    色々調べた結論は、OSリリースアップデートによるIPパケットフォワード設定の欠落 でした。

    設定してて良かったGoogle RDP

    VPNが使えない状況になることは過去にもあったので、
    Google Remote Desktopを駆使してまずは家のWindowsにアクセス。

    iPadから画面2台の端末にアクセスするとマウスカーソルの認識がおかしくなるので、
    全画面にして小さい文字と格闘する羽目に。

    でも設定してて良かった〜〜

    トラブルシュート

    VPNサーバまで届いてるか

    WireGuardの公式アプリだと、どのVPN設定でどれくらい通信しているか確認できます。

    画像
    WireGuard公式アプリでセッションを確認(画像は正常状態)


    実際に確認したときは送信だけ増えて受信がゼロ。

    この時点でハンドシェイク要求がサーバに到達していないか、WireGuardサービスが動いてない可能性がある。

    ここで確認したのはインターネット側IPアドレス。
    案の定、前と変わっていたのでちゃっちゃと修正。

    ダイナミックDNSなんて使ってないんだよこっちは。貧乏舐めんな。

    (蛇足)
    CMANでIP確認したとき、最初がgoogleなんとか.tunnel.なんとかみたいなドメインで認識されてた。
    もしかしてWAFで盗聴されてる? と思ったら普通のIPに戻った。なんだかなぁ。

    まぁこれでいけるやろ!

    WireGuardサービスの状態確認

    IPアドレスの修正によってハンドシェイクが確立した。
    よかったよかったと思いながらも、やたらと速度が遅い。

    送信量がガンガン上がっても受信量はほぼ動かず。

    あかんですねこれは…
    まずはサービス稼働を確認。

    sudo systemctl status wg-quick@wg0.service
    [sudo: authenticate] Password:          
    ● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
         Loaded: loaded (/usr/lib/systemd/system/wg-quick@.service; enabled; preset: enabled)
         Active: active (exited) since Wed 2026-06-17 21:34:55 UTC; 26min ago

    良さそう。

    次はwgコマンドでWireGuardが動いているか確認。

    sudo wg show wg0
    [sudo: authenticate] Password:          
    interface: wg0
      public key: (見せられないよ!)
      private key: (hidden)
      listening port: (見せられないよ!)
    
    peer: user1
      preshared key: (hidden)
      endpoint: (iPadのIPアドレス)
      allowed ips: (見せられないよ!)
      latest handshake: 43 seconds ago
      transfer: xx MiB received, xx MiB sent
    
    peer: user2
      preshared key: (hidden)
      allowed ips: (見せられないよ!)

    コード部は後から取ったのでイメージ。

    実際は(サーバ側の)送信が極端に少ない。
    これは何かWireGuardじゃないところでコケてるのか〜?

    iptable設定の適用失敗?

    心当たりといえば、興味本位のOSアップデート。
    Ubuntu24.04 → 26.04にしたばかり。

    これはUbuntuのデーモンかなんかが変わって、
    WireGuardセットアップでマスカレードの設定とかコケてるか?
    と思って確認しても特にエラーなし。

    なんでや。

    ip_forwardの適用失敗?(原因)

    WireGuardのセットアップ時、net.ipv4.ip_forward=1というのを設定してた。
    これはパケットをルーティングするために必要だが、
    OSアップデートで記述が変わったか?

    と思って/etc/sysctl.confを確認。

    sudo ls -l /etc/sysctl.conf
    ls: cannot access '/etc/sysctl.conf': No such file or directory

    あれ、ファイル名間違えてたか。

    sudo ls -l /etc/sysctl*
    -rw-r--r-- 1 root root 2207 Dec 29 07:02 /etc/sysctl.conf.dpkg-bak
    
    /etc/sysctl.d:
    total 4
    -rw-r--r-- 1 root root 269 Dec  1  2025 README.sysctl

    およ? dpkgが待避してる?

    絶対これじゃん。

    :~$ sudo cp /etc/sysctl.conf.dpkg-bak /etc/sysctl.conf
    
    :~$ sudo sysctl -p /etc/sysctl.conf
    net.ipv4.ip_forward = 1

    はい、これで認識されました。

    そしてちゃんとVPNが確立しました。

    ちゃんちゃん。

    OSリリースアップデートには気をつけよう!

    やはり、OSリリースが原因でした。

    今回は軽微なもので、dpkgが設定を待避しているだけでしたが、
    これが削除されてたりカーネルの変更とかだとどうにもなんないので怖いですね。

    今回の学びは、
    ちゃんと家にいるときに動作確認しよう!
    です。

    おわり。

    追記

    なんか/etc/sysctl.confはカーネルアップデートで読み込まなくなった?っぽい。
    /etc/sysctl.conf.d/99-wireguard.confなどのファイルを作って、それにnet.ipv4.ip_forward = 1を描かないと再起動後はフォワーディングしてくれなくなった。

     
     
    ただのオタクと信じて生きているオッサン。でももうアイマス(765)とウマ娘しかやってないから違うのかもしれない。

    あなたへのおすすめ