2019.08.26なお、ここで掲載している手法ですが、あくまで私の目指すゴールは「ログイン時のアクセスを通常のIPoEから固定IP経路へシフトさせ、二要素認証をバイパスする」というものであり、Enterprise方向に対するローカルブレイクアウトを実現するには行う処理が足りません。O365から受信する経路にはIPアドレス以外に、URLもあり、そこに対するケアが出来ないと本当の意味でクラウド経路をインターネットへ寄り軽い経路に回すローカルブレイクアウトは実現できません。CFWなどのようなプロキシアプライアンス機能が必要になります。実機に設定を適用する。Firewallを使ってこんなことをしました。要は、Interlink-PPPoE回線やHomenocの回線は、サーバが主に使用しているということもあり、クライアントで扱う際に結構帯域が狭くなってるのです。Misskeyの受信を受け持つInterlink-PPPoEは壊滅的で、下り速度がマジに遅いです。Firewallを使用しまして、回線を固定しつつセキュリティを保つことが出来たのであります。・・・が面倒なことが起きました。SignOnが効かんのです。Portalへのアクセスで常に二要素認証を求められるのです。原因はそう、IPoE回線が変動IPアドレスだから。故に、自宅のクライアントセグメントからアクセスしようとすると大体IPが都度都度変わります。事あるごとに認証をせんとイカン。そんなあなたにローカルブレイクアウトローカルブレイクアウトというのは、クラウドを使用する時のインターネット負荷を軽減する手法の一つです。インターネットブレイクアウトともいいます。-「インターネットブレイクアウト(ローカルブレイクアウト)」は特定の通信だけを振り分けてインターネットにつなぐネットワーク構成のことで、近年は関連サービスが増加しています。その機能がなぜ今求められているのか?知識がある人から小学生向けまで三段階で解説します。Azureへの経路を固定IP発信、今回の場合はHomenoc回線へ移し、それ以外をIPoE回線に移せば良いのです。本来このブレイクアウト処理はプロキシ製品で頑張るケースが多いです。Proxyが得意な代物って意外と難しいので、おつむの弱い私にも扱えるものはないか・・・と考えたところ、何も完璧にやる必要はなくて、とりあえずIPv4経路だけでも渡したらだいぶいい感じで行けるんじゃないか?ということに気づきました。これしかない!・・・・そう思って1週間が経過しちゃいました。週末にやっと手が出せた・・・まずやること:どうやって経路を取るか?さて、Microsoftサービス系の経路ってどういうふうに取れば良いのでしょう?BGPとかでとるのか?というとそうじゃないです。実はMicrosoftにはこんなサービスがあります。https://docs.microsoft.com/ja-jp/office365/enterprise/office-365-ip-web-serviceこれは何かというと、RESTAPIを使ってMicrosoftがOffice365向けに公開しているネットワークセグメントやURLの情報です。応答はJSON形式で返ってきます。昔はXML形式でこうした情報を配信していたのですが、昨年の秋頃にこれが新しくなり、より情報が取りやすくなりました。言う形で配信してくれるのです。今回作成したスクリプトは、このサイトの下の方にあるサンプルスクリプト処理を一部流用・応用しています。FirewallのAPI周りを調査するのですが、なんとまぁびっくりするぐらいAPIの情報がつかめない。APIだけというなかなかの難易度・・・・ここ最近体調崩しがちな私には少し無理ゲーと判断して、こちらは断念しています。しようかなぁ・・・と頭抱えていたら、「あ、これならできるわ」というのが見つかると。C3750GからOSPFで配ればええじゃないかつまりこうだ。何も直接対象機器を操作しようとしなくとも、OSPFで伝われば処理できるのでは。IOSであれば、Python3+napalmで行けるじゃないかと考え、この構成で挑むことにしました。処理構成としては以下のとおりです。こちらはほぼMicrosoftのサンプルスクリプトを使用しました。json.loads(response.read().decode())この辺りは関数として作ります。サンプルスクリプトではendpointsメソッドとversionsメソッドの利用しか想定しておらず、changesメソッドを使うとURLの構造が少し変わるので、今回は処理を追加しています。引数nowVersionの追加と、methodName変数をみてchangesメソッドを使う場合は処理を分けるという形にしています。json.loads(response.read().decode())」によって、レスポンスとして返ってきたJSONデータをDictionary型の値として呼び出し元関数へ返します。latestVersion)実際の処理としては上記のような使い方をします。これによって、JSONデータはデシリアライズされて、DictionaryデータとしてendpointSets変数へ格納されます。データの分解で、これを希望する形にデータを取り出し、追加ルートと削除ルートのDictionaryデータとして返しています。ip4s])今回、JSONデータはaddキーの部分が階層化されていて、単純にIPアドレスが取り出せないようになっています。そこで、ips変数を取り出す際のデータ表記がaddとips2階層ぶん書いた書き方になっています。その後、取り出す条件式がどうもPython3だとこういう書き方になるそうで、少し見づらいなぁ・・・と感じたりはします。実はendpointsメソッドだとこうはならなくて、1階層で済むので簡単ですが、changesはこうして二階層構造になってる箇所があるので注意が必要です。最終的に、addFlatIps変数、removeFlatIps変数と言う2つのディクショナリが構成され、その内容は追加/削除区分とCIDR表記のIPアドレスと言うふうに単純化されています。追加コンフィグファイルの作成さて、削除するルート、追加するルートが変数内で固まってきたので、これを今度はCisco向けコマンドの並びに変更します。cswitch_writer.close()もともとのデータですが、CIDR表記と言って、xxx.xxx.xxx.xxx/yyと言う表記。言う風に分けなければなりません。それをやってるのが以下の箇所です。addr_v4.netmaskまず、CIDR表記のアドレスをip.address.IPv4Network()関数に放り込みます。この時点でipaddress型の変数としてaddr_v4が爆誕するそうで。ipaddress.IPv4Network.netmask各関数を使用することでCIDR表記からアドレス・サブネットマスク方式に値が変わります。routeコマンドに放りこむ形で定義させるようにしています。10実機に設定を適用する。記憶が残ってないので、昔のTipsを流用したのですが、実際にスイッチへ設定を組み込むのはNAPALMを使います。device.close()ドライバはiosを使うんですが、これはSSH利用を前提としている点が注意点となります。pprintと組み合わせて、デバイスに対してコンフィグのマージを行います。投入するファイルは先に述べたJSONデータをもとに作ったアドレス情報をコマンドに変換したものです。実行した後のスイッチの状態スクリプトの最終形態は最後に書こうと思いますが、実際スクリプトを作って実行した結果、無事Catalyst3750Gには経路設定が入ったようです。Firewallの状態を見てみるとこんなふうになってました。20無事、OSPF経路を通じて配信されたようです。Catalyst側でのredisribute設定は忘れずに。staticルートに対する再配信設定が必要です。結果として、無事二要素認証の回避とOffice365へのSSOログインが再び出来るようになりました。JSONの扱いやRESTAPIの使い方とかは、今後ドンドン発展していく上、ものすごく抽象化した概念でデータを取り扱えるのでかなり便利だと思います。急いで作ると色んな穴は出来るけど・・・エラーハンドリングとか例外処理は別途追加しながら上手いこと動かし続けたいなーと思ってます。変更を検出したら、後続処理を実行する。up-to-date')1ファイルで書き上げたのですが、なんだかなぁ・・・な感じではあります。行きあたりばったりの作成をしたのでそりゃぁまぁそうなるよなーと言う感じはします。/usr/local/bin/******.py」ってやっちゃいますねー。VSAはプール使用量に注意したほうが良さそうだ。昨日、こんなエラーが発生した。Backupを使ってWSUSサーバのシステムバックアップ採取をしていたのだけど、まさかの失敗となり。API連携ルーターのお触りコーナーをやってみることにしました。過去の記事でハード構成は完了していることを前提とします。netmikoは抽象化の度合いこそ低いものの、対応デバイスの多さが特徴です。対応デバイス名の記載について言及があまりなく、実際どんなものがあるのかはGithubのソースを見ないとわかりません。休職してから初の一人旅であると同時に、OSC、さくらインターネットさんの勉強会に続き3件目のイベント出席です。WAFを通してみることにした。Firewall)を通してみることに。ほんと、SSHDの不正アクセスもそうなんだけど、マジ半端ねぇ。mininetはネットワークエミュレータです。仮想でホストとOpenFlowスイッチを構成し、その箱庭環境の中で色々な動作確認を行うことができます。デフォルトではこんなトポロジーになってます。3560にてipv6を実装した。StoreOnce-CatalystタイトルとURLをコピーしました。