自宅PCのVPN Serverに外部から接続できない

SoftEther VPN に関するご質問はこのフォーラムにお気軽にご投稿ください。
Post Reply
yk0829
Posts: 4
Joined: Sat Aug 31, 2024 12:59 am

自宅PCのVPN Serverに外部から接続できない

Post by yk0829 » Sat Aug 31, 2024 2:01 am

VPN Client:Azure VM(Ubuntu)→VPN Server:自宅PC(Windows)のVPN接続を試みて、以下の2点でつまづいております。

1.VPN Clientの仮想NICにdhclientでIPが割当たらない
2.VPN Serverに接続できない

2については自宅PCにVPN Cilentをインストールして接続を試みたのですが失敗しました。

以下に使用したスクリプトなどをまとめております。(パスワードなどは実際のものではありません)

Dockerfile:VPN Server構築

Code: Select all

FROM ubuntu:20.04

ENV VERSION v4.43-9799-beta-2023.08.31
ENV SERVERPASS password
ENV HUBNAME VHUB
ENV HUBPASS password
ENV USERNAME user001
ENV USERPASS password

WORKDIR /usr/local/vpnserver

RUN apt-get update && \
  apt-get -y upgrade && \
  apt-get -y install wget gcc make dos2unix

ADD entrypoint.sh /usr/local/vpnserver/entrypoint.sh
RUN dos2unix /usr/local/vpnserver/entrypoint.sh && \
  chmod 755 /usr/local/vpnserver/entrypoint.sh

RUN wget https://jp.softether-download.com/files/softether/${VERSION}-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-${VERSION}-linux-x64-64bit.tar.gz -O /tmp/softether-vpnserver.tar.gz && \
  tar -xvf /tmp/softether-vpnserver.tar.gz -C /usr/local/ && \
  rm /tmp/softether-vpnserver.tar.gz && \
  make && \
  apt-get purge -y -q --auto-remove gcc make wget dos2unix

ENTRYPOINT ["/usr/local/vpnserver/entrypoint.sh"]

entrypoint.sh:VPN Server設定

Code: Select all

#!/bin/bash

/usr/local/vpnserver/vpnserver start

sleep 3s

/usr/local/vpnserver/vpncmd /SERVER localhost /CMD DynamicDnsSetHostname $HOSTNAME
/usr/local/vpnserver/vpncmd /SERVER localhost /CMD HubCreate $HUBNAME /PASSWORD:$HUBPASS
/usr/local/vpnserver/vpncmd /SERVER localhost /HUB:$HUBNAME /PASSWORD:$HUBPASS /CMD UserCreate $USERNAME /GROUP:none /REALNAME:none /NOTE:none
/usr/local/vpnserver/vpncmd /SERVER localhost /HUB:$HUBNAME /PASSWORD:$HUBPASS /CMD UserPasswordSet $USERNAME /PASSWORD:$USERPASS
/usr/local/vpnserver/vpncmd /SERVER localhost /HUB:$HUBNAME /PASSWORD:$HUBPASS /CMD SecureNatEnable
/usr/local/vpnserver/vpncmd /SERVER localhost /HUB:$HUBNAME /PASSWORD:$HUBPASS /CMD DhcpGet
/usr/local/vpnserver/vpncmd /SERVER localhost /HUB:$HUBNAME /PASSWORD:$HUBPASS /CMD DhcpEnable
/usr/local/vpnserver/vpncmd /SERVER localhost /CMD ServerPasswordSet $SERVERPASS

tail -f /dev/null
setup-vpn-server.sh:VPN Server設定

Code: Select all

#!/bin/bash

# Dockerイメージをビルド
docker build -t vpn-server:latest

# VPN Serverを起動
docker run -d --name vpn-server --hostname vpn-server --cap-add NET_ADMIN -p 500:500/udp -p 4500:4500/udp -p 1701:1701/tcp -p 1194:1194/udp -p 5555:5555/tcp vpn-server:latest
setup-vpn-client.sh:VPN Clientインストール

Code: Select all

#!/bin/bash

SCRIPT_DIR=$(dirname "$0")
cd "$SCRIPT_DIR"

# 必要なパッケージのインストール
sudo apt install -y make gcc

# SoftEther Clientをダウンロード
sudo wget https://jp.softether-download.com/files/softether/v4.43-9799-beta-2023.08.31-tree/Linux/SoftEther_VPN_Client/64bit_-_Intel_x64_or_AMD64/softether-vpnclient-v4.43-9799-beta-2023.0
tar -xzvf softether-vpnclient-v4.43-9799-beta-2023.08.31-linux-x64-64bit.tar.gz
sudo rm -f softether-vpnclient-v4.43-9799-beta-2023.08.31-linux-x64-64bit.tar.gz

# SoftEther Clientをインストール
cd vpnclient
make

# VPN Clientを起動
sudo $SCRIPT_DIR/vpnclient start

connect-vpn.sh:VPN Client接続

Code: Select all

!/bin/bash

# 環境変数
# NIC NAME
NIC="nic01"
# Account name
ACCOUNT="account"
# Server name
SERVER="vpnserver.softether.net:5555"
# Hub name
HUB="DEFAULT"
# User name
USERNAME="user001"
# Password
PASSWORD="password"
# type (standard or radius)
TYPE="standard"

SCRIPT_DIR=$(dirname "$0")
cd "$SCRIPT_DIR"/vpnclient

# VPN Clientの設定に必要な情報を入力
sudo cat <<EOF > $SCRIPT_DIR/setup.txt
NicCreate $NIC
NicList
AccountCreate $ACCOUNT /SERVER:$SERVER /HUB:$HUB /USERNAME:$USERNAME /NICNAME:$NIC
AccountPasswordSet $ACCOUNT /PASSWORD:$PASSWORD /TYPE:$TYPE
AccountConnect $ACCOUNT
AccountList
EOF

# VPN Clientで接続
sudo $SCRIPT_DIR/vpncmd /client localhost /in:$SCRIPT_DIR/setup.txt
rm $SCRIPT_DIR/setup.txt

# VPN Clientの仮想NICにIPアドレスを設定
sudo dhclient vpn_$NIC

HY空警一号
Posts: 1
Joined: Sat Aug 31, 2024 10:40 pm

Re: 自宅PCのVPN Serverに外部から接続できない

Post by HY空警一号 » Sat Aug 31, 2024 10:43 pm

我在中国广东省河源市,我使用的是源城区的广电宽带,我们总是无法连接上服务器,希望尊贵的管理员阁下,可以帮助我们解决这个问题!

yk0829
Posts: 4
Joined: Sat Aug 31, 2024 12:59 am

Re: 自宅PCのVPN Serverに外部から接続できない

Post by yk0829 » Sun Sep 01, 2024 3:07 pm

以下の2点を改修することで、VPNクライアントからVPNサーバーへの接続は確認できました。
・サーバーでVPN Azureを有効にする
・Dockerコンテナーのネットワークドライバをhostにする

ただ、新たな問題が1点発生しております。
【新たな問題】
クライアント側のルーティング情報がサーバーマネージャー上で確認できない

これは、dhclientでIPが割当たらないことが原因では?と疑っております。

yk0829
Posts: 4
Joined: Sat Aug 31, 2024 12:59 am

Re: 自宅PCのVPN Serverに外部から接続できない

Post by yk0829 » Mon Sep 02, 2024 11:43 pm

無事に解消したので、問題と対策をまとめておきます。
【問題】
1.dhclientでクライアントの仮想NICにIPアドレスが割当たらない
2.クライアント側のルーティング情報がVPNサーバーマネージャーで確認できない

【対策】
1.Softether VPNのフルトンネルを止め、目当てのネットワークへのルーティング情報を静的に追加
2.1が解消することで解決

dhclientで割り当たっていないと思っていたのは勘違いで、割当たっていました。
(接続が確立するまでにdhclientを打っていたので時間がかかった。)

ただ、dhclient成功直後、クライアントVMへのSSH接続が切断されました。
Softetherは仕様上、フルトンネルで全てのパケットがVPNトンネルに向かうためだと思われます。

今回は必要なネットワークアドレス帯が決まっていたので、クライアント側でスタティックルートを設定し、サーバー側ではデフォルトルートの広報を止めることで、今回の事象は解決しました。

Post Reply