勉強後記

千里の道も一歩から。学びから遊びまで継続活動の日記。

    Linux

      このエントリーをはてなブックマークに追加 mixiチェック

    なぜNATのセッション数?

    最近1台あたりの通信機器が使うセッション数が増加傾向にある。
    文科省の資産だとWeb授業をそうていすると、1台あたり100セッションは見ておいた方がよいようです。

    参考資料
    新時代の学びにおける先端技術導入実証研究事業多様な通信環境に関する実証事業成果報告会
    78ページあたりをみると、1台あたりMAXで120セッションくらいつかっていることがわかります。

    ネットワンシステムズ株式会社
    O365などクラウドサービスの導入で企業が直面する課題とは?
    12ページに「O365を利用すると、多くの通信セッションが発生(1人あたり最大70~100セッション)」
    とあります。

    帯域はそこまでトラヒック使ってないのにネットワークが遅い場合NATのセッション数でひっかかっている事があります。

    設計

    1.機器にログインしてNATのセッション数を取得してテキストファイルに保存するスクリプト
    2.5分おきに実施
    3.保存されたテキストファイルを表示するスクリプト

    こんな感じで行こうかと思います。
    本当は1つにできそうな気もするのですが、Fortigateがどうしても自動ログインして取得すると
    30秒以上かかるので、いったん全部この形式でやります。

    私が管理している一部の機器ではMIBでセッション数がはけないことを確認済みです。
    となると、機器に自動でログインしてコマンドを実行し、その結果を読み込むといった
    流れがよいのかなと思います。
    事前にいろいろテストしたのですがパスワードの暗号化をするとZabbixの方でスクリプトの
    実行時にタイムアウトになってしまってうごかなかったので、しゃーない2段階で実施しようかと思います。

    環境

    サーバー CentOS Linux release 7.9.2009
    Zabbix zabbix_server (Zabbix) 5.0.23

    秘密鍵の作成

    秘密鍵 ~/.ssh/id_rsaを作成する
    とりあえず全部デフォルト
    ssh-keygen →デフォルトのままで作成
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): →未入力
    Enter passphrase (empty for no passphrase): →未入力
    Enter same passphrase again: →未入力

    鍵が出来る
    001

    鍵が出来ている事を確認
    02

    パスワードを暗号化して秘密鍵を作る
    echo '任意のパスワード' | openssl rsautl -encrypt -inkey ~/.ssh/id_rsa > 任意のファイル名.rsa

    複合化できるか確認する
    penssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in 任意のファイル名.rsa
    任意のパスワード
    パスワードが表示できればOK

    ログインしてセッション数を表示するスクリプトの作成

    スクリプトファイルを作る
    zabbix01 ~]# vi 任意のファイル名.sh
    #!/bin/sh
    export LC_CTYPE=ja_JP.UTF-8

    host="ホスト名"
    user="ログインユーザ名"
    pass="$(openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in 先ほど作った秘密鍵.rsa)"
    cmd="edit NAT"
    fortigateのコマンド1 cmd1="config vdom"
    fortigateのコマンド2 cmd2="get system session status"
    fortigateのコマンド3 end="end"
    fortigateのコマンド4
    expect -c "
    spawn ssh ユーザ名@IPアドレス
    expect \\"Password:\\"
    send \\"${pass}\\n\\"
    expect \\">\\"
    send \\"${cmd1}\\n\\"
    expect \\">\\"
    send \\"${cmd}\\n\\"
    expect \\">\\"
    send \\"${cmd2}\\n\\"
    expect \\">\\"
    send \\"${end}\\n\\" ; sleep 1
    expect eof
    " > /usr/lib/zabbix/externalscripts/任意のファイル名.log

    こんな感じ。あとは実行権限をつける。
    chmod +x 任意のファイル名.sh

    cronに設定して5分おきに実行する。
    vi /etc/crontab
    */5 * * * * root /root/./任意のファイル名.sh

    Zabbixに取り込むための外部スクリプト作成

    セッション数の数字部分だけ抜け出せることを確認
    cat -v /usr/lib/zabbix/externalscripts/任意のファイル名.log | grep -e "The total number of sessions for the current VDOM"|grep -o '[0-9]*'| tail -n 1

    zabbixのディレクトリ移動
    cd /usr/lib/zabbix/externalscripts

    zabbixの取り込みスクリプト作成
    vi 任意のファイル名2.sh
    #!/bin/sh
    export LC_CTYPE=ja_JP.UTF-8

    cat -v /usr/lib/zabbix/externalscripts/任意のファイル名.log | grep -e "The total number of sessions for the current VDOM"|grep -o '[0-9]*'| tail -n 1

    実行権限付与
    chmod +x 任意のファイル名2.sh

    Zabbixで実行できるように所有権を変更
    chown zabbix:zabbix 任意のファイル名2.sh
    chown zabbix:zabbix /usr/lib/zabbix/externalscripts/任意のファイル名.log 


    Zabbixでアイテムを作成する

    ホスト→アイテムを作成したホストを選択。
    上のメニューからアイテムを選択する。
    003

    右上のアイテムを作成を選ぶ
    004


    必要事項を入力する
    005


    テストボタンを選択し値が取れる事を確認する。

    006


    値が取れる事を確認したら最後に追加を押して完了。

    Zabbixでグラフを作成する

    グラフを選択し、グラフの作成を選択する。
    007

    任意の名前を入力して、追加をクリック
    008

    アイテムから外部チェックを選び選択をクリック

    009

    アイテムにはいるので追加を選択する
    010

    プレビューを押すと見れます。
    (初回はまだテストでデータ入ってないのでグラフは真っ白です。)
    011

    Zabbixでトリガーを作成する

    トリガーをクリックする
    013

    トリガーの作成をクリック
    014

    名前を入力して、障害レベルの定義をする。
    条件式は
    {zabbix登録ホスト名:保存した任意の外部スクリプト.last()}>閾値の数字(今回は10000)

    015

    監視データのホストからグラフに閾値が追加されていればOK。

    グラフはホストのテンプレートからは見れないのでスクリーンなどを作って追加しておくと良いかと思います。
    016

    終わり!



      このエントリーをはてなブックマークに追加 mixiチェック
    ちょっと躓きましたが、簡単でした。(2022/05/26現在)

    前提

    有効期限が切れてからでないと更新作業が出来きないようです。
    私の有効期限が2022/05/25までだったので、25日当日に作業をしたのですが上手くいきませんでした。

    2022/05/25の状態

    # subscription-manager list
    +-------------------------------------------+
        インストール済み製品のステータス
    +-------------------------------------------+
    製品名:           Red Hat Enterprise Linux for x86_64
    製品 ID:          479
    バージョン:       8.6
    アーキテクチャー: x86_64
    状態:             期限切れです
    状態の詳細:       
    開始:             
    終了:             

    となってしまっていました。更新手順は下記にあるのですが
    https://developers.redhat.com/articles/renew-your-red-hat-developer-program-subscription#

    手順通りやっても上手くいきませんでした。

    2022/05/26の状態

    日付がかわって5/26で有効期限が切れた状態で手順通りに作業してみます。

    1. 1.Chromeのシークレットウィンドウ、Firefoxのプライベートウィンドウ、またはEdgeのInPrivateウィンドウでdevelopers.redhat.comを開きます。
    2. 2.RedHatログインIDを使用してサイトにサインインします。

    ここで2022/05/25には出てこなかった、利用規約の同意画面が出てきます。
    Snipaste_2022-05-26_09-47-23

    利用規約に同意して、ログアウトします。

    3.15〜20分待ってから、access.redhat.com/managementにログインします。

    Snipaste_2022-05-26_10-08-09

    1年間有効期限が伸びたことが確認できます。

    サブスクリプションの登録

    作業後今の状態を確認してみます。

    # subscription-manager list
    +-------------------------------------------+
        インストール済み製品のステータス
    +-------------------------------------------+
    製品名:           Red Hat Enterprise Linux for x86_64
    製品 ID:          479
    バージョン:       8.6
    アーキテクチャー: x86_64
    状態:             サブスクライブなし
    状態の詳細:       有効なサブスクリプションでサポートされていません。
    開始:
    終了:

    状態が期限切れ→サブスクライブなしに変わっているのが確認できました。

    # subscription-manager register --auto-attach --force
    →システムは一度登録されているので、--forceのオプションをつけます
    登録の解除中: subscription.rhsm.redhat.com:443/subscription
    UUID が xxxxxxxxxxxxxxxxxxxxxxx のシステムの登録は解除されました
    ローカルデータがすべて削除されました
    登録中: subscription.rhsm.redhat.com:443/subscription
    ユーザー名: デベロッパーアカウントに登録した時のメールアドレス
    パスワード:デベロッパーアカウントに登録した時のパスワード
    このシステムは、次の ID で登録されました:  xxxxxxxxxxxxxxxxxxxxxxx 
    登録したシステム名: 登録したサーバのFQDN
    インストール済み製品の現在の状態:
    製品名: Red Hat Enterprise Linux for x86_64
    状態:   サブスクライブ済み

    これで登録作業がおわりましたので、アカウント画面で確認してみます。

    access.redhat.com/managementのシステムをクリックします。

    Snipaste_2022-05-26_10-19-44

    先ほど登録したサーバーが登録されている事が確認できればOKです。

    UPdate確認

    アップデートなどが出来るかも確認しておきましょう。

    更新作業前にアップデートしようとすると下記の様な状態になっていました。
    # dnf check-update
    サブスクリプション管理リポジトリーを更新しています。
    メタデータの期限切れの最終確認: 2:42:48 時間前の 2022年05月26日 07時01分03秒 に実施しました。

    更新作業後
    # dnf check-update
    サブスクリプション管理リポジトリーを更新しています。
    Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)              40 MB/s |  47 MB     00:01
    Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)           41 MB/s |  44 MB     00:01
    メタデータの期限切れの最終確認: 0:00:01 時間前の 2022年05月26日 10時26分42秒 に実施しました。

    sos.noarch                       4.2-19.el8_6                        rhel-8-for-x86_64-baseos-rpms

    更新作業が出来ました。

    期限日に作業しようとすると作業が出来ないので、期限日が過ぎてから作業をするようにしましょう。

    ちょうどこのタイミングでサーバの再構築をしようとしたので、UPdate出来なくて焦りましたが期限が1年ということを意識して作業をするようにしたらOKですね。

      このエントリーをはてなブックマークに追加 mixiチェック
    1.VMwareで新規仮想マシンを作成する。
     1-1 新規仮想マシンの作成を選択
    CentOS001

     1-2 ダウンロードしてきたISOファイルを選択する。
    CentOS002
     次へをクリック。

     1-4 インストールするOS種類を選択する。
    CentOS003


     1-4 任意の仮想マシン名をつける
    CentOS004

     1-5 ディスクサイズを決める。
    CentOS005

     1-6 メモリを1GB以上割り当てる。
    CentOS006

    以上で仮想マシンの設定を終了です。
     

      このエントリーをはてなブックマークに追加 mixiチェック
    色が一緒だと何かと不便なのでvimをインストールする。

     [root@localhost ~]# yum -y install vim
    読み込んだプラグイン:fastestmirror, langpacks, priorities, refresh-packagekit
    Loading mirror speeds from cached hostfile
     * fedora: www.ftp.ne.jp
     * updates: www.ftp.ne.jp
    依存性の解決をしています
    --> トランザクションの確認を実行しています。
    ---> パッケージ vim-enhanced.x86_64 2:7.4.475-2.fc20 を インストール
    --> 依存性の処理をしています: vim-common = 2:7.4.475-2.fc20 のパッケージ: 2:vim-enhanced-7.4.475-2.fc20.x86_64
    --> 依存性の処理をしています: libgpm.so.2()(64bit) のパッケージ: 2:vim-enhanced-7.4.475-2.fc20.x86_64
    --> トランザクションの確認を実行しています。
    ---> パッケージ gpm-libs.x86_64 0:1.20.7-3.fc20 を インストール
    ---> パッケージ vim-common.x86_64 2:7.4.475-2.fc20 を インストール
    --> 依存性の処理をしています: vim-filesystem のパッケージ: 2:vim-common-7.4.475-2.fc20.x86_64
    --> トランザクションの確認を実行しています。
    ---> パッケージ vim-filesystem.x86_64 2:7.4.475-2.fc20 を インストール
    --> 依存性解決を終了しました。

    依存性を解決しました

    ==================================================================================================================
     Package                       アーキテクチャー      バージョン                      リポジトリー            容量
    ==================================================================================================================
    インストール中:
     vim-enhanced                  x86_64                2:7.4.475-2.fc20                updates                1.0 M
    依存性関連でのインストールをします:
     gpm-libs                      x86_64                1.20.7-3.fc20                   fedora                  32 k
     vim-common                    x86_64                2:7.4.475-2.fc20                updates                5.9 M
     vim-filesystem                x86_64                2:7.4.475-2.fc20                updates                 12 k

    トランザクションの要約
    ==================================================================================================================
    インストール  1 パッケージ (+3 個の依存関係のパッケージ)

    総ダウンロード容量: 7.0 M
    インストール容量: 23 M
    Downloading packages:
    (1/4): gpm-libs-1.20.7-3.fc20.x86_64.rpm                                                   |  32 kB  00:00:01     

    (2/4): vim-enhanced-7.4.475-2.fc20.x86_64.rpm                                              | 1.0 MB  00:00:02     

    (3/4): vim-common-7.4.475-2.fc20.x86_64.rpm                                                | 5.9 MB  00:00:03     

    (4/4): vim-filesystem-7.4.475-2.fc20.x86_64.rpm                                            |  12 kB  00:00:00     

    ------------------------------------------------------------------------------------------------------------------
    合計                                                                              1.7 MB/s | 7.0 MB  00:00:04     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction (shutdown inhibited)
      インストール中          : gpm-libs-1.20.7-3.fc20.x86_64                                                     1/4 

      インストール中          : 2:vim-filesystem-7.4.475-2.fc20.x86_64                                            2/4 

      インストール中          : 2:vim-common-7.4.475-2.fc20.x86_64                                                3/4 

      インストール中          : 2:vim-enhanced-7.4.475-2.fc20.x86_64                                              4/4 

      検証中                  : 2:vim-enhanced-7.4.475-2.fc20.x86_64                                              1/4 
      検証中                  : 2:vim-filesystem-7.4.475-2.fc20.x86_64                                            2/4 

      検証中                  : gpm-libs-1.20.7-3.fc20.x86_64                                                     3/4 

      検証中                  : 2:vim-common-7.4.475-2.fc20.x86_64                                                4/4 


    インストール:
      vim-enhanced.x86_64 2:7.4.475-2.fc20                                                                            

    依存性関連をインストールしました:
      gpm-libs.x86_64 0:1.20.7-3.fc20   vim-common.x86_64 2:7.4.475-2.fc20   vim-filesystem.x86_64 2:7.4.475-2.fc20  

    完了しました!

    [root@localhost ~]# vi ~/.bashrc
    # .bashrc

    # User specific aliases and functions

    alias rm='rm -i'
    alias cp='cp -i'
    alias mv='mv -i'
    alias vi='vim'
    #↑ エイリアス設定を追加

    # Source global definitions
    if [ -f /etc/bashrc ]; then
            . /etc/bashrc
    fi

    再読み込みさせる
    [root@localhost ~]# source .bashrc 

    確認する
    [root@localhost ~]# which vi
    alias vi='vim'
            /bin/vim
     

      このエントリーをはてなブックマークに追加 mixiチェック
    1.Vsftpd のインストールと設定
    [root@WR367201 ~]# yum -y install vsftpd
    読み込んだプラグイン:fastestmirror, langpacks, priorities, refresh-packagekit
    Loading mirror speeds from cached hostfile
     * fedora: mirrors.ustc.edu.cn
     * updates: mirrors.ustc.edu.cn
    依存性の解決をしています
    --> トランザクションの確認を実行しています。
    ---> パッケージ vsftpd.i686 0:3.0.2-6.fc20 を インストール
    --> 依存性解決を終了しました。
    依存性を解決しました
     Package               アーキテクチャー    バージョン                    リポジトリー           容量
    インストール中:
     vsftpd                i686                3.0.2-6.fc20                  fedora                171 k
    トランザクションの要約
    インストール  1 パッケージ
    総ダウンロード容量: 171 k
    インストール容量: 362 k
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction (shutdown inhibited)
    インストール:
    完了しました! 
    [root@WR367201 ~]# vi /etc/vsftpd/vsftpd.conf
    # 12行目:匿名ログイン禁止
    anonymous_enable=NO
    # 82,83行目:コメント解除 ( アスキーモードでの転送を許可 )
    ascii_upload_enable=YES
    ascii_download_enable=YES
    # 100,101行目:コメント解除 ( chroot有効 )
    chroot_local_user=YES
    chroot_list_enable=YES
    # 103行目:コメント解除 ( chroot リストファイル指定 )
    chroot_list_file=/etc/vsftpd/chroot_list
    # 109行目:コメント解除 ( ディレクトリごと一括での転送有効 )
    ls_recurse_enable=YES
    # 114行目:変更 ( IPv4をリスンする )
    listen=YES
    # 123行目:変更 ( IPv4をリスンするならIPv6はオフにする )
    listen_ipv6=NO
    # 最終行へ追記
    # ローカルタイムを使う
    use_localtime=YES
    # seccomp filter をオフにする ( ログインに失敗する場合はオフにする )
    seccomp_sandbox=NO 
    [root@www ~]# vi /etc/vsftpd/chroot_list
    # 上の階層への移動を許可するユーザーを追加
    追加するユーザ名
    [root@www ~]# systemctl start vsftpd.service  起動
    [root@www ~]# systemctl enable vsftpd.service  起動時に自動起動
    ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service' 

    あとはFFFTP等のクライアントで接続してみる。 

    このページのトップヘ