Linuxサーバー(ネットワーク関連)

📢 この記事は gemini-2.5-flash によって翻訳されました

この記事は Hiyoung が書いたんだ。

背景知識:

Linuxの時刻についてざっくりと Linuxシステムには2つの時計があるんだ。1つはハードウェアクロック、つまりBIOS時間。もう1つはシステムクロックで、LinuxシステムのKernel(カーネル)時間のことだよ。 Linuxシステムでプログラムが動くときに読み込む時間は、全部システムKernel(カーネル)時間なんだ。 Linuxが起動するたびに、システムKernel(カーネル)はまずハードウェアクロックの設定を読み込むんだけど(このときのハードウェア時間が正確とは限らない)、その後、システムクロックはハードウェアとは関係なく動き続けるんだ。 だから、Linuxの時間を永続的に変更して正確にしたいなら、ハードウェア時間を永続的に変更しないといけないんだ。そうしないと、Linuxを再起動するたびにシステム時間が元のハードウェア時間に戻っちゃうよ。 Linuxの時刻関連コマンド システムKernel(カーネル)クロックに関するコマンドは timedatectldate だね。 ハードウェアBIOSクロックに関するコマンドは hwclockclock だよ。

1. LinuxのGLIインターフェースで data を入力して現在のLinuxシステム時間をチェック

1
data

次に hwclock --show を入力してハードウェア時間をチェックするよ。

1
hwclock --show

2. Linuxシステム時間の校正(NTPサービスを使うときはシステムがネットに繋がってる必要があるよ)

  • CentOSでのNTPサービスインストールと設定の手順はこんな感じ:
1
2
# NTPサービスパッケージをインストール
sudo yum install ntp
1
2
# NTPサービスをデフォルトで起動するように設定
sudo chkconfig ntp on
1
2
# 起動パラメータを変更して、-g -x オプションを追加。これでシステム時間の誤差が大きくてもNTPサービスがちゃんと動くようになるよ。
sudo vi /etc/sysconfig/ntpd
1
2
# NTPサービスを起動
sudo service ntpd restart
  • Ubuntu/DebianでのNTPサービスインストールと設定の手順はこんな感じ:
1
2
# NTPサービスパッケージをインストール
sudo apt-get install ntp
1
2
# 起動パラメータを変更して、-g -x オプションを追加。これでシステム時間の誤差が大きくてもNTPサービスがちゃんと動くようになるよ。
sudo vi /etc/default/ntp
1
2
# NTPサービスを起動
sudo service ntp restart
  • ハードウェアクロックをシステムクロックに合わせる
1
hwclock --systohc --localtime (こっちの方が効果的みたいだよ)

または

1
timedatectl set-local-rtc 1   
  • 最後に、日付をCMOSに書き込んで永続化するよ。
1
clock -w

または

1
hwclock -w

3. Google BBRアクセラレーションを有効にする

この記事で紹介する方法は、Debian 9以降のDebian Linuxが対象だよ。他のOSだとどうなるか分からないんだ。

注意してほしいのは、ここでの設定パラメータはGoogle BBRを有効にするだけじゃなくて、ネットワークパラメータの一連の最適化も含まれてるってこと。そのままコピーして実行すればOKだよ。

Google BBRでVPSサーバーをワンクリックで高速化するのはすごく簡単なんだ。SSHでVPSにログインしたら、次の2つのコマンドをそれぞれ実行するだけ(ハイライト表示された部分をマウスで選択して、右クリックでコピー、rootユーザーの#の後に貼り付けてエンターを押してね)。

コマンド1

1
wget https://raw.githubusercontent.com/bannedbook/fanqiang/master/v2ss/server-cfg/sysctl.conf -O -> /etc/sysctl.con

もし wget: command not found というエラーが出たら、それはシステムにwgetがインストールされてないからだよ。先にwgetをインストールする必要があるんだ。 <strong>apt-get install -y wget</strong>

コマンド2

1
sysctl -p

実行に成功したら、だいたいこんな感じの出力になるはずだよ(個人の状況によって違うけど): fs.file-max = 51200 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.ip_local_port_range = 10000 65000 net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_fastopen = 3 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_rmem = 32768 436600 873200 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_max_tw_buckets = 9000 net.ipv4.tcp_max_syn_backlog = 65536 net.ipv4.tcp_mem = 94500000 91500000 92700000 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_mtu_probing = 1 net.ipv4.tcp_wmem = 8192 436600 873200 net.core.netdev_max_backlog = 250000 net.core.somaxconn = 32768 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 net.ipv4.tcp_congestion_control = bbr

This post is licensed under CC BY-NC-SA 4.0 by the author.

Visits Since 2025-02-28

Hugo で構築されています。 | テーマ StackJimmy によって設計されています。