isLandcenter 非番中

ブログトップ | ログイン

zabbix5 で SNMP デバイスを監視する方法を説明します。 SNMP  管理機能がある手頃な機器がないので、ここでは openSUSE Leap 15.2 に snmpd を走らせて、監視対象としています。

Zabbix4 はこちら
Zabbix4.2 snmp監視 デバイスのグラフを表示させるまで

ー openSUSE Leap 15.2 の snmpd 

openSUSE Leap 15.2 ではデフォルトで net-snmp はインストールされています。

SUSE Linux Enterprise(SLE) ではインストールされていないので、YaST か zypper でインストールし、YaST > System > Service Manager より snmpd を Start/Enable にセットします。

zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15462244.png

ー community String と、送信相手の設定

/etc/snmp/snmpd.conf を編集し、次の行を変更して、送信先コミュニティストリングと、応答先のアドレス範囲を指定します。さらに詳細な設定ができますが、ここでは最小限の説明です。

# rocommunity public 127.0.0.1
rocommunity public 192.168.1.0/24

変更したら systemctl か YaST の Service Manager からリスタートします。

myhost:~ # systemctl restart snmpd

zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15470668.png

ー snmp の応答確認

zabbix  サーバーから snmpwalk を使って、応答があるかどうか確認します。指定する OID は System の値 ”.1.3.6.1.2.1.1” あたりが適当でしょう。

# snmpwalk -v 2c -c CommunityString  target_host.Yourdomain .1.3.6.1.2.1.1

zabbix5:~ # snmpwalk -v 2c -c public myhost.i.islandcenter.jp .1.3.6.1.2.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux myhost 5.3.18-lp152.63-default #1 SMP Mon Feb 1 17:31:55 UTC 2021 (98caa86) x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (4839) 0:00:48.39
SNMPv2-MIB::sysContact.0 = STRING: Sysadmin (root@localhost)
SNMPv2-MIB::sysName.0 = STRING: myhost
SNMPv2-MIB::sysLocation.0 = STRING: Server Room

: 略

ー 監視ホストを zabbix に作成

詳細はマニュアルをご参考下さい。ここでは最低限の説明をしています。あまり役に立たないこのページよりも正しい事が書かれています。

1 CONFIGURING A HOST

snmp でネットワーク内のデバイスオブジェクトを作成し、snmpwalk で応答があった Linux デバイスの snmp 監視ターゲットを作成します。

左のメニューから Configuration > Hosts > 右上の "Create Host"

zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15475378.png

Hostname : myhost
Group : Select > "Type of host" ここでは Linux Server
Interface > "Add"

zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15482879.png


Interface > "snmp"
IP か DNS 名をセット(DNS名を使う時は”Connect to” を DNS に)ポートは 151  そのまま。
SNMP version は、デフォルトで v2、コミュニティストリングは、public なら、そのまま、必要に応じて変更

最後に "Add"

zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15485173.png

ここで"public"以外の、コミュニティストリングをネットワーク全体で使っている場合、 Macros > Inherited and host macros > より 、下の方にある ”{$SNMP_COMMUNITY}” を Change して、別なコミュニティストリングに変更します。

zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15492639.png

テンプレートを指定します。

Hosts > MyHost > Template > Select > 一番近いテンプレートを選択:ここでは ”Linux SNMP” を選択します。

”Update” で登録更新します。

※複数のテンプレートが選べますが、AND 条件でダブるとエラーになります。例えば Linux SNMP と Generic SNMP は同居できません。

※テンプレートは Zabbix Share https://share.zabbix.com/ に豊富にありますが、一発では動かない事が多いです。

Zabbix をアップデートした場合は、旧バージョンのテンプレートが引き継がれるため、テンプレートの選択はかなりややこしくなります。

zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15501248.png

登録して Configuration > Hosts のリストの中に、登録したホストが出てきて、数分以内に右の Availability が「緑 SNMP」 になれば、とりあえずオーケーですが、グラフの描画が始まりません。

zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15514575.png

グラフを見るには

Monitoring > Latest data より、Host Group > Select , Host > Select,  Application > 監視するアイテム、ここでは CPU を選んでいます。試しに CPU Utilization にチェックを付けて”Display Graph” を押します。

zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15522271.png

CPU使用率のグラフが確認できました。

zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15525666.png

ー 監視アプリケーションの有効化

とりあえず CPU 負荷はすぐグラフ化できましたが、他の情報を見るには Application を Enable にする必要があるようです。
Configuration > Hosts > "Myhost" を選び "Applications" のリンクを押して、全ての "Applications" を Check して Enable ボタンを押します。

同様の操作を "Items" についても行います。

zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15532745.png

開始してから、最低 3600 秒、一時間待ちます。しばらく放置した後

Monitoring > Latest data > Host > Application : interface

でトラフィック送受信のグラフが描画されました。
zabbix 5.2  openSUSE Leap 15.2 SNMP でデバイス監視_a0056607_15540433.png

ー まとめ

Zabbix で SNMP 監視ルータやスイッチの死活・トラフィック監視がは、見えない物を見える化する事です。

とりあえず、Linux Host を対象に zabbix から最低限のリソース管理ができました。SNMP 監視は設定方法に当たり外れが多いようです。まずは最低限、見たいことが見れればラッキーかもしれません。グラフの描画が始まらないのは焦りますが、とにかく一時間以上待って変化がないかチェックします。

まずはデフォルトでは3600 秒 、一時間ごとに SNMP でデバイスの値をディスカバリーるようなので、焦ってはいけないという事です。

テンプレートをとっかえひっかえしている内にグラフが描画される場合もあります。Applicatin を Enable すると動く場合もありました。何をどうすれば、SNMP での監視タスクを作れるかの最適解はまだ見つけていません。

Zabbix の難点ですが、マイナーなバージョン変更でもUIが変わったり、テンプレートが追加されてしまい、過去の経験とは違う手順を踏まなければならない事があります。バージョンアップする場合は、書籍の情報や、素人っぽい私のブログの様を参考せず、そのバージョンのオフィシャルドキュメントを見ておく事です。バージョンによって大きく手順が違う場合があります。

あわせて読みたい

Zabbix 5.2 on openSUSE Leap 15.2 インストール

zabbix5 で SUSE Linux15(SLE openSUSE Leap) を監視、snmp Agent, zabbix Agent の設定






by islandcenter | 2021-03-01 16:01 | Linux | Comments(0)

SUSE15(SLE15x/openSUSE Leap15x) で NTP タイムサーバーを稼働させます。

知らなかったで済まされなかったンですが、いろいろ言い訳はありますよ。古い SLES11 を NTP サーバーとしていたので気にならなかったのですが、openSUSE Leap 15.2 に変えてからどうもNTPサーバーがおかしい。ってか全然機能していない。

よく見たらフレッシュにインストールした openSUSE Leap 15.2 って ntpd のサービスが YaST Service Manager にないんです!こりゃおかしいと思って調べてみました。

SUSE 15(SLE15/openSUSE15)では、ntpd ってなくなっていたんですね。その代わりに chrony というパッケージに置き換わっていました。


という事で、 SUSE Linux 15 (SLE15/openSUSE Leap 15) で NTP サーバー chronyd を動かしてみました。

31 Time Synchronization with NTP

chronyc(1) Manual Page

ー chrony パッケージ

chrony パッケージは、デフォルトで SLE/openSUSE 15x のインストーラがインストールしてクライアントとして機能します。別途インストールする必要はないのですが、なければ 1 クリックインストールします。こちら

chrony System Clock Synchronization Client and Server

SUSE15(SLE15x/openSUSE Leap15x) で NTP タイムサーバー_a0056607_12343156.png


ー /etc/chrony.conf の書き換え

デフォルトでは chronyd はクライアントとして動作します。 YaST > Network Services > NTP Configuration で」タイムソースを指定すると、 /etc/chrony.conf ファイルは YaST により更新されます。

YaST で更新されない部分が allow の行です。ここはコメントアウトされているので、自身がタイムソースとなる場合、提供する相手の IP アドレスを次の様に指定します。

chrony.conf を書き換えたら、chronyd を YaST > System > Service Manager か systemctl コマンドで再起動します。

suse15:~ # cat /etc/chrony.conf | grep llow

# Allow the system clock to be stepped in the first three updates
# Allow NTP client access from local network.
#allow 192.168.0.0/16
allow 192.168.1.0/24
suse15:~ # systemctl restart chronyd
suse15:~ # systemctl status chronyd
● chronyd.service - NTP client/server 

: 以下略

SUSE の場合、YaST > Network Services > NTP Configuration から、タイムソースを追加して、TEST ボタンを押すと、NTP ソースとして機能しているかをテストすることができます。

SUSE15(SLE15x/openSUSE Leap15x) で NTP タイムサーバー_a0056607_12345406.png

どうやら動いているようです。

ちなみにタイムソースを設定する場合、デフォルトで "Quick Initial Sync" にチェックがはいっており、iburst オプションが有効になります。

SLES 15 は SLES12 よりアップデートしたものなので、ntpd が残っていたのですが、YaST > Software Maanagement から削除してしまいました。

ー slew モードと step モード

chrony のデフォルトは step モードです。デフォルトで、タイムソースとの一秒以上の時刻ズレを3回以上検出すると、一挙に時刻合わせを行います。時刻のズレが大きいとアプリケーションによっては深刻な誤動作(時刻戻りによる)が発生する場合があるので、slew モード(徐々寄せモード)にするのが良いでしょう。ただし slew モードは時刻ズレが大きいと同期に時間がかかります。時刻ズレがあまり影響ない場合はデフォルトの Step モードでも構いません。

# makestep 1.0 3 # Comment Out
leapsecmode slew # <--- Add Line

デフォルトではポーリング間隔(Polling interval) minpoll 64sec / maxpoll 1024sec です。詳細はマニュアルでご確認ください。

chrony.conf(5) Manual Page


isLandcenter.jp





by islandcenter | 2021-01-08 12:38 | SUSE | Comments(0)

- zabbix5 で SUSE Linux15(SLE openSUSE Leap) を監視する。snmp Agent, zabbix Agent の設定 -

ここでは、SUSE Linux Enterprise 15 (SLE15) と openSUSE Leap 15 を対象に zabbix 5.2 で監視する snmp と zabbix Agent の設定方法について説明しています。

ー snmpd の設定

YaST か zypper で net-snmp パッケージをインストールします。

# yast

Software > Software Management より "snmp" などでサーチして net-snmp をインストールrします。

zabbix5 で SUSE Linux15(SLE openSUSE Leap) を監視、snmp Agent, zabbix Agent の設定_a0056607_13313231.png

/etc/snmp/snmpd.conf の rocommunity の行に、 Community string ここでは "public" とネットワークアドレスを設定します。

opensuse15:~ # cat /etc/snmp/snmpd.conf | grep community
# to enable it uncomment the rwcommunity line and change the community
# rocommunity public 127.0.0.1
rocommunity public 192.168.1.0/24
# rwcommunity mysecret 127.0.0.1
opensuse15:~ #

# yast

System > Services Manager より、snmpd を Start, On boot enable にセットします。もしくは systemctl コマンドで有効化します。

zabbix5 で SUSE Linux15(SLE openSUSE Leap) を監視、snmp Agent, zabbix Agent の設定_a0056607_13320239.png

systemctrl で行う場合

opensuse15:~ # systemctl start snmpd
opensuse15:~ # systemctl enable snmpd
opensuse15:~ # systemctl status snmpd
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2021-01-03 16:54:32 JST; 2s ago
Main PID: 7541 (snmpd)
Tasks: 1
CGroup: /system.slice/snmpd.service
└─7541 /usr/sbin/snmpd -LS0-6d -f

Jan 03 16:54:34 opensuse15 snmpd[7541]: Connection from UDP: [192.168.1.221]:59884->[192.168.1.3]:161

: 略

opensuse15:~ #


zabbix サーバー側から snmpwalk で string が返ってくるか確認します。

zabbix:~ # snmpwalk -v 2c -c public opensuse15.mydomain.com .1.3.6.1.2.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux opensuse15 5.3.18-lp152.19-default #1 SMP Tue Jun 9 20:59:24 UTC 2020 (960cb00) x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (4960) 0:00:49.60
:
: 略
:

ー Community String の変更

WAN 越しにクラウドサービスを監視したい場合や大規模ネットワークの場合、 Community String をデフォルトから変更して運用するケースが多くあると思います。

その場合、Configuration > Hosts > "Your Hostname" > Macros > Inherited host macros を選んで

zabbix5 で SUSE Linux15(SLE openSUSE Leap) を監視、snmp Agent, zabbix Agent の設定_a0056607_11382838.png

{$SNMP_COMMUNITY} > Change リンク > 「"public" を別なストリングに変更」します。

zabbix5 で SUSE Linux15(SLE openSUSE Leap) を監視、snmp Agent, zabbix Agent の設定_a0056607_11385719.png

ー zabbix agent のインストールと設定

次のページから、SUSE Linux Enterprise 15 用のリポジトリを登録するコマンドをコピーして実行します。

Download and install Zabbix

zabbix5 で SUSE Linux15(SLE openSUSE Leap) を監視、snmp Agent, zabbix Agent の設定_a0056607_13323494.png


SUSE Linux Enterprise 15 用のコマンドは次の様に記述されています。

# rpm -Uvh --nosignature https://repo.zabbix.com/zabbix/5.2/sles/15/x86_64/zabbix-release-5.2-1.sles15.noarch.rpm
# zypper --gpg-auto-import-keys refresh 'Zabbix Official Repository'

リポジトリの登録ができたら zypper か YaST を使って zabbix agent をインストールします。

# yast

Software > Software Management で "zabbix" でサーチ、zabbix-agent をインストールします。

zabbix5 で SUSE Linux15(SLE openSUSE Leap) を監視、snmp Agent, zabbix Agent の設定_a0056607_13325625.png

/etc/zabbix/zabbix_agentd.conf Seerver= , ServerActive= の2行に送信先 zabbix Server のアドレスを記述します。

sles15:~ # cat /etc/zabbix/zabbix_agentd.conf | grep mydomain.com
Server=zabbix.i.mydomain.com
ServerActive=zabbix.i.mydomain.com
sles15:~ #

YaST か systemctl コマンドで zabbix agent を有効化します。

YaST > System > Services Manager で、 Zabbix Agent を Active/Onboot に設定します。

zabbix5 で SUSE Linux15(SLE openSUSE Leap) を監視、snmp Agent, zabbix Agent の設定_a0056607_13331746.png

エラーがないか確認します。

sle15:~ # systemctl status zabbix-agent
● zabbix-agent.service - Zabbix Agent
Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: di>
Active: active (running) since Sun 2021-01-03 17:12:04 JST; 30s ago
Process: 12512 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCC>
Main PID: 12514 (zabbix_agentd)
Tasks: 6
CGroup: /system.slice/zabbix-agent.service
├─12514 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
├─12515 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
├─12516 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
├─12517 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
├─12518 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
└─12519 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]

Jan 03 17:12:04 opensuse15 systemd[1]: Starting Zabbix Agent...
Jan 03 17:12:04 opensuse15 systemd[1]: Started Zabbix Agent.

後は、サーバー側の設定で zabbix Agent と snmp agent で監視します。

ー まとめ

zabbix と SUSE Linux (SLE/openSUSE Leap) で監視ターゲット側の設定をまとめました。

openSUSE Leap は 15 以降、SUSE Linux Enterprise との互換性が高くなり共通点も多く、デスクトップ用途以外のサーバ用途でも安定しています。I/F をはじめとするルック&フィールも SLE と共通なので、ヘルプデスクやオペレータのトレーニングにも最適です。

openSUSE Leap は使いやすいディストリビューションになりました。中小規模環境でミッションクリティカルな用途以外で zabbix の様な用途で openSUSE Leap を使うのは一つの良い選択です。

ここにない内容は次の記事を参考にしてください。

Zabbix3 でSNMPデバイスを監視する

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ

Zabbix4.2 snmp監視 デバイスのグラフを表示させるまで

zabbix4.2 を zabbix5.0 アップデート openSUSE Leap 15.1

Zabbix 5.2 on openSUSE Leap 15.2 





by islandcenter | 2021-01-04 13:44 | SUSE | Comments(0)

 長い事 SUSE Linux をやっていると、 YaST GUI にあまりにも慣れすぎてしまって、すっかりキーボードをたたく事に億劫になってしまいます。Linux やってるエンジニアがキーボードにこだわるのはわかりますが、私は SUSE Linux 使う上ではマウスにこだわるヒトになってしまいました。

良くテレビドラマやニュースの資料映像なんかで、ブラインドタッチがやたらと早くて、マウスなんて全然つかってないじゃないか、という資料映像みたいなシーンを見ますが、私にはわかる。

「嘘だ、演技だ」

特に「ハケンの品格2」の篠原涼子のキーボード叩く演技は下手だったなぁ。ブラインドタッチになってない。ただ指がキーボードの上を撫ぜてるだけで「スーパー派遣」の品格がなかった。下手なビデオのオフィスシーンの方が演技している場合があるンですよ。

逆にマウスを使いこなしているシーンを見ると「演技っぽくなくリアル」に思えてくるものです。

それくらいいまの時代、マウスは重要です。

まぁ与太はそこまでにして

ー virt-manager GUI で KVM ゲストのライブマイグレーション

というのが今回のテーマです。

随分と昔に XEN 環境+ iSCSI NAS を使ったライブマイグレーションをやた事を思い出します。

iSCSI 上に仮想イメージを導入し、ついでに Live Migration してみる

時は移り変わり、まず XEN は見なくなったし SUSE でも XEN から KVM への移行ガイドを用意するくらい、仮想化と言えばすっかり KVM の時代になってしまいました。

かわいそうな Citrix ....

今回は SUSE Linux Enterprise 15.0 と openSUSE Leap 15.2(gnome) 上で KVM が稼働しているので、それぞれライブマイグレーションしてみました。virsh migrate --live .... コマンドではなく、 virt-manager、 GUI を使います。

※ SLE 側は gnome Desktop のみです。openSUSE Leap 側も gnome Desktop を使っています。

ー リモート virt-manager に接続

openSUSE Leap 15.2 側の X 端末から Virtual Machine Manager GUI. を起動して、別なハイパーバイザー(SLES15 KVM)側に接続します。

# virt-manager &

openSUSE より File > Add Connection から、SLES の KVM ハイパーバイザーにログインします。そうするとエラー。

KVM on SUSE15(SLE/openSUSE Leap) virt-manager でライブマイグレーション_a0056607_20463964.png

openssh-askpass パッケージが要求されます。

yast を見ると ssh-askpass は既にインストールされていますが、ssh-askpass-gnome はインストールされていないため、追加インストールします。

KVM on SUSE15(SLE/openSUSE Leap) virt-manager でライブマイグレーション_a0056607_20473094.png

openSUSE Leap 16.2 では標準リポジトリに openssh-askpass, openssh-askpass-gnome が標準で含まれているため、zypper か YaST でインストールするだけです。

KVM on SUSE15(SLE/openSUSE Leap) virt-manager でライブマイグレーション_a0056607_20483839.png

接続先のパスワードが要求されました。

リモートハイパーバイザーに接続できました。

KVM on SUSE15(SLE/openSUSE Leap) virt-manager でライブマイグレーション_a0056607_20485945.png


稼働中のVMをポイントして右ボタンから Migrate をします。

KVM on SUSE15(SLE/openSUSE Leap) virt-manager でライブマイグレーション_a0056607_20541056.png

今回はネットワーク上の共有ストレージ(iSCSI や NFS)を使っていない(単にイメージをSCP コピーしただけの手抜き)ので、エラーとなりました。Advanced Option の中に Allow unsafe のチェックボックスがあるのでこれをチェックして、強引にマイグレートしてみます。(敗因)

KVM on SUSE15(SLE/openSUSE Leap) virt-manager でライブマイグレーション_a0056607_20571842.png

無事、SLE のインスタンスを openSUSE Leap 側に移行出来ました。

KVM on SUSE15(SLE/openSUSE Leap) virt-manager でライブマイグレーション_a0056607_20582225.png

ー よくあるトラブル

よくあるトラブルとして、移行元、移行先のディレクトリ構造が違ったり、移行先に、仮想イメージがマウントしているインストールDVDメディアがないなどが原因で移行出来ないトラブルがあります。使わないハードウェアは外しておきます。VM のコールドブートが必要ですけど...

ー 頻繁に認証を求められる

リモートハイパーバイザーにアクセスすると、頻繁に root パスワードを求めてきました。原因/意味不明です。ちょっと実用的ではないですね。(敗因)

ー SLE の場合

SUSE Linux enterprise (SLES) 15 の場合、openssh-askpass, openssh-askpass-gnome は標準リポジトリに含まれないため、software.opensuse.org より1クリックインストールするか、expert Download にある指示に従って、リポジトリの追加、インストール
します。

KVM on SUSE15(SLE/openSUSE Leap) virt-manager でライブマイグレーション_a0056607_21003537.png



openssh-askpass-gnome

openssh-askpass

zypper addrepo https://download.opensuse.org/repositories/openSUSE:Leap:15.2:Update/standard/openSUSE:Leap:15.2:Update.repo
zypper refresh
zypper install openssh-askpass-gnome

zypper addrepo https://download.opensuse.org/repositories/openSUSE:Backports:SLE-15-SP3/standard/openSUSE:Backports:SLE-15-SP3.repo
zypper refresh
zypper install openssh-askpass

zypper でインストールできない場合は YaST のソフトウェア管理 (YaST Software Management) でインストールできました。

opensuse152:~ # rpm -qa openssh*
openssh-askpass-1.2.4.1-bp153.1.3.x86_64
openssh-askpass-gnome-7.6p1-7.13.x86_64
openssh-helpers-7.6p1-7.8.x86_64
openssh-7.6p1-7.8.x86_64
opensuse152:~ #

今度は openSUSE Leap に移動した、VM インスタンスを SLE 側に戻しました。

KVM on SUSE15(SLE/openSUSE Leap) virt-manager でライブマイグレーション_a0056607_21012912.png

よくあるトラブル

ー 移行先のメモリが足りない
 
 メモリアロケーションエラーになります。メインで使っているハイパーバイザーの稼働率が高く、8割程度でパツンパツンのところに、無理してマイグレートしないことです。不要不急のVMインスタンスをシャットダウンして、移行させるとうまく移行できます。

そもそもライブマイグレートは負荷の高い、ミッションクリティカルなサービスを移動させるのが本質的な目標なので、インスタンスを止めるのは本末転倒かもです。

ー 必ずネットワークの共有ディスクを使うこと、バックアップは重要

 今回は手抜きして、 QEMU のイメージと XML ファイルを SCP コピーして、マイグレートしましたが、できたできたと喜んでマイグレートしてたら、遂にブートローダーが壊れて起動できなくなりました。まぁ今回はテスト環境で、スレーブ用DNSサーバーだったので笑って済ませますが、本番環境がこの様な事では済まされません。

必ずバックアップを取って、共有ディスクからマイグレートします。

ー 異なる環境ではマイグレートできない

インスタンスのイメージがあるディレクトリなど環境は必ず揃えること。特に、インスタンスを作ったときのインストールDVDメディアは、仮想ハードウェアから削除しておくことです。

ー 2つのハードウェアの違いはあるか

 ライブマイグレーションの大きな課題としては、双方のハードウェアアキテクチャに大きな違いがあってはいけないことです。一度 XEN 時代にテストしたのですが、AMD アキテクチャから Intel マシンの移行は、コールド移行もできませんでした。同じ Intel 系でも、CPU世代が大きく違ったりする場合のライブマイグレーションがどの程度成功するかは未知数です。どれだけ環境が異なると移行できないかは経験を積むしかないでしょう。

また移行先のハイパバイザーが古かったりOSベンダーが異なると、成功の可能性は低そうです。

例えば、最新の XEON プロセッサ搭載サーバーから、数年前の古い Core i3 の古いデスクトップ応用PCへの移行がうまく行くとは思えません。コールドマイグレーションでさえ失敗しそうです。逆のケースではうまくいきそうなきがします。( ...そう思っているだけですが… )

いずれにせよ、いざと言う時にライブマイグレーションがおこなえるかどうか、システムを止められる機会に、計画的にテストしておく事が重要です。

ー まとめ

ライブマイグレーションは万能の機能ではありません。想定していなかった設定ミスで失敗したり、
起動できなくなるというトラブルもありました。個人的にはサービス停止が、10分許されるなら、イメージの別 HV へのコピー、サービス 再起動でいい。仮想化マイグレーションは、運用技術としては自己満足に陥りやすい危険性があります。

ただし、せっかくハイパーバイザー運用するつもりなら、キチンと iSCSI などの共有ストレージを作って2つ以上の HV 運用を検討すべきでしょう。いざという時に提供される手段だし、緊急時のオペレーションテスト、訓練も重要です。

また、「小>大」、「古>新」のマイグレーションは成功の可能性が高いのでしょうが、新しいサーバーから古いハイパーバイザーハードウェアへの移行はかなり不安があります。いずれにせよ行き当たりばったりのチャレンジは避けた方がよさそうです。

今回は、SUSE Linux15(SLE/openSUSE Leap) で GUI からライブマイグレーションをテストしてみました。実用性、可用性はギリギリ合格点。 実運用には Open stack などを検討すべきでしょう。

また、SLE ではなく openSUSE Leap 15.2 をつかってみた初めての KVM ですが、使用感は SLES とそれほど変わらないので、ミッションクリティカルではないシーンでは openSUSE Leap でも充分かなと感じました。








タグ:
by islandcenter | 2021-01-01 20:56 | SUSE | Comments(0)

openSUSE 15.2 でルータ(らしきもの)を作ってみました。

openSUSE Leap15.2 でルータを作ってみた_a0056607_13060411.jpg

そんなに資材がある訳ではないので、 SUSE Linux Enteprise (SLE15) で動いている KVM 仮想環境に、仮想ブリッジと仮想クライアント(openSUSE 15)を作り、仮想化された内部ルータ(openSUSE 15)で、仮想別セグメントのクライアントから、構内ネットワークとインターネットに繋がる、と言うのが目標です。

ちょっとややこしいので簡単な図

openSUSE Leap15.2 でルータを作ってみた_a0056607_11512216.png

動機は、ADSLに繋がっているルータの調子が悪く、Wifi の干渉が酷くて、無線を止めて有線化したかったのですが、Wifi ルータは安いのに有線ルータは、結構値が張ります。また、内部向けに DNS があるのですが、安い Wifi SOHO ルータは DHCP をオフにできず、Wifi ルータの DHCP が イントラ向けの DNSを自分自身に勝手にしてくれるものが多く、実に使い勝手が悪い。
という事で、安く有線ルータが出来ないかなという理由です。

Windows でも似たような事をやってみました。

Wifi から有線LANに変換接続するWindows10 Pro で簡易ルータ

実際の環境で作るとなると零細とは言えSOHOネットワーク全体にトラブルが出てしまうので、まずはテスト環境で、という事で、openSUSE 15.2 でルータを作ってみたわけです。

ー 仮想ブリッジを作る

KVM ホストとなる SUSE Enterprise 15 (SLES15) で yast > system > Network Settings から、Add で Device Type : "Bridge" を作ります。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11521120.png

この KVM ハイパーバイザーには、Amazon で 1000円で買った USB HUB 付 NIC が付いているのですが、今回はこれは使いません。空白。

"br2" という仮想ブリッジが作られます。設定はしません。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11525879.png

SLE のインストールはこちら

SLE15 Linux Enterprise sp2 (SLES15sp2) のインストール(動画付き)

openSUSE で KVM を使う場合はこちら

openSUSE Leap 15.1 で初めての KVM, 仮想化

次に、今回ルーターとなる openSUSE 15.2 を virt-manager から create します。1枚目の仮想 NIC は、ホストサーバーの実 NIC の1番目にバインドされているブリッジデバイスに、二枚目の NIC は br2 の仮想ブリッジにバインドします。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11571289.png
ここでは、openSUSE をインストールして、

openSUSE Leap 15.2 Install (動画付き)

YaST > System > Network Settings から

Eth0 には 192.168.1.254 で、本体のローカルネットワーク(192.168.1.0/24)にバインドします。
Eth1 の仮想ネットワーク側に 192.168.10.254 のアドレスをバインドします。 192.168.10.0/24 は KVM の中だけに存在する、仮想ネットワークです。

ルータとなるシステムのネットワーク設定はこんな感じです。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11592305.png
ついでに DNS もインストールします。

速攻 1分で DNS on SUSE12 by YaST

ー ip forward Enable

YaST > SYstem > Network Settings > の Router のタブはこの様になりました。実ポートが繋がっている側にはデフォルトゲートウェイが設定されています。

ルータ化するため、Enabele IPv4(6) Forwarding は両方ともチェックしておきました。

(早く IPv6 にも慣れないと...)

openSUSE Leap15.2 でルータを作ってみた_a0056607_11592305.png

YaST を終了させるとネットワークの設定は自動的に再起動されます。

フォワードが有効かどうかは次のプロセス ip_forward が "1" (Enable) になっていればOKです。/etc/sysctl.conf を設定する必要はSUSE Linux では必要ないようです。

router:~ # cat /proc/sys/net/ipv4/ip_forward
1
router:~ #

ip route で確認、

router:~ # ip route
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.254
192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.254


※ 従来の route コマンドは Depricated - 非推奨 - なので YaST > Software Manegement から明示的に Net-tools パッケージをインストールすると使えます 。

ー NAT とマスカレードの設定

ここからがハマりどころでした。結論としては、NATとマスカレードを有効にしろという事です。次のコマンドを実行したら、内側のネットワークから、本線とインターネットに通信ができる様になりました。ネットワークを変換して仮面舞踏会に参加させます。

ただし、SOHO 本線側からは、デフォルトゲートウェイが違うため通信はできません。

router:~ # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

ネットワークサービスを再起動します。

router:~ # systemctl restart network

永続的に設定するためには、ファイアウォールの設定が必要か、起動時に iptables コマンドを実行させる方法を探す必要があります。(挫折)

opensuse152desktop:~ # ip a | grep 192
inet 192.168.10.20/24 brd 192.168.10.255 scope global eth0
opensuse152desktop:~ #
opensuse152desktop:~ # ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=5 ttl=111 time=32.2 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=111 time=31.1 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=111 time=31.4 ms
^C
--- 8.8.8.8 ping statistics ---
7 packets transmitted, 3 received, 57% packet loss, time 6097ms
rtt min/avg/max/mdev = 31.157/31.620/32.294/0.508 ms


ー より深く設定するには firewall-config を使う

具体的には firewall-config という GUI アプレットをインストールして設定するようです。openSUSE 15.2/SLES15 のリポジトリにあるので YaST からインストールできます。

openSUSE Leap15.2 でルータを作ってみた_a0056607_12005594.png

第14章 マスカレードとファイアウオール

fire-wall-config アプレットを起動します。

router:~ # firewall-config &

で起動できます。 firewalld が Active/Boot Enable の場合でないと、起動できません。YaST > System > Service Management メニューから firewalld を有効にしておきます。

アプレットのUIはこんな感じです。

openSUSE Leap15.2 でルータを作ってみた_a0056607_12012822.png

ー まとめ

とりあえず目標とする事はできました。うまく設計すれば、仮想環境だけで物理ポートが2つあれば、DMZ を含んだインターネットとのバウンダリシステムを作る事ができます。今時は SaaS でメールやウェブページを運用するのが一般的なのでしょうが、例えば DNS や DHCP、 認証/パススルー・プロクシのようなコンテンツキャッシュやコンテンツフィルタリングなど、オフィスのバウンダリ・エッジで必要とされる機能は数多くあります。これらを一つの仮想化パッケージとして運用するのも一つの手段です。

何しろ余計な UPS や HUB、ケーブルが必要なくて実にスッキリします。

あいにく、私はネットワークシステムについては不勉強です。でもファイアウォールの設計やテスト、小規模な開発環境を構築するには、なかなか便利な経験でした。

次の目標は firewall-config ツールを使いこなして、Fire Wall の勉強です。






by islandcenter | 2020-12-16 12:01 | SUSE | Comments(0)

色々不都合がありまして、実家にUターンしてからというもの通信事情の悪さに辟易しています。

古い農家の家の中に、有線LANケーブルを這わせて物理ルータで家族と仕事場のセグメントを分ける訳に行かず、できるだけ家族の使うネットワークと仕事用のネットワークを干渉させたくない。Wifi 使うしか方法がないか .....

Wifi から有線LANに変換接続するWindows10 Pro で簡易ルータ:別セグメント接続_a0056607_14322404.jpg

という事で。

今は、みんなでスマートフォンやタブレットを使うため Wifi ルータには凄い負荷がかかっているわけですね。しかも仕事用のテスト環境とは、IPの体系が違います。この環境は弄りたくない。Wifi ルータを2台使うと、ネットワークが干渉しあうのか、家人がクレーム入れてきました。

従来の Wifi 環境に手を加えたくない。

そこで、Wifi ルータから、Windows10 Pro ノートの Wifi で受けた通信を、ノートPCの有線側にLANにルーティングさせてみてはどうかという事なんですね。

だいたいこんな感じになればいい。

WAN --> [Wifi ルータやスマートフォン192.168.11.xx] --> [Windows10 Wifi --> RJ45] --> (有線LAN:Hub:192.168.1.xx) --> [サーバー(Linux)群]

あるんじゃないですか、無線 Wifi 環境しか使えない環境で有線LAN機器機器を使いたいってケース。

例えば物理的に閉塞したネットワークでインターネットに繋がっていない環境に RJ45 ポートと Wifi が使えるノート PC を持ち込んで、一時的にスマートフォンのテザリングでインターネットにつないで、パッチをダウンロードしたい、などのケースがあると思います。

逆に、有線環境しかない萎びたホテルの狭い一室で、ホテル用 Wifi 変換アダプタを忘れて、有線しかなくタブレットしか使えない場合なんかにも応用が利きそうです。

-参考にした記事

Windowsのレジストリを設定してIPルーティングを有効にする(WindowsマシンをIPルーターにする)

Windows Server をルータにする2つの方法

WindowsマシンでIPルーティングをする

パソコンをWi-Fiルーター化! 意外と知らないWindows10の最新ワザ!

ー レジストリの操作

次のレジストリを操作して、ルーティングを有効にします。この後、再起動が必要です。

C:\ > regedit

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
IPEnableRouter
Dword:1 (Enable に)

Wifi から有線LANに変換接続するWindows10 Pro で簡易ルータ:別セグメント接続_a0056607_14335174.jpg

再起動した後 > ipconfig /all を実行して、"IP ルーティング有効"が "Yes" になっていればとりあえず成功です。

Wifi から有線LANに変換接続するWindows10 Pro で簡易ルータ:別セグメント接続_a0056607_14345259.jpg

ー サービスの有効化

私の環境ではレジストリの設定だけではうまく動かず、サービスの起動を行いました。

エクスプローラの「コンピュータ」を右クリックして「管理」を立ち上げます。「サービス」の中にある ”Routing and Remote Access” を「開始」し、自動起動を有効化します。

Wifi から有線LANに変換接続するWindows10 Pro で簡易ルータ:別セグメント接続_a0056607_14351453.jpg

ー Wifi の共有

エクスプローラから「ネットワーク」右ボタンでプロパティを開き、「ネットワーク共有センター」を開きます。
Wifi が「インターネット」に繋がっている状態から、 Wifi のプロパティ > 「共有タブ」で Wifi と「イーサネット」を共有します。

ついでに、 Wifi 側の IP アドレスも大抵は DHCP で変化するため、話がややこしくならない様に、Wifi は固定アドレスにしておきます。ここでは、 Wifi ルータの DHCP がリースするのが 192.168.11.2 ~ 64 なので、この範囲を外れた 192.168.11.199 に割り当てています。

Wifi から有線LANに変換接続するWindows10 Pro で簡易ルータ:別セグメント接続_a0056607_14353624.jpg

この時、RJ45 側のポートアドレスが 192.168.137.1 に強制的に変更されるため、これでは LAN 側からは認識されません。「イーサネット」側のポートアドレスを、閉塞したネットワークのデフォルトゲートウェイのアドレス 192.168.1.1 に強引に変更してみました。

Wifi から有線LANに変換接続するWindows10 Pro で簡易ルータ:別セグメント接続_a0056607_09223120.jpg

勿論、このローカルエリアLANに、他にルータがない事が前提です。あるいは、現行のデフォルトルータはケーブルを抜いておきます。つまり、LAN内のデフォルトゲートウェイを、このPCのイーサネットアドレスに変更する必要がある、という事です。

ウチの環境では、今までのルータの置き換えなので Default Gateway アドレス 192.168.1.1 に設定しました。

Wifi から有線LANに変換接続するWindows10 Pro で簡易ルータ:別セグメント接続_a0056607_14360162.jpg

これで、LAN 内のコンピュータ(今回は SUSE Linux 15.1)から、近い順に Ping 疎通確認します。ルータ代わりの PC の LAN ポート > PC 側の Wifi ポート > WIfi ルータ > Google などの一般的なインターネットサービスで名前解決できるか? を順を追って試してみます。

suse151:~ # ping 192.168.1.1 <-- LAN 側ポート
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=128 time=0.303 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=128 time=0.664 ms
^C
--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1028ms
rtt min/avg/max/mdev = 0.303/0.483/0.664/0.181 ms
suse151:~ #

suse151:~ # ping 192.168.11.199 <- Wifi 側ポート
PING 192.168.11.199 (192.168.11.199) 56(84) bytes of data.
64 bytes from 192.168.11.199: icmp_seq=1 ttl=127 time=0.473 ms
64 bytes from 192.168.11.199: icmp_seq=2 ttl=127 time=0.927 ms
^C
--- 192.168.11.199 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 0.473/0.700/0.927/0.227 ms

suse151:~ # ping 192.168.11.1 <-- Wifi ルータ(ルーティングしている)
PING 192.168.11.1 (192.168.11.1) 56(84) bytes of data.
64 bytes from 192.168.11.1: icmp_seq=1 ttl=63 time=1.30 ms
64 bytes from 192.168.11.1: icmp_seq=2 ttl=63 time=1.54 ms
^C
--- 192.168.11.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.306/1.424/1.543/0.124 ms

suse151:~ # ping google.com <-- DNS は機能している様だ
PING google.com (216.58.199.238) 56(84) bytes of data.
64 bytes from kix05s02-in-f238.1e100.net (216.58.199.238): icmp_seq=1 ttl=114 time=61.5 ms
64 bytes from kix05s02-in-f238.1e100.net (216.58.199.238): icmp_seq=2 ttl=114 time=57.8 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 57.891/59.700/61.509/1.809 ms
suse151:~ #

どうやらうまく行った様です。


ー ハマりどころ

一応、この手順でうまく動いたのですが、再起動したり、他を色々弄ると全く動かない状態に陥りました。ずっぽりハマった沼から抜け出すため、次のアクションをして再設定したところ、再び安定して動いているようです。

ー Hyper-V は無効化しておいた。

Hyper-V や WSL2 などのサービスが動いていても、うまく行ったケースがありましたが、仮想ブリッジを使うので、話がややこしくならない様、一旦無効化して、再起動してみました。

ー ネットワークアダプタのドライバをアンインストール

 ぐちゃぐちゃして話がややこしくなり、原因不明。ネットワークアダプタのドライバは、全て削除して再起動しました。これでネットワーク設定がクリアになるので、手順通りに動かしてみると、うまく動きました。


これは本来の姿とはかけ離れているのですが、これで一時的な簡易ルータの出来上がりです。実際にはルーター化したのは Windows のノートブックなので、持ち出したら、ルータがなくなることになります。

また、寝ている間にサスペンドしてしまうので、こういった対策も必要です。実用的だけど一時的な方法です。

あくまでも緊急事態用で、継続して使うには不向きです。無線 Wifi 通信は手軽ですが、長期我慢して使えるものではありません。抜本的な対策は必要です。






by islandcenter | 2020-11-30 14:33 | Windows | Comments(0)

訳あって、只今 macosがメインマシンとなっておりまして.....

mac の terminal から、SUSE Linux の yast2 GUI を使うにはどうすればいいのかなと....


まず、macOS には root という概念がないのでterminal から ssh するときは

$ ssh my_host_ip -l root

とすること。X11 の転送を許可するため -X か -Y (Upper Case Sensitive) オプションをつける事。

manページ — SSH

>>>>>
-X
X11 の転送を許可します。 これは設定ファイルによって、ホストごとに指定することもできます。
X11 の転送には注意が必要です。 リモートホスト上で (そのユーザの X 認証のための) ファイルアクセス権限を 無視できてしまうユーザがいる場合は、転送された接続を介してローカル側の X11 ディスプレイにアクセスできてしまうことになります。 すると攻撃側はキーストロークを盗み見るなどの行為が可能になってしまうかも しれません。

-x
X11 の転送を禁止します。
-Y
信用された X11 の転送を許可します。
<<<<<

という事で

macmini:~ knakaj$ ssh opensuse -Y -l root
Password: ********
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Sat Sep 26 14:54:39 2020 from 192.168.1.23
opensuse:~ # nautilus &
[1] 32090
opensuse:~ # libGL error: failed to load driver: swrast
Nautilus-Shae-Message: Called "net usershare info" but it failed: 'net usershare' returned error 255: net usershare: usershares are currently disabled


opensuse:~ # yast2 &
[2] 32219
opensuse:~ # libGL error: failed to load driver: swrast

opensuse:~ # firefox &
[3] 32256
opensuse:~ #
macOS でターミナルからopenSUSEにSSH でログインしてX GUIを使う_a0056607_16271881.jpg
どーん!

という事です。どうもWindows のmobaXterm に慣れていると、急遽忘れてしまうんですね。





タグ:
by islandcenter | 2020-09-27 16:44 | SUSE | Comments(0)

postfix 送信キューの確認と削除


- 送信キューの確認 -


mail2:~ # postqueue -p
-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
C16E980855B      276 Wed Aug 19 13:34:44  dummy@islandcenter.jp
      (connect to mail.islandcenter.jp[153.125.134.9]:25: Connection timed out)
                                         knakaj@mail.i.islandcenter.jp

8713D80855C     2589 Wed Aug 19 15:31:00  MAILER-DAEMON
      (connect to mail.islandcenter.jp[153.125.134.9]:25: Connection timed out)
                                         dummy@islandcenter.jp

-- 2 Kbytes in 2 Requests.


- 送信キューディレクトリ -


mail2:~ # ls /var/spool/postfix/deferred/ -al
total 0
drwx------  5 postfix root     33 Aug 20 13:50 .
drwxr-xr-x 16 root    root    201 Aug  7 02:12 ..
drwx------  2 postfix postfix  25 Aug 20 13:50 2
drwx------  2 postfix postfix   6 Aug 20 10:15 8
drwx------  2 postfix postfix   6 Aug 20 10:15 C
mail2:~ # ls /var/spool/postfix/deferred/2 -al
total 4
drwx------ 2 postfix postfix  25 Aug 20 13:50 .
drwx------ 5 postfix root     33 Aug 20 13:50 ..
-rwx------ 1 postfix postfix 925 Aug 20  2020 24D1680855B




- 全て削除 -


mail2:~ # postsuper -d ALL
postsuper: Deleted: 1 message
mail2:~ #
mail2:~ # cat /var/spool/postfix/deferred/2/24D1680855B
cat: /var/spool/postfix/deferred/2/24D1680855B: No such file or directory

mail2:~ # postqueue -p
Mail queue is empty
mail2:~ #





タグ:
by islandcenter | 2020-08-20 14:09 | Linux | Comments(0)

何かと引きこもりになりがちな今日この頃です。テーマを決めないと次の目標が見つからないので、電子メールのシステムを勉強してみる事にしました。

電子メールシステムは難しい? openSUSE Leap 15.2 でメールサーバ

- まずは Telnet でメールを送る -

これまで、馬鹿の一つ覚えの様に GroupWise 一辺倒だったのですが、これではイカンと一念発起です。

- openSUSE Leap 15.2 では Postfix はデフォルト -

openSUSE Leap 15.2 では、デフォルトで Postfix MTA がインストールされています。OSインストールの際にDNSと Hostname を設定したので、SUSE Linux では、自動的に、 /etc/postfix/main.cf の hostname 変数には FQDN がセットされています。

SUSE のデフォルトです。

mail:~ # cat /etc/postfix/main.cf | grep islandcenter
myhostname = mail.i.islandcenter.jp
mail:~ #

まずはここから何を行えるかを見てみましょう。

- telnet のインストール -

Postfix はじめ MTA を学ぶためには、一番基礎となるのが telnet を使った、メールの送信です。telnet で基本的な操作をして、メール(MTA) のプロトコル学んでください、という事ですね。

telnet は deprecated (非推奨) なプログラムなので、手動でインストールします。

yast > Software management > "telnet" を検索してスペースキーでチェックしてインストールできます。

メールサーバー入門、とりあえず openSUSE Leap 15.2 初期設定の postfix から telnet してみる_a0056607_12110468.png

- telnet でメールを送る -

次に、root に telnet でテストメールを送ってみます。太字は実際タイプした文字です。


knakaj@mail:~> telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 mail.i.islandcenter.jp ESMTP
ehlo mail.i.islandcenter.jp
250-mail.i.islandcenter.jp
250-PIPELINING
250-SIZE
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING
mail from: <knakaj@mail.i.islandcenter.jp>
250 2.1.0 Ok
rcpt to: <root@mail.i.islandcenter.jp>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: Hello Root!

Hello Im your user...

.
250 2.0.0 Ok: queued as 064D8808541
quit
221 2.0.0 Bye
Connection closed by foreign host.
knakaj@mail:~> 

- mail コマンドでメールを読む -

デフォルト(無指定状態)では postfix は mbox 形式です。



mail:~ #
You have mail in /var/spool/mail/root
mail:~ #
mail:~ # ls /var/spool/mail/ -al
total 4
drwxrwxrwt  2 root root  18 Aug  7 17:06 .
drwxr-xr-x 11 root root 132 Aug  7 10:59 ..
-rw-------  1 root root 588 Aug  7 17:06 root
mail:~ # mail
Heirloom mailx version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 knakaj@mail.i.isl Fri Aug  7 17:06   15/588   Hello Root!
? 1
Message  1:
From knakaj@mail.i.islandcenter.jp  Fri Aug  7 17:06:08 2020
X-Original-To: root@mail.i.islandcenter.jp
Delivered-To: root@mail.i.islandcenter.jp
Subject: Hello Root!
Date: Fri,  7 Aug 2020 17:03:40 +0900 (JST)
From: knakaj@mail.i.islandcenter.jp

Hello Im your user...


? quit
Saved 1 message in mbox
mail:~ # ls mbox -al
-rw------- 1 root root 599 Aug  7 17:07 mbox
mail:~ #


メールを読み終わると、/etc/spool/mail にあったメールは ~: mbox ファイルに本文がマージされ移動します。

- メールの保存形式を Maildir に変える -

- Maildir に変更 -

- mbox と Maildir との違い

mbox は、旧来のメール保管方式で、私が初めて触った HP-UX もこの方式でした。受信したメールは SUSE Linux では /var/spool/mail/User_name ファイルにスプールされ、mail コマンドで読むと /home/User_Home/mbox ファイルに切り貼りされます。

後方互換性は良いのですが、単一のテキストファイルをロックして、該当のメールを切り貼りするため、スプールや受信メールが破損しやすいという欠点があります。

一方、Maildir 方式は /home/User_Home/Maildir の下に tmp, new, cur, というディレクトリが作られ、メール本文はメール毎に別ファイルとして tmp -> new -> cur のそれぞれのディレクトリにスプール -> 未読 -> 既読、とステータスを変更しながらハードリンクを切り替える方式です。一見複雑ですが、動作が単純なので、現在はこの方法が主流の様です。

mail コマンドは、デフォルトで mbox を使いますが、openSUSE Leap 15.2 はじめ最新の Linux の mail コマンドでは

localhost :~ > mail -f ./Maildir

を実行することで従来の mail コマンドと同じ処理をしてくれるわけです。

/etc/postfix/main.cf の次の一行をコメントアウトして postfix を再起動します。

mail:~ # cat /etc/postfix/main.cf | grep home_mailbox
# The home_mailbox parameter specifies the optional pathname of a
#home_mailbox = Mailbox
home_mailbox = Maildir/
mail:~ #

mail:~ # postfix check
mail:~ #
mail:~ # systemctl stop  postfix.service
mail:~ # systemctl start postfix.service
mail:~ #

Telnet でメールを送ってみた。

mail:~ # ls -l ./Maildir/
total 0
drwx------ 1 root root  0 Aug  8 14:48 cur
drwx------ 1 root root 62 Aug  8 14:48 new
drwx------ 1 root root  0 Aug  8 14:48 tmp
mail:~ #
mail:~ # mail -f ./Maildir/
Heirloom mailx version 12.5 7/5/10.  Type ? for help.
"./Maildir/": 1 message 1 new
>N  1 knakaj@mail.i.isl Sat Aug  8 14:45   15/546
? 1
Message  1:
From knakaj@mail.i.islandcenter.jp Sat Aug  8 14:45:48 2020
X-Original-To: root@mail.i.islandcenter.jp
Delivered-To: root@mail.i.islandcenter.jp
subjecct: to root home_dir ...!
Date: Sat,  8 Aug 2020 14:45:48 +0900 (JST)
From: knakaj@mail.i.islandcenter.jp

open your mail dir !

Thnks....

? q
"./Maildir/" updated.
mail:~ #

一応、デフォルトの mbox から ~/Maildir/ 形式に変わったようです。





isLandcenter.jp










by islandcenter | 2020-08-14 12:11 | Linux | Comments(0)

なぜ、電子メールシステムは難しく感じるか

- ついに Postfix に手を出す -

今まで電子メールと言えば Gmail か Novell GroupWise と、あとはレンタルドメインのメールシステムしか扱ってこなかった私が Postfix に手が出なかった理由はいくつかあります。やっぱり

「電子メールは難しい」

という先入観でした。Psttfix の勉強を始めて改めてその難しさに気が付きました。




- どこまで何を目標とするか -

ITエンジニアやプログラマの初心者がまず陥る問題点として、「何をどこまでヤルか」を自己定義できない事があります。いわゆる「要件定義」という奴なのでしょうが、ここでぶつかると、研究に必要な機材、ソフトウェア、教科本の選択など、ありとあらゆる問題点にぶち当たります。つまり、根本的に技術者としてのセンスがない。

本来、アプリケーション向けの技術者ではないので、手持ちの機材、環境でできる事、できないから調達しなければならないサービスや機材、ソフトウェアも検討しなければなりません。

私のテスト環境は、一般的な DSL の通信回線で、ほぼ固定IPで、ドメインの逆引きもできますが、DNSの MX レコードがないため、たとえ自宅サーバーからメールの送受信ができる様にしたいと思っても、かなり困難で、若干の運用費用が掛かります。そもそも自宅環境から、ポート開放して公開する事も難しい。まだ CGN ではなくシェアド IP じゃないのですが MX レコードを使える無料DNSってなかなか見つからない。


そこで、自ドメイン名でメールの受信は目標から外すことにします。最終的には、自メールサーバー経由でインターネット宛にメールが転送でき、レンタルサーバーの受信メールを、自メールサーバーに転送できれば良いのですが、道のりは遠そうです。

最終的な目標は、自ドメインのレンタルサーバースペースに Postfix と Dovecot を導入して運用することです。


- DNS, MTA, POP/IMAP, MUA, ファイアウォール, 何が原因だ -

電子メールのシステムを構築するうえで面倒なのは、DNS とMTAとの関係、MTA と POP/IMAP の関係、POP/IMAP とメーラの相性問題、ファイアウォール、認証システム、メールリレーなどのセキュリティ全般を一つ纏めて面倒を見なければならない事。どこか一つに問題があれば、メールが読めない、送れない、重大なセキュリティホールになり易い。こんな面倒な問題になってしまいます。

(正直言って GroupWise の Internet Agent で止めときゃ良かった)

- クローズした環境でのトレーニングが難しい -

もし、一つの企業なり組織なりの内部のネットワーク内でメールの読み書きができればいいのであれば、さほど苦労はいらないでしょう。

しかし、電子メールは社外とのやり取りが重要なので、こちらから送っても無効が拒否してしまっては役に立ちません。逆もありえまず。しかも普及しきった電子メールは、社会のインフラであり、わずかな時間のサービス停止も、エンドユーザは好みません。

つまりリハーサルなしの一発勝負なんですね。これも電子メールに中々手が出ない理由の一つです。


- 用途、目的により設定が異なる -

つまり要件によって設定を検討しなければならないという事。仮想化システムや Web LAMP, Zabbix, Samba など一発設定してしまえるシステムと違い、メールのシステムは、目標となる要件定義から設定までやる事が幅広すぎます。

そして、SUSE LInux お得意の YaST ツールが全く役に立たない。YaST で GUI 設定ができないのが Linux のメール構築なのです。 GroupWise の GUI 設定は有難かった。

- 伝統的で資料は豊富だが情報が古い -

インターネットの歴史は電子メールとともにあり、インターネットサービスの中では長い歴史を持っています。

それだけに、資料は豊富ですが、一概に書籍では古い資料が多く、最新の情報を求めると、どうしても断片的な情報に偏りやすい傾向にあります。古い「教科書」を頼りにすれば、セキュリティ上の問題が軽くかたられたり、最新の情報を求めると、分断された情報の破片だけが手に入ります。

横断的に「実用的」な資料が少ない所が困った所です。


- 電子メールは SaaS に一番適したシステムで触れる機会がない  -

電子メールは、クラウドサービスの一部として SaaS に最も適したサービスです。インターネット普及期の1990年代中頃のように、構内ネットワークの重要なコンポーネントの座を譲り、いまや「メールサービスを借りる」ことが時代の流れなのですね。

そういった中では「電子メールシステムのブラックボックス化」が進行しています。一般の社内SEが管理するより、SaaSサービスに一括「お任せ」した方がコストは低い。

--

それでも ISP/ASP のサービスでは電子メールは重要なコンポーネントですし、SaaS に頼らない、あるいは頼れない場合は、電子メールシステムのスクラッチアンドビルドとメンテナンスは欠かせません。

ということで、少なくとも「電子メールのしくみ」というものを勉強するため、Postfix/Devecot に挑戦してみます。

メールサーバー入門、とりあえず openSUSE Leap 15.2 初期設定の postfix から telnet してみる



by islandcenter | 2020-08-12 12:15 | Linux | Comments(0)