munemune0925
@munemune0925

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

wireguard接続したい

環境

Ubuntu 24.04.1 LTS
so-net光 v6プラス
HGW PR-500KI

やりたいこと

VPNサーバーを立ててwireguardでスマホからセキュアな通信環境を作りたい

参考にしたサイト

https://www.youtube.com/watch?v=qEttEExVdPM&t=636s
https://www.youtube.com/watch?v=cNNoMOCl9Qo&t=455s

発生している問題

dockerを使ったセッテングをしたがうまくつながっていなさそう
スマホ側のピアの状態を見ると受信が出来ていない

受信:0B、送信:2.17KB

怪しいと思っていること

http://192.168.1.1:8888/enabler.ipv4/main
静的NAPT設定 この中のセッティングが正しいのか
(以下自身がおこなった設定)

対象プロトコル :UDP	公開対象ポート:52720	宛先アドレス:192.168.1.xx(サーバーIP) 	宛先ポート:51820        

②ピアのエンドポイントの設定

DDNS:52720
*DDNSはsynology NASで設定した

ファイアウォールの状態

穴ボコだらけだけど・・・

状態: アクティブ

To                         Action      From
--                         ------      ----
1701/udp                   ALLOW       Anywhere                  
500/udp                    ALLOW       Anywhere                  
4500/udp                   ALLOW       Anywhere                  
5000/udp                   ALLOW       Anywhere                  
51820/udp                  ALLOW       Anywhere                  
52720/udp                  ALLOW       Anywhere                  
500                        DENY        Anywhere                  
1701                       DENY        Anywhere                  
4500                       DENY        Anywhere                  
5000                       DENY        Anywhere                  
1701/udp (v6)              ALLOW       Anywhere (v6)             
500/udp (v6)               ALLOW       Anywhere (v6)             
4500/udp (v6)              ALLOW       Anywhere (v6)             
5000/udp (v6)              ALLOW       Anywhere (v6)             
51820/udp (v6)             ALLOW       Anywhere (v6)             
52720/udp (v6)             ALLOW       Anywhere (v6)             
500 (v6)                   DENY        Anywhere (v6)             
1701 (v6)                  DENY        Anywhere (v6)             
4500 (v6)                  DENY        Anywhere (v6)             
5000 (v6)                  DENY        Anywhere (v6)  

それとも全然見当違いをしているのか

すみません誰か知恵を貸してください><

0

1Answer

受信:0B、送信:2.17KB

受信が0ということは、ネゴシエートしに行ってサーバーが反応していない( = まったくつながっていない)ということです。

NAPTの設定方法はあっていますが、52720 は利用可能なポートの範囲内でしょうか?

DDNS で登録されているアドレスは IPv4 でしょうか?

このファイヤーウオールは何でしょう?もしサーバーのものであれば 51820/udp が開いているのでそれで大丈夫だと思います。
HGWのファイヤーウオールも念のために確認したほうが良いと思います。デフォルトではWindowsファイル共有の拒否ルールだけだと思うので問題ないとは思いますが。

問題の切り分けのために、Dockerで設定したサーバーと、スマホをLAN内で接続してみるとよいと思います。
エンドポイントは サーバーのプライベートアドレス:51820 に変更してつながればそこは大丈夫です。

0Like

Comments

  1. @munemune0925

    Questioner

    @shigeokamotoさん ありがとうございます。
    書いていただいたことが全て把握できている訳ではありませんがわかる範囲でいうと

    ・52720 は利用可能なポートの範囲内でしょうか?
    ⇒はいそうです。①にアクセスした際にTOPに書かれた「利用可能ポート」の1つです。

    ・DDNS で登録されているアドレスは IPv4 でしょうか
    ⇒なんとも言い難いです、DDNSのホスト名登録の際に2つのIPが自動入力されました。
    ホスト名       xxxxxx.synology.me
    外部アクセス(ipv4) 14.11.xx.xx
    外部アクセス(ipv6) 240b:251:xxxx:xxxx:xxx:xxxx:xxxx:xxxx
    *ちなみにのDDNSを使ってopenVPNでの通信は出来ました

    ・このファイヤーウオールは何でしょう?
    ⇒サーバーのファイヤーウォールです。「sudo ufw status」で確認しました。

    ・エンドポイントは サーバーのプライベートアドレス:51820 に変更してつながれば
    ⇒ここが良く分かっていないです。同一ネットワーク内にして(スマホはwifi、サーバーは有線でもいいの?)スマホのブラウザから「192.168.1.xx:51820」と打ち込んでアクセスできるかという事でしょうか。やってみたけどつながらなかったです。

  2. 外部アクセス(ipv6) 240b:251:xxxx:xxxx:xxx:xxxx:xxxx:xxxx

    DDNSで登録されたアドレスに IPv6 がある場合、スマホが IPv6 で接続しようとしている場合があります。この場合、

    1. ポートが異なる(=52720->51820の変換はない)
    2. HGWのファイヤーウオールにひっかかる

    の二つの問題があります。

    解決方法としては、WireGuardの設定にて受けるポート番号を 52720 に変更してください。
    次に、NAPTの設定もポート番号が変わらないように変更します。

    対象プロトコル :UDP	公開対象ポート:52720	宛先アドレス:192.168.1.xx(サーバーIP) 	宛先ポート:52720
    

    更に、HGW ntt.setup の詳細設定 - IPv6パケットフィルタ設定(IPoE)にて IPoE -> LAN方向のパケットを許可してください。具体的にはこんな感じで宛先は WireGuardを起動しているサーバーのIPv6アドレスです。

    許可	IPoE->LAN	UDP	指定しない	*	240b:251:xxxx:xxxx:xxx:xxxx:xxxx:xxxx/128	*	52720	
    

    ただ、現在のWireGuardの仕様では接続したエンドポイントは IPアドレスで認識して接続を継続します。つまり IPv6 で接続した後IPv4のみの環境へ移動してしまうと接続が維持できないので、DDNSで登録されるIPアドレスを IPv4 のみにできた方が使いやすいと思います。

    ⇒ここが良く分かっていないです。同一ネットワーク内にして(スマホはwifi、サーバーは有線でもいいの?)スマホのブラウザから「192.168.1.xx:51820」と打ち込んでアクセスできるかという事でしょうか。やってみたけどつながらなかったです。

    WiFi/有線がお互い通信できないなんてことが無い限りはそれで大丈夫です。これが繋がらないということは、そもそもWireGuardの設定が正しくない、あるいは別の問題があるのだと思います。
    なので、前半に書いた NAPT や HGWのフィルタよりも先に LAN内での接続を解決した方が良いと思います。

  3. @munemune0925

    Questioner

    ・NAPTの設定もポート番号が変わらないように変更します
    ⇛変更しました

    ・IPoE -> LAN方向のパケットを許可してください
    ⇛許可しました

    ・エンドポイントの設定
    ⇛14.11.xx.xx:52720
    DDNS名ではなくipv4アドレス直打ち

    ・WireGuardの設定にて受けるポート番号を 52720 に変更
    ⇛自身が使わせてもらってるdockerは.envファイルを介していたようなので
    .env内で変更

    # Port settings
    # Port of Wireguard
    WG_PORT=52720
    # Port of Wireguard-UI
    WG_UI_PORT=5000
    
    # Wireguard-UI's settings
    WGUI_USERNAME=xxxxx
    WGUI_PASSWORD=yyyyy
    
    

    docker-compose.yamlの中身

    version: "3"
    
    services:
    
      # WireGuard VPN service
      wireguard:
        image: linuxserver/wireguard:v1.0.20210914-ls7
        container_name: wireguard
        cap_add:
          - NET_ADMIN
        volumes:
          - ./config:/config
        ports:
          - "${WG_UI_PORT}:${WG_UI_PORT}"
          - "${WG_PORT}:${WG_PORT}/udp"
        sysctls:
          - net.ipv4.ip_forward=1
          - net.ipv4.conf.all.src_valid_mark=1
        restart: unless-stopped
    
      # WireGuard-UI service
      wireguard-ui:
        image: ngoduykhanh/wireguard-ui:latest
        container_name: wireguard-ui
        depends_on:
          - wireguard
        cap_add:
          - NET_ADMIN
        # Use the network of the 'wireguard' service
        # This enables to show active clients in the status page
        network_mode: service:wireguard
        environment:
          - SENDGRID_API_KEY
          - EMAIL_FROM_ADDRESS
          - EMAIL_FROM_NAME
          - SESSION_SECRET
          - WGUI_USERNAME=${WGUI_USERNAME}
          - WGUI_PASSWORD=${WGUI_PASSWORD}
          - WG_CONF_TEMPLATE
          - WGUI_MANAGE_START=true
          - WGUI_MANAGE_RESTART=true
          - WGUI_SERVER_POST_UP_SCRIPT=iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
          - WGUI_SERVER_POST_DOWN_SCRIPT=iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
        logging:
          driver: json-file
          options:
            max-size: 50m
        volumes:
          - ./db:/app/db
          - ./config:/etc/wireguard
    

    となっていますが気になったのはポート番号を変更したつもりなのに
    wg0.conf の中身で ListenPort = 51820 となっています

    # This file was generated using wireguard-ui (https://github.com/ngoduykhanh/wireguard-ui)
    # Please don't modify it manually, otherwise your change might get replaced.
    
    # Address updated at:     2024-10-11 22:20:50.216654782 +0000 UTC
    # Private Key updated at: 2024-10-11 22:20:50.216980313 +0000 UTC
    [Interface]
    Address = 10.252.1.0/24
    ListenPort = 51820
    PrivateKey = sC3k7YU/Hdjt7+RvQWaf35j8EdPrwFDguzUF8ZEs4nU=
    
    PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    PreDown = 
    PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    Table = auto
    
    
    # ID:           cs4qa5q119hc70ikf7h0
    # Name:         android
    # Email:        
    # Telegram:     
    # Created at:   2024-10-11 22:22:15.047052956 +0000 UTC
    # Update at:    2024-10-11 22:24:15.847022649 +0000 UTC
    [Peer]
    PublicKey = v5PY8kEqDkJzntuy77XaChqe9qCyL9j3udyBH5ww2hQ=
    PresharedKey = SVuyRWxv1hkJKO85e+3Ll+MEFVzDxfnNffgoKWjRoE0=
    AllowedIPs = 10.252.1.1/32
    PersistentKeepalive = 15
    
    

    この状態でVPN接続しても受信が0Bでした。
    (気にすべきポイントではないのかもしれませんが一応)

  4. ListenPort = 51820

    .envを変えても生成された wg0.conf が 51820であれば WireGuard は 51280で listenしていますし、
    compose.yaml は .env が反映されて 52720 になったのであれば、Dockerのポートマップすら不整合が発生しています。
    全て合うように、あるいはあわせるようにしないといけません。

    となっていますが気になったのはポート番号を変更したつもりなのに
    wg0.conf の中身で ListenPort = 51820 となっています

    そのツールは compose.yaml の設定を変えても生成されたコンフィグレーションは作り直されなかった気がします。
    *.conf を消してから起動すれば作り直されたような気がします。
    各peerの秘密鍵を保全しておけば大丈夫だったような、、、一度試してみてください

    cp -rp config config.backup
    find config -name \*.conf | xargs rm
    

    まずは、クライアント(スマホ)から10.252.1.0に接続できるようにしないといけません。

  5. @munemune0925

    Questioner

    色々アドバイスありがとうございます。

    色々確認すべきことは多そうです。
    進展あればこの場でまた報告したいと思います。

  6. もし、よくわからないなーと思い始めたのであれば、WireGuardを生でつかうよりもtailscaleを使う方が簡単かもしれません。

Your answer might help someone💌