私は最近、2つのリモートLAN間のブリッジ用のL2トンネルを構成する方法を理解するように求められ、私が見つけることができる便利なソリューションがいくつかあることに驚きました。以前は、このトピックには興味がなく、適切なVPNプロトコルであればブロードキャストパケットをキャッチして、通常のL3トンネルを介して転送できると単純に信じていました。残念ながら、箱から出してすぐに使えるユニバーサルソリューションはありません。それらにはいくつかのプロトコルとツールがあり、そのほとんどは非常に限られた条件で動作するか、完全に非推奨です。最も楽しいオプションをさらに共有します。
なぜL2なのか?
私はまずこの質問をしました。ネットワーク周辺機器を操作することはめったになく、長い間、すべての機器がL3上を歩くことができるように思えました。それがどうであれ、誰かがオフィスのプリンターにアクセスする必要があり、誰かがビデオレコーダーにアクセスする必要があり、誰かがLANの決闘で友人とハックして死ぬことを望んでいる-もちろん家を離れることはない。特に一般的な撤去期間中、自宅からアクセスできるオフィスの共有/ネットワークフォルダーのアイデアも非常に魅力的です。
同時に、VPNクライアントの開発者の間では、何らかの理由でL2ブリッジが1〜2%のユーザーの奇妙な気まぐれのようなものと考えられていますが、概して誰も必要としません。産業用ネットワークでは状況が完全に異なります。多くの古い機器や互換性の低い機器があり、L2VPNの概念(他の略語で表されます)はネットワークおよびプロバイダーレベルで実装されています。
技術
それらはたくさんあり、それらはすべて奇妙で制限があります:
- たとえば、レイヤー2トンネリングプロトコル(L2TP)は、名前が示すように、ブロードキャスト転送を含むOSI L2をサポートする必要があります。しかし、いいえ、一般に受け入れられているL2TP + IPsecバンドルでは、L2レベルでネットワークをブリッジすることはできません!
- PPTP-主要な脆弱性のためにミームになりましたが、現在はなんとか修正されていますが、L2とは関係ありません。
- MPLS — «» . , RouterOS ( , ).
- PPPoE PPPoEoE , . PPPoE , Cisco.
- EoIP L2VPN made right, , . PPTP, GRE, NAT.
そして、私は本当のイーサネットブリッジングがOpenVPNにできることに気付いて驚いた... OpenVPN!
私たちは多くの場合、個人用または機能しているVPNを使用します。多くの場合、通常は永続的にオンになってロックをバイパスします(ただし、この傾向は、テレグラムブロッキングが削除された後は減少します)。私の仕事では、リモート開発ホストも常に使用しています。ほとんどの場合、OpenVPNを使用しています。長い間、なぜクライアントにOpenVPN Access Server + OpenVPN Connectのバンドルが必要なのか理解できませんでした。私のタスクでは、構成を手動で編集するクラシックバージョンを常に使用しており、専用の管理者とGUIは細いシンクライアントでは場違いのように見えました。しかし、ブリッジを設定するためのインターフェースは、ターミナルの構成シートよりもはるかに便利であることがわかりましたが、すべてが完璧ではありません。
カスタマイズ
実際のところ、Access Server(AS)は有料でかなり高価な製品として登場したため、購入するためにあらゆる種類のパンをこまめに詰め込みました。したがって、メニューサブアイテムがWeb管理パネルに表示され、ネットワークモード(L2ブリッジ/ L3ルーティング)を選択できるようになり、しばらくすると同じ理由で「誰も必要ない」という理由で静かにそこから切り取られました。ただし、ブリッジング機能自体と対応するスクリプトは削除されておらず、カスタマイズできます。
取り付け
サーバーまたは仮想マシンが必要です。そのイメージはダウンロードページにあります。Ubuntu18.04のサーバーにインストールした場合のケースを引き続き分析します。
apt update && apt -y install ca-certificates wget net-tools gnupg
wget -qO - https://as-repository.openvpn.net/as-repo-public.gpg | apt-key add -
echo "deb http://as-repository.openvpn.net/as/debian bionic main">/etc/apt/sources.list.d/openvpn-as-repo.list
apt update && apt -y install openvpn-as
インストール後、サーバーは自動的に起動し、次のメッセージが表示されます。
+++++++++++++++++++++++++++++++++++++++++++++++
Access Server 2.8.4 has been successfully installed in /usr/local/openvpn_as
Configuration log file has been written to /usr/local/openvpn_as/init.log
Access Server Web UIs are available here:
Admin UI: https://185.209.31.165:943/admin
Client UI: https://185.209.31.165:943/
+++++++++++++++++++++++++++++++++++++++++++++++
すぐに管理者アカウントのパスワードを指定する必要があります。
passwd openvpn
次に、ブラウザーで管理パネルを開き(上記:943 / admin)、指定したパスワードでopenvpnユーザーとしてログインし、サーバーを構成します。
ASは2人のユーザーが自由に使用できます。追加できるのはユーザーあたり月額18ドルだけなので、2つのクライアントがトンネルを使用するためのプロセスをすぐに設計することをお勧めします。
架け橋
cd /usr/local/openvpn_as/scripts
./sacli --key "von.general.osi_layer" --value "2" ConfigPut
./sacli start
すべてがうまくいった場合、出力jsonには以下が含まれます。
{
"errors": {},
"last_restarted": "Thu Jul 2 00:07:37 2020",
"service_status": {
"api": "on",
"auth": "on",
"bridge": "on",
...
}
}
管理パネルで、ステータス「OSI Layer:3(routing / NAT)」が「2(bridging)」に変わります
注意:最新バージョンでは、ブリッジが有効になっているときにL3に関する情報が残る場合があります。理由-理解できませんでした。この点で安全なバージョンは約2.4です
実際、このノウハウは終わります。次に、サーバーを自分用に構成し、同じWebインターフェースを介して2番目のユーザーを作成し、ポート943(/ adminなし)でユーザーページにログインするだけです。接続用のベイク構成を備えたすべてのプラットフォーム用のOpenVPN Connectクライアントをダウンロードするためのリンクがあります(モバイルアプリケーションを除き、アドレスを手動でドライブする必要があり、その後すべてが自動的にインストールされます)。
クライアントの接続とブリッジが正常に完了すると、TCP / UDPトラフィックを使用したL2トンネルが使用可能になります。クライアントは内部ネットワークのNATとして機能できます。これは管理パネルでも構成されます。