サブスクライバーをポートに結び付ける方法の物語

こんにちはHabr!



私の話をします



ある小さなインターネットプロバイダーで技術部門の責任者として仕事に就いたことがありました。 当時の会社はいくつかの技術的な問題を経験し、技術者を見つけることができませんでした。 その瞬間、私は普通の仕事を探していました-その1年前に私は偉大で力強いAvtoVAZ工場(情報システム局で働いていました)を去りました-危機が押し寄せ、彼らは私にお金を与えませんでした。 後-学校の教師としての1年間の仕事(同時にIPとして登録)。一般的には、できる限り回転します。 そして、秋に別の都市にいる私は、技術者が緊急に必要であることを友人から学びます。 私はあまり希望もせず、大きな欲望さえも持たないインタビューに来ました。 約10分間の会話の後、監督は本日退社を求めました。 そして出かけました。



彼らが言うように、それから全体のことわざは?



ネットワークはさまざまな機器で構築されており、所有者は鉄の生産者を優先しませんでした。 実際、これはすべての付随する欠陥を持つ典型的な管理されていないネットワークでした。 当時、スイッチの経験はほとんどなかったと言わざるを得ません。 言うのは簡単です-まったく違います。 1か月もしないうちに、プロバイダーは別のプロバイダーに買収されました。 これがすべての始まりです。



2つのプロバイダーがマージするときに最初に発生するのは、購入したプロバイダーのサブスクライバーベース( "B"と呼びます)を購入者のベース( "A"とする)に転送することです。 問題は十分に迅速に解決されます。両方のデータベースを分析し、適切なクエリを作成し、必要な情報を目的の請求にドラッグします。 新しい接続指示をスタンプします。 私は法的問題を考慮しません;これは技術部門の仕事ではありません。 すべて、インストーラーに作業が提供されます。



次に対処しなければならなかった次の課題は、ネットワークを文書化することでした。 ほとんどの場合、すべてのドキュメント(フリーハンドの図表を持つ設置者向けの本)は、繊維がどのように沸騰するかを説明しなければなりません。 それだけです 電子文書はありません。 なぜなら ほとんどの場合、機器は管理されていません-少なくともどのポートにあるのかを把握することはできません。 一般に、これは別の記事のトピックであり、おそらく1つではありませんが、ここ数年で完成したメカニズムを簡単に説明したいので、読者のこの注意に焦点を合わせません。



会社「A」は、長年、システム管理者として働いています。 すべてがそうあるべきです-あごひげが存在し、Linuxはどこにでもあります。 実際、彼と一緒に開発を始めました。 当初、その計画はあいまいでしたが、個人的には明確で理解できるものには何もしませんでした。 「ネットワークを作成」して監視下に置くだけでなく、加入者に関する情報をクリーンアップするというタスクがありました。後者は「Mishanya」または「The right person」という名前が入力されたフィールドでは受け入れられないためです。



監視システムとして、私たち(会社 "B")には古き良き友好的なPingerがいました。 もちろん、10個の鉄のネットワークでは、Pingerは引き続き動作しますが、数百のデバイスを持つプロバイダーのネットワークでは動作しません。 鉄はすべてZabbixの監督の下で移されました。 しかし、視覚部分はマップに転送されました。これを使用したためです:





マップ上には、既知のデバイスがありました。 また、接続が作成されました-どのデバイスがどのデバイスに接続されています。 これと並行して、カード上のデバイスのアドレスが登録されました。



次のステップは、サブスクライバーのアドレスを整理することでした。 少女たちは明確な指示を与えられたが、それも明確には従わなかった-住所を完全に書き、文法上の誤りなしに書く。 同時に、アドレスのデータベースとしてのKLADRの使用が求められました。 しかし、加入者のパスポートのアドレスとKLADRのエントリを比較したところ、それは価値がないと判断しました。 なぜなら 既存の請求書(UTM)の住所フィールドが単一のテキストフィールドである場合、女の子が入力した内容を追跡できませんでした。 データベースからすべてのアドレスを取得し、余分なスペースを削除し、アドレスをスペースでコンマで分割するいくつかのスクリプトは、すべての問題領域を示しました。 略語が使用されたすべてのアドレス、エラーおよびその他の問題は排除されました。 そこで、集落、通り、家のリストを得ました。 この情報をデータベースにドロップしないのは論理的ではありません。 すぐに言ってやった。 都市、通り、家の3つのテーブルに情報が入力され、これらのテーブルをプロキシで補完する機能を備えた加入者アドレスを選択するメカニズムを実装できるようになりました。 他のタスクを完了すると、サブスクライバーを追加および編集するための新しいインターフェイスを作成することになりました。 そして、アクセスを閉じるために古いものに。 このタスクには時間がかかり、並行して新しい曲線アドレスが浮上しましたが、これはすべて排除されました。 そして、ある晴れた日には、曲がったアドレスの問題はなくなりました。 そして、別のものが発生しました-今では機器のアドレスを整理する必要がありました。 また、このタスクに非常に迅速に対応しました。



そのため、サブスクライバーのテーブルとデバイスのテーブルに新しいフィールド-house_idが表示されました。これにより、住所が家まで届きました。 そして、それは重大な前進でした。 開発と並行して、ネットワークがアップグレードされたということは価値があります。既知の銅線交換はすべて光学部品に、スイッチはすべて同じメーカーのスイッチに置き換えられました。 D-Linkを選択しましたが、後悔しません。



カードを操作する過程で、Zabbix用のスクリプトも作成されました。デバイスが突然動作を停止した場合、データベース内のデバイスに特定のステータスを設定するスクリプトが実行され、マップ上のデバイスの視覚表示がそれに応じて変更されました。 Zabbixは動作し、ブラウザで地図を見ているディレクターはネットワーク上で何が起こっているかを確認します-電気に問題があるチャンネルをダウンロードします(ちなみに、カードの「赤み」はかつて無停電電源をインストールするための引数の1つになりました)。



一方、私たちは先に進みました。 house_idのサブスクライバーがあり、house_idのデバイスがあります。



だから:





できた 確認します。ええ、house_id 337-7人の加入者がいますが、そのようなデバイスはありません...障害、インストーラーのタスクは、この家にインストールされているものを見つけることです。 正確には、制御不能なスイッチが銅線で接続されています。 描画、修正。 そのような場所をすべてチェックし、新しいデバイスを見つけて、地図に載せました。 ナビゲーターに乗る-行方不明の家を完成させます。



問題。 管理されていないスイッチが実行されているかどうかを追跡することはできません。 別のパスに進みます-管理されていないが接続されている管理対象スイッチのポートの監視下で。 そうだとしても。 動作します。 Zabbixは反応し、誓う。 そして、地図が表示されます。 ディレクターは満足しています。 私たちもそうです。



さて、すべてのデバイスが適用され、新しいデバイスはすぐに責任ある管理者によってデータベースに追加されます。 これは非常に有効なスキームですが、何か不足しています。 VPN接続のサブスクライバー、セットアップに関する絶え間ない問​​題、インストーラーは時間を費やし、コールセンターは、新しくインストールされたシステムの接続を再構成する方法をサブスクライバーに説明するのに時間を費やします。 すべてのルーターがpptpをサポートしているわけではありません。 それでは、なぜ承認をスイッチに移さないのか...最初は考えが現実的ではないように思えますが、作業を重ねるほど、ソリューションは明確になります。 サブスクライバーについて何を知っていますか? mac-address、それに基づいて、請求書で指定されたip-addressが発行されます。 このIPアドレスを使用して、加入者はLANに移動してvpnサーバーをノックし、そこでIPアドレス、ログイン、パスワードの対応が確認されます。



これらすべてのイベントの背景に対して、すべてのスイッチを同じ構成にし、ネットワークをセグメントに分割し(別の記事のトピック)、サブスクライバーと連携するためのツールが成長し、サブスクライバーからアプリケーションを管理するためのシステム、機器と連携するためのスクリプトもそこに転送されます。 など すべてのスイッチで、サーバーへのイベント送信を有効にし、MACアドレスの監視を開始します。 この方向を開発しています。 すべての通信が正しく示されているわけではないと判断します。このスイッチは26番目からではなく、27番目のポートから接続されています。 しかし、このサブスクライバーMACは、サブスクライバーポート上のいくつかのデバイスに表示されます。ネットワークトポロジを分析するためのスクリプトを作成します。 この作業は退屈で骨の折れる作業です。 出力では、情報を取得します-サブスクライバが実際に接続されているデバイスのポート。 データベースに入力し、分析を続けます。 一部の加入者はローカルIPアドレスをペンで登録しましたが、macは追跡できませんでした。 このような各サブスクライバーを個別に計算して作業しました。 彼らはこの問題も解決しました-誰かがMacを変更し、誰かがそれをマシンに置きました。 それだけです 美人 どのサブスクライバーが接続されているかがわかります。 私たちはすべてのビランを知っています。 管理対象スイッチの各ポートは、1人のサブスクライバに対応しています。 追加のフィールドをフォームに追加します-デバイスとポートの選択。 impb(ip-mac-portバインディング)のテストを開始し、いくつかの問題があります。D-Linkサポートに連絡し、一緒に解決します。 安定性を実現します。 始めます。 ほね。 使用します。



システムは6か月間稼働しており、その間にいくつかの変更が行われました。 現在、次のように機能します。加入者のデバイス/ポートが変更されると、加入者がジャンプするスイッチの新しいimpb構成が作成され、新しいデバイス/ポートにバインドした後、このデバイスの新しい構成が作成されます。 configフォルダーは監視下にあります。 構成ファイルが変更されている場合、自動的にスイッチに注がれます。 実際には、インストーラは次のようになります。インストーラはテクニカルサポートを呼び出し、サブスクライバをそのようなデバイスのポートにバインドするように要求し、MACアドレスを呼び出します。 サポートスタッフが情報を入力し、[保存]をクリックします。 この後数秒以内に、ポートがオンになり、impbレコードが作成されます。これには、MACアドレス、IPアドレス(サブスクライバーに割り当てられた)、およびポート番号が格納されます。 したがって、サブスクライバのMACアドレスを知っていても、他のどこからでもサブスクライバと接続することはできません。 そして、空きポートがオフになります。 このスキームは機能し、サブスクライバーをゆっくりと翻訳しています。 彼らはそれが好きです。



それは基本的にそれです。 私たちは、サーバーでの認証から逃げることができました。 そして、違いを感じます。 修復要求の数が大幅に減少しました。 サブスクライバーの接続時間は、正確に5分短縮されました(VPNサーバーと課金間の同期時間を考慮)。 また、機器の互換性に関する問題は解決されました-ルーターの選択において加入者を制限することはありません-好きなものを使用してください。 私は故意にコードの一部を引用せず、1つの記事にかなり広範な側面を組み合わせ、私たちがたどった道を示しようとしました。 それがうまくいったことを願っています。



私の話を要約するために、Habrで書いている理由についてコメントしたいと思います。






All Articles