1X認証のポート設定について
ひとつ前の記事では各種設定をまとめましたが、今回はポートについてまとめました。
https://m5stack-build.hatenablog.com/entry/2023/08/17/112212
ポートの詳細設定について
- ポート制御
各ポートの状態を設定する。1X認証を使用するときは「自動」に設定する。通常のポートとしてしようするなら「認証済み」に設定する。
- MAB
???
- ゲストVLAN ID
???
- ゲストVLAN期間
???
- 未認証のVLAN ID
???
- 定期的な再認証
「有効」の場合は再認証期間で設定した時間が経過するとオーセンティケーターから再認証のパケットが送られてくる。
- 再認証期間
再認証までの時間
- アイドル期間
アイドル状態の時間。この時間の間はサプリカント、サーバーからの要求は受け付けない。
- EAPの再送信
EAP送信で応答が返ってこなかったときに再送するまでの時間
- 最大EAP要求数
EAPの再送最大回数
- サーバータイムアウト
サーバーの応答タイムアウト時間
- 制御方向
「両方」固定
- プロトコルバージョン
「バージョン1」固定
- PAE機能
「オーセンティケーター」固定
- オーセンティケーターPAEの状態
ここは状態によって変化
- バックエンドの状態
ここは状態によって変化
ポートのモニタリングについて
各ポートの送受信したEPAOLパケットの情報をモニタリングできます。
1X認証のオーセンティケーターについて
ひとつ前の記事で1X認証について簡単にまとめました。(備忘録的な)
https://m5stack-build.hatenablog.com/entry/2023/08/15/112023
スイッチハブについて
オーセンティケーターのスイッチハブとしてお手頃なのがNETGEARのGS108Tです。
他にもありますが意外とお値段するんですね。1X認証機能が付いているので高価なんでしょうか。。。
1X認証について
備忘録的な。。。
構成要素について
「サプリカント - オーセンティケーター - RADIUSサーバー」の3要素から構成されている。
サプリカント:クライアントの端末。PCなど。
オーセンティケーター:クライアントとサーバの仲介役。
RADIUS:認証サーバー。
「サプリカント - オーセンティケーター」の通信はEAPOLパケット、「オーセンティケーター - RADIUSサーバ」の通信はRADIUSパケットでやり取りを行う。
サプリカントについて
Windowsには標準で1X認証の機能が備わっています。
ネットに機能を有効にする手順がわかりやすく載ってました。
nwengblog.com
RADIUSサーバについて
認証処理を行うサーバです。
FreeRADIUSというオープンソースソフトウェアのRADIUSサーバもあります。
freeradius.org
オーセンティケーターについて
クライアントとサーバの仲介役です。
スイッチハブがオーセンティケーターの役割となります。
オーセンティケーターについてはあまり情報がなかったので実際に触ってまとめようと思います。
Ubuntu化
windowsのパソコンが1台余ったのでUbuntu化。
これでLinux系のソフトが動かせそうだ。作業が捗る。
忘れないように。
color-code.net
GIFの表示できなかった
できなかったあああああああああああああ
やり方教えて欲しい。。。
GIFって表示できるの?
またまた久しぶりです。
最近は全然組込んでないです。。。
今回は急にGIFって表示できないかなと思ってやってみようと思いました。
なんかかわいいサイト見つけたのでこのGIFを表示してみようと思います。
今日はここまでです。。。
SSLメールでメール受信してみた
前回まではメール送信でしたが、今度はメール受信をしてみたいと思います。
ベースにするのはこちらのMailer.hを受信用に書き換えました。
www.kerislab.jp
サンプルコード(Mailer_pop.h)
#pragma once #include <ssl_client.h> #include <WiFiClientSecure.h> #include <base64.h> class Mailer_pop { public: Mailer_pop(const char* username, const char* password, const int pop_port, const char* pop_hostname): username(username), password(password), pop_port(pop_port), pop_hostname(pop_hostname) {} bool receive(void) { WiFiClientSecure client; String root_ca; /* ファイルオープン */ File datFile = SD.open("/set/yahoo_root.cer"); /* 証明書を読みだす */ if( datFile ) { M5.Lcd.println("Root File open successful"); Serial.println("Root File open successful"); /* サイズ分ループ */ while( datFile.available() ) { root_ca = root_ca + datFile.readString(); } /* ファイルクローズ */ datFile.close(); } else { M5.Lcd.println("Root File open error"); } client.setCACert(root_ca.c_str()); /* 証明書の設定 */ M5.Lcd.printf("Connecting to %s\n", pop_hostname); Serial.printf("Connecting to %s\n", pop_hostname); if (!client.connect(pop_hostname, pop_port)) { Serial.println("Could not connect to mail server"); return false; } if (!readResponse(client, "+OK")) { Serial.println("Connection Error"); return false; } client.println("USER " + String(username)); if (!readResponse(client, "+OK")) { Serial.println("USER error"); return false; } client.println("PASS " + String(password)); if (!readResponse(client, "+OK")) { Serial.println("PASS error"); return false; } client.println("STAT"); if (!readResponse(client, "+OK")) { Serial.println("STAT failed"); return false; } // client.println("LIST"); // if (!readResponse(client, "+OK")) { // Serial.println("LIST failed1"); // return false; // } client.println("RETR 1"); if (!readResponse(client, "+OK")) { Serial.println("RETR failed2"); return false; } client.println("QUIT"); if (!readResponse(client, "+OK")) { Serial.println("QUIT failed"); return false; } M5.Lcd.println("Received E-mail Successful"); Serial.println("Received E-mail Successful"); return true; } private: const char* username; const char* password; const int pop_port; const char* pop_hostname; bool readResponse(WiFiClientSecure &client, const String &target, uint32_t timeout_ms = 10000) { uint32_t timeStamp = millis(); while (1) { if (client.available()) break; if (millis() > timeStamp + timeout_ms) { Serial.println("POP Response TIMEOUT!"); return false; } delay(1); } // String res = client.readStringUntil('\n'); String res = client.readString(); res.trim(); Serial.printf("Response: %s\n", res.c_str()); if (target != "" && res.indexOf(target) == -1) return false; return true; } };
POP形式で受信します。受信するメールはメールサーバで最古のものになります。
ここから削除したり、最新のメールを受信したりしていきたいと思います。