banner
moeyy

moeyy

一条有远大理想的咸鱼。
github
mastodon
email

Linux VPSを使用して、WonderShaperを使ってサーバーのアップロード/ダウンロード帯域幅を制限します。

** 説明:** 最近、誰かがブロガーにサーバーのアップロード帯域幅を制限する方法を尋ねていたので、以前よく使っていた制限スクリプトであるWonderShaperを共有します。原理は、WonderShaperがトラフィック調整コマンドを定義するためにtcを使用し、特定のネットワークインターフェースを処理するためにQoSを使用するというものです。送信トラフィックは、異なる優先度のキューに配置され、送信トラフィック速度を制限するための目的が達成されます。一方、受信トラフィックはパケットの破棄によって速度制限が行われます。使いやすいですし、必要な方は詳細をご覧ください。

使用方法#

プロジェクトのアドレス:ここをクリックしてアクセス

インストールはパッケージを直接使用することができますが、バージョンがあまり新しくないため、ここでは最新のソースコードをGithubから取得します。

1. 依存関係のインストール

# Debian/Ubuntuシステム
apt install -y make git

# CentOSシステム
yum install make git -y

2. WonderShaper のインストール

git clone https://github.com/magnific0/wondershaper.git
cd wondershaper
make install

3. 速度制限の設定

# 使用方法
USAGE: wondershaper [-hcs] [-a <adapter>] [-d <rate>] [-u <rate>]

OPTIONS:
   -h           このメッセージを表示
   -a <adapter> アダプターを設定
   -d <rate>    最大ダウンロード速度を設定(Kbps単位)および/または
   -u <rate>    最大アップロード速度を設定(Kbps単位)
   -p           /etc/conf.d/wondershaper.confのプリセットを使用
   -c           アダプターから制限を解除
   -s           アダプターの現在のステータスを表示
   -v           現在のバージョンを表示

まず、ネットワークカードを確認します:

# ここでは、ネットワークカードを確認するための3つのコマンドを提供しますが、最初のコマンドを使用することをお勧めします
ifconfig
ip addr
route

例えば、eth0ネットワークカードの速度を制限する場合は、次のコマンドを使用します:

# アップロード帯域幅を10Mに制限
wondershaper -a eth0 -u 10240
# ダウンロード帯域幅を10Mに制限
wondershaper -a eth0 -d 10240
# アップロードとダウンロードの両方を10Mに制限
wondershaper -a eth0 -d 10240 -u 10240
# ネットワークカードの制限ルールをクリア
wondershaper -c -a eth0

その後、速度をテストすることができます。次のコマンドを使用します:

wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli
./speedtest-cli

画像の説明を入力してください

画像の説明を入力してください

これは制限をかける前の速度テストです。

アップロード / ダウンロードを 10M に制限した後の速度テストです。

起動時に自動起動するように設定する#

通常、制限ルールを設定した後、サーバーを再起動すると、制限ルールが自動的に無効になります。そのため、ここでは少し設定を行い、起動時に自動的に有効にする方法について説明します。以下に 2 つの方法を説明します。

1. rc.local を使用する方法
これは最も簡単な自動起動の設定方法ですが、Debian 9Ubuntu 17+ではrc.localファイルが存在しないため、これらのシステムを使用する場合は事前に設定する必要があります。

1. rc-local.serviceを追加します。以下は1つのコマンドですので、一緒にコピーして実行してください。
cat > /etc/systemd/system/rc-local.service <<EOF
[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local
 
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
 
[Install]
WantedBy=multi-user.target
EOF

2. rc-localファイルを作成します。以下は1つのコマンドですので、一緒にコピーして実行してください。
cat > /etc/rc.local <<EOF
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.    
EOF

3. 権限を追加し、起動時に自動的に実行されるようにします。
chmod +x /etc/rc.local
systemctl start rc-local
systemctl enable rc-local

最後に、起動時に実行するコマンドをrc.localファイルに追加します。以下のコマンドを使用します:

# CentOS 7システム
echo "wondershaper -a eth0 -d 10240 -u 10240" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

# CentOS 6、Debian、Ubuntuシステム
echo "wondershaper -a eth0 -d 10240 -u 10240" >> /etc/rc.local
chmod +x /etc/rc.local

ここで、制限コマンドを適切に変更してください。

2. Systemd を使用する方法
インストール時にSystemdの設定ファイルも提供されているため、使用するのが簡単ですが、この方法はCentOS 7Debian 8+Ubuntu 16+などにしか適用されません。

起動時に、デフォルトで/etc/conf.d/wondershaper.confが呼び出されるため、まずそのファイルを編集します:

nano /etc/conf.d/wondershaper.conf

以下のようになります:

[wondershaper]
# Adapter
#
IFACE="eth0"

# Download rate in Kbps
#
DSPEED="10240"

# Upload rate in Kbps
#
USPEED="10240"

パラメータは、ネットワークカード、ダウンロード、アップロードの制限です。編集が完了したら、Ctrl+xyを押して保存して終了します。

次に、起動して自動的に実行するようにします:

systemctl start wondershaper
systemctl enable wondershaper
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。