オンラインゲームをするときにネットワークはデータ(IPパケット)を宛先コンピューター(サーバー)と送受信することで成り立つ。データを一度に送信できる量は決まっている。
それがMTU(aximum Transfer Unit)値だ。
サーバーのMTU値がゲーム機のMTU値より低い場合、データの分割、いわゆるフラグメンテーションが発生する。分割が発生した場合、分割されたデータには新しくデータの順番を付けるなどの情報がついたヘッダーが付く。
そしてサーバー上で分割されたデータはヘッダーの情報を元にデータを再構築する。
ヘッダーの情報には後に続くフラグメントがある場合は1、最後のフラグメントの場合には0といった
振り分けをすることでサーバー側が判断をして再構築をしている。
このように、適切なMTU値を設定しないと、データの分割、分割されたデータへのヘッダー付与、サーバー側でのデータの再構築といった余分な処理が発生する。だから遅延が発生する。
逆に言えばこの処理を抑えらればインターネット回線速度の上昇が期待できる。
私の場合は、下記サイトで自分のPCのMTU値を確認した上で、任天堂switchのMTU値を変更した。
https://www.speedguide.net/analyzer.php
任天堂switchのMTU値はオンラインの設定画面で変更可能だから試してみてほしい。
ルーティングテーブルの見方が苦手だった
情けないことにルーティングテーブルの見方がこれまでよくわかっていなかったので
先輩方に教えていただいたことで一部理解した。とはいえメトリックとかはまだ知らない。
※追記 0626 メトリックは優先度のことを指し、複数のルートがある場合数値が低いほうが優先される。
例えばこれ。windowなら cmdからroute print で表示

簡単にいえば、ネットワーク宛先のIPと接続するために、どのインターフェイス(NIC)を利用したらいいか書かれている表だ。
例えば、127.0.0.0のネットワーク宛先にパケットを送るNICは127.0.0.1のNICを利用するといったところ。
ネットワーク宛先に当てはまらないパケットはデフォルトゲートウェイを介してインターネットへの接続を試みる。
パケットの立場としてはNICが二つあるときとかどちらのNICからパケットを飛ばせばいいかわからないからね。(当時私はネットワーク宛先を外部からきたIPのことを指すとか思っていてよくわかっていなかった。)
ルーティングテーブルを引くと、ローカル内で別のネットワークと接続ができるようになる。
例えばVPNをつないだり、印刷機とつないだりだとか。
私の場合は、仕事にてクラウド上でVPNをひくために、ネットワーク宛先を対象のサーバーのローカルIPとし、
デフォルトゲートウェイを対象のVPCルータのローカルIPにした。
その時、windowサーバーからの接続だったからコマンドは下記のようにした。
route -p add 宛先IPアドレス MASK サブネットマスク ゲートウェイIPアドレス eth1
ちなみに[add]の箇所を[del]にしたら消せるから自分の端末で気軽に練習できる。
参考
ランダムにヘッダー画像が表示されるので
あかりのほかに用意したよ。

アイカツ!の氷上スミレ。服はブルーエンプレスコーデというつよつよなドレス。
長い髪を手でなびかせるようにする表現に挑戦してみた。
髪が透き通っていい感じ。
背景をいばらの女王なかんじのものを用意したかったけどこのままのほうがよさげだから
背景は次回のキャラにする。
ブログの話
ちょくちょくサイトのテーマを変えてはそのテーマのcssを変えてアレンジしたりと奮闘していましたが、やっとこのテーマに落ち着きそう。テーマ名は「tiny framework」
各デバイスに対しても画像の状態が変わらないところが気に入りました。
それに伴ってヘッダー画像も変えています。

この前アイカツのアニメを全話見たので、そのキャラの大空あかりちゃんを描きました。
アイカツは前向きで優しい世界なので、見ると幸せになれますよ。

これはオリジナルキャラとして作ってやつ。ブログのコンセプトがITとイラストだからでっかいペン持たせたら面白いかなと思って。
今後はいろいろヘッダー増やしてヘッダーをランダムに表示させるのもありかなあと思っています。
WHMのアカウントリストのquotaが本来と一致しない。
容量を使いすぎているアカウントを整理した後、
whmのアカウントリストを確認すると整理した容量に反映されていなかった。
いつもなら下記コマンドで反映してからrepquota -a で治っていたけど
今回は治らなかった。
/usr/local/cpanel/scripts/fixquotas
問題はキャッシュ
cPanelに問い合わせるとmailmanのキャッシュの有効期間は最大 30 日間のようで、Mailman のアーカイブを手動で調整しても何もクリアされません。そのファイルを削除して再生成すると、cPanel は Mailman のディスク使用量に対してより適切なサイズを報告するようになりました。
とのことなので、下記ディレクトリ以下に各アカウントのメーリングリストのキャッシュファイルがあることを確認。
/var/cpanel/mailman/diskusage_cache
該当のファイル名を変更等してから以下コマンド実行
/usr/local/cpanel/scripts/update_mailman_cache
CPコマンドの練習ができるスクリプト
誰かにcpコマンドの使い方の練習環境を用意するためにとりあえず
とあるサーバー内で勉強用ディレクトリをつくる。
一人ならそれでいいけど複数人に対応する場合、人数分のディレクトリをこちらが用意するのは手間なので
スクリプトを書いてみた。
#!/bin/bash
count=`find /root/study/cp/ -maxdepth 1 -name "player*" |wc -l`
if [ "$count" -eq 0 ]; then
echo "ディレクトリ名 "player"を作成します"
mkdir player
cd ./player
mkdir cp1 cp2
cd ./cp1
touch test{1..10}
cd ../
echo rm -rf cp* > reset.sh
echo mkdir cp1 cp2 >> reset.sh
echo cd ./cp1 >> reset.sh
echo 'touch test{1..10}' >> reset.sh
chmod 700 reset.sh
else
echo "ディレクトリ名 "player"`expr $count + 1`を作成します"
mkdir player`expr $count + 1`
cd ./player`expr $count + 1`
mkdir cp1 cp2
cd ./cp1
touch test{1..10}
cd ../
echo rm -rf cp* > reset.sh
echo mkdir cp1 cp2 >> reset.sh
echo cd ./cp1 >> reset.sh
echo 'touch test{1..10}' >> reset.sh
chmod 700 reset.sh
fi
挑戦したことはスクリプト内でディレクトリ作ったり移動したりファイルを作ったりすること。ほぼ全部だな。
練習中に何度も失敗してもいいようにreset.shを用意してみた。
echoで一行ずつファイルに内容を入れたけど、もっとスマートにやる方法があるなら知りたい。
その他
gitを触ってみてcui上で今回のスクリプトをgithubに
pushしてみたけどまだ慣れてないからちょくちょくgitを触ってみたい。
追記 6月7日
記述に似ている部分があったので関数を作ってみた。よりスマート
#!/bin/bash
count=`find /root/study/cp/ -maxdepth 1 -name "player*" |wc -l`
mkreset (){
mkdir ${1}1 ${1}2
cd ./${1}1
touch test{1..10}
cd ../
echo rm -rf ${1}* > reset.sh
echo mkdir ${1}1 ${1}2 >> reset.sh
echo cd ./${1}1 >> reset.sh
echo 'touch test{1..10}' >> reset.sh
chmod 700 reset.sh
}
if [ "$count" -eq 0 ]; then
echo "ディレクトリ名 "player"を作成します"
mkdir player
cd ./player
mkreset "cp"
else
echo "ディレクトリ名 "player"`expr $count + 1`を作成します"
mkdir player`expr $count + 1`
cd ./player`expr $count + 1`
mkreset "cp"
fi
bashでダブルクォーテーションとかエスケープあたりをまとめてみる
クォーテーションの話はLPIC1でよく見たものの忘れがちなので改めてまとめてみる。
エスケープ
エスケープとは特殊文字の機能を無効にすること。
シングルクォーテーション
''に囲まれた文字列は全て文字列のままとして扱われる。
例えば、下記は変数が展開されない
TEST=test
echo '$TEST'
$TEST
ダブルクォーテーション
””に囲まれた文字列は一部を除いて文字列として扱われる
一部とは、$ [\]バックスラッシュ [‘]バッククォート のこと。
例えば、下記は変数が展開される。
TEST=test
echo "$TEST"
test
バッククォーテーション
``に囲まれた文字列をコマンドとして実行できる。
例
ls
test1 test2
TEST=ls
echo `$TEST`
test1 test2
lsを予めバッククォートにいれても可能
TEST=`ls`
echo $TEST
test1 test2
まとめ
シングルクォーテーションは全て文字列に入れておくことを前提に、
変数を展開しつつ各文字列を一つにしたいならダブルクォーテーション、
コマンドを利用したいならバッククォーテーションと覚える。
おまけ
一文字だけをエスケープしたい場合、[\]バックスラッシュをつける
サーバー移転後にメールを送信できるけど受信できない
サーバー移転作業後に移転後のアカウントで新しいメールアカウントを作成したときにメールテストをしたときの話。
メールの送信はどのサーバーにもできるけど受信ができないときがあった。
・メールが受信できるのは送信元サーバー内と送信先が一緒のときだけ。
上記のことはローカル配送のことを指す。
ローカル配送とは上記のように送受信サーバーが一緒の場合、
メールサーバーの性質上名前解決をせずにメールを配送するから受信ができたということ。
まぁ、メールテストはDNSを切り替えてからしましょう。
参考
https://faq.cpi.ad.jp/faq/show/106?category_id=33&site_domain=default
マスターブートレコードとgrub install
仕事中、RAID1構成のsdbのハードディスクが故障したから交換作業を実施した。
交換したハードディスクのパーティションを切った。sdb1とする。sdb1をsda1からコピーして、
sdb1、sda1によるRAID1構成を作成した。これで終わりではなく
その後になぜsdbにgrubをインストールするのかがわからなかった。
grub-install --root-directory=/ /dev/sdb
自分の理論ではsda全体の中身をsdbに入れたからgrubもインストールされているだろうと思っていた。
後から先輩に教えてもらったけど、grubのインストールはマスターブートレコード(MBR)を指しているとのこと。
MBRはディスク内のセクタの先頭にあり一番初めに読まれるデータ。
MBR内にはブートローダとパーティションテーブルがある。ブートローダはパーティションテーブルの内容を元に
各パーティションであるsdb1やsdb2ブートセクタを起動できるようにする。ブートセクタによって各パーティションのOSが起動する仕組みだ。
つまり、sdb1をsda1にコピーしたところで、MBRが含まれていないので、別途MBRをインストールする必要があった。
ddコマンドでもMBRをコピーできるようだけど、ddコマンドをミスしてディスクを壊すと危ないのでコマンドでMBRをインストールしているとのこと。
参考
わかりそうでわからないシリーズ
zabbixagent5.0をcentos7.9に設置する。
リポジトリの更新
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
Zabbixagentをインストール
yum -y install zabbix-agent
エージェントのバージョンを確認
zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 5.0.11
設定ファイルでIPを変更する
vi /etc/zabbix/zabbix_agent.conf
Server=10.xxx.xxx.xxx
ServerActive=10.xxx.xxx.xxx
サービス起動後、サーバーを再起動したときにエージェントが自動的に立ちあがるように設定する。
systemctl start zabbix-agent
systemctl enable zabbix-agent
ファイアウォールからポートを恒久的に開放する。
firewall-cmd --add-port=10050/tcp --permanent
firewall-cmd --reload
登録したポートを確認する。
firewall-cmd --list-ports
エラー発生時はログを確認する
/var/log/zabbix/zabbix_agentd.log
余談
Centos7.9だと普通のレポジトリでエージェントのバージョンを5.0として落とせないってことがあったら
練習環境のサーバーでは、SCL(ソフトウェアコレクション)って本来redhatとのサポートとは違うところからリポジトリをダウンロードしてからエージェント5.0を落としていた。でも本番環境ではrpmからリポジトリ更新したらよかったのでsclをインストールする必要はなかった
yum -y install centos-release-scl
参考
https://densan-hoshigumi.com/server/zabbix-50-centos7-apache-mariadb-install
https://eng-entrance.com/linux-centos-port
https://satimo.org/2020/07/zabbix-40-50-update/
参考
https://densan-hoshigumi.com/server/zabbix-50-centos7-apache-mariadb-install
https://eng-entrance.com/linux-centos-port
https://satimo.org/2020/07/zabbix-40-50-update/