SoftEther VPNで通信速度が極端に遅い問題を解決したので、メモがてら書いていきます。
概要
急遽VPNサーバーをたてる必要があり、miniPC(OS:debian 10)にSoftEtherをインストールした。
クライアント側(OS:Windows 10 pro)からVPN接続後、RDPがぷつぷつと切れる・下りの速度が200kbpsしか出ていないという問題があった。
サーバー・クライアント共に下り400Mbps以上でており、サーバー側のCPU使用率も10%ほどだったので、インターネットの情報をみつつ設定変更してみたが解決せず。
と、こんな感じで1週間ほど行き詰ってました。
解決
インターネット上にある"速度が遅い"系の記事は全て見尽くし、何もできる事がなくなったので、ChatGPTくんに聞いてみることに。
何度か聞いていると、【NIC オフロード機能】が原因なんじゃないかとのこと。
物は試しということで一度設定を変更(オンからオフ)してみる。
なんか解決したわ!
設定をオフにすることで速度が出るようになりました;;
下り200"K"bps ⇒ 下り400"M"bps
CPU使用率も気持ち増えてるかも?...わからんけど。
ということで変更した設定を以下に記載します。
設定の変更方法
※設定はサーバー側で行います。
1.ネットワークインターフェースを確認する
SoftEtherで使用中のLANカードがあるか確認します。
$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: <ネットワークインターフェース1>: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 10:05:01:91:a0:06 brd ff:ff:ff:ff:ff:ff
3: <ネットワークインターフェース2>: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether ba:2e:13:53:48:83 brd ff:ff:ff:ff:ff:ff
2.オフロード設定の確認
# <ネットワークインターフェース> の部分は、(1)で確認したものに変更してください。
$ sudo ethtool -k <ネットワークインターフェース>
長いので確認項目だけまとめます
#TSO
tcp-segmentation-offload: on
#GSO
generic-segmentation-offload: on
#GRO
generic-receive-offload: on
#LRO
large-receive-offload: off [fixed]
オフロードの確認でエラーが発生する場合
<ユーザー名> は sudoers ファイル内にありません。この事象は記録・報告されます。
→ルート権限で再実行してみてください。
コマンド 'ethtool' が見つかりません。次の方法でインストールできます:
apt install ethtool
→apt install ethtoolを入力してインストールしてください。
3.オフロード機能の一時的な無効化
上記確認項目で1つでも "on" がある場合は実行してください。
全て "off" の場合は、こちらが問題ではないようです。
$ sudo ethtool -K <ネットワークインターフェース> tso off gso off gro off lro off
※この時「Cannot change large-receive-offload」という結果が返ってくる場合は無視でOK
4.スピードテスト
クライアント側でVPNを接続後、インターネット速度計測で確認します。
※スマホからでも確認できました(モバイル通信)
CPU使用率が気になる場合は、htop等で確認できます。
5.オフロード設定を永続化
#vimやnano エディタツールならなんでもOK
$ vim /etc/network/interfaces
以下内容を記載し、保存します。
vimの使い方がわからない方は調べてください。
auto <ネットワークインターフェース>
iface <ネットワークインターフェース> inet dhcp
pre-up /sbin/ethtool -K <ネットワークインターフェース> tso off gso off gro off lro off
VPNサーバーを再起動
$ sudo reboot
これで設定の変更は完了です。
お疲れさまでした。