web-dev-qa-db-ja.com

MikroTikルーターを使用して暗号化されたL2-Tunnelをセットアップする方法

私が達成したいこと

既存の内部サブネットを複数の建物に安全に広げたい。つまり、同じサブネット内にある必要がある仮想マシンが2つの場所にあるということです。仮想マシン(静的IPを持つ)は、ある場所から別の場所に移行できるという考え方です。

(物理)ホストマシンは、各場所のスイッチに接続されています。したがって、セキュリティやコストの問題がなければ、両方のスイッチをネットワークケーブルで接続します。

[マシン] --- [スイッチA] <---- LONG CABLE ---> [スイッチB] --- [マシン]

私が望むのは、この長いケーブルを、IPアドレスやルーティングを気にする必要のない2つのゲートウェイを使用する暗号化されたトンネルに置き換え、着信パケットを暗号化して、暗号化されたトンネルを介して他のゲートウェイに送信することです。次に、もう一方のゲートウェイがパケットを復号化して、リモートスイッチに送信します。これは物理的には次のようになります。

[マシン] --- [スイッチA] --- [ゲートウェイA] <-インターネット-> [ゲートウェイB]-[スイッチB] --- [マシン]

ゲートウェイがサブネット内のIPアドレスを必要としないようにしたいと思います。ルールは完全にポートベースでなければなりません:

  • ポート1での受信データ:トンネルインターフェース経由のルート
  • トンネルインターフェースでの受信データポート1経由のルート

2つのゲートウェイには、トンネルを確立するための静的でルーティング可能なIPアドレスがあります。暗号化は強力(少なくともAES128、SHA256、DH2048、共有シークレットは問題ありません)で、単純なPPPタイプのトンネルはサポートしていません。そのため、追加の/別の暗号化レイヤーが必要になる場合があります。

利用できるのはMikroTikルーターだけです。だから私はそれらを使用したいと思います。ただし、私は主に「マジックワード」(プロトコル名など)と、それを可能にするテクノロジーの適切な組み合わせを探しています。したがって、CiscoルーターまたはHPルーターでそれを行う方法を知っている場合は、その方法でそれを行う方法を説明していれば、おそらく役に立ちます...

質問/試み

これを実現するためにどのようなファイアウォールフィルターとプロトコルを使用できますか?

私の最初のアイデアは、暗号化されたトンネルをスパンするためにIPsecを使用することでした。しかし、その場合、物理ポートベースのIPsecポリシーを定義する必要があります。ただし、特別なIPアドレスとIPポートの組み合わせとの間でデータを定義するオプションのみがあります。

そのため、IPsecは別のトンネルタイプの暗号化レイヤーとして機能します(PPTP、SSTP、L2TP、OVPNは現在MikroTik RouterOSでサポートされています)。 PPPトンネルは通常、強力な暗号化をサポートしていないため、IPsecにこの処理を実行させ、暗号化されていないPPPトンネルを暗号化されたIPsecトンネルにスパンさせます。

さて、これで少なくともいくつかのトンネルインターフェースができました。これは送信ポートのように使用できます。しかし、私はここで少し迷っています。 「着信フレームはインターフェイス経由で送信する必要があります」と「着信フレームはインターフェイス経由で送信する必要があります」と言う可能性はわかりません。

私はLayer2で頻繁に働いているわけではないので、実際には適切な「用語」または「カテゴリ」を探しています。 IPファイアウォール(マングル->プレルーティング)またはそのような場所でそれを見つけることを想像できますが、それはすでにレイヤー3のものだと思います...

ブリッジをセットアップする必要があるだけですか?もしそうなら、どうすれば(好ましくはwinbox-Interfaceを使用して)トンネルインターフェースをブリッジに追加できますか?ブリッジにはMACアドレスが必要ですか?

この試みが行き止まりの場合に備えて、「インターフェース」設定で「EoIP」、「IPトンネル」、「GREトンネル」も見つけました。しかし、私は彼らが何をすることができるのか本当の考えはありません...だから念のために、彼らのうちのどれが調査する価値があるかを知らせてください...

また、より簡単でクリーンな解決策がある場合は、あなたの解決策を教えてください...簡単な方法があれば、上記の試みを続ける必要はありません。

3
SDwarfs

ブリッジ、EoIPトンネル、およびIPsecの組み合わせを使用して、要求することを実行できます。

まず、両側にEoIPトンネルを作成して、両方のルーターが互いに通信できるようにします。
EoIP は、GRE proto 47のように機能するMikroTik独自のトンネルです。
IP(IPIPやTAPインターフェイスなど)だけでなく、イーサネットフレーム全体を転送できるため、L3リンクを介してL2ブロードキャストドメインを「拡張」するのに理想的です。

次に、トンネルを介した通信を暗号化するようにIPsecを設定します。
Mikrotikの最新バージョンでは、これはEoIPインターフェイス設定から自動的に実行できますが、より適切に制御するために手動で設定することをお勧めします。
IPsecポリシーをEoIPトンネルエンドポイントIPに適用し(EoIPトンネルトラフィック全体を暗号化する)、トンネルを通過するネットワークには適用しません。

最後に、両方のルーターにブリッジを作成し、イーサネットポートと両側のEoIPトンネルを接続します。

このように、L2ブロードキャストドメインをリモート側に拡張すると、ブリッジは、トンネルを通過するパケットとローカルに留まるパケットを処理します。
ブリッジはソフトウェアスイッチのようなものなので、どのMACがどのポートにあるかをテーブルに保持し、どのポート宛てのパケットを自動的に転送します。もちろん、すべてのブロードキャストトラフィックはトンネルに転送されます。 ブリッジの詳細

公式のMikroTikドキュメント このシナリオはすでに文書化されています(IPsec暗号化を除く)。

「オフィスLAN」と「リモートLAN」の2つのネットワークをブリッジするとします。 EoIPを使用することにより、OfficeとリモートLANが同じLayer2ブロードキャストドメインにあるように設定できます。

次の設定を検討してください: enter image description here

ワイヤレスステーションをブリッジできないことがわかっているので、この制限(WDSを含まない)を克服するために、ワイヤレスリンク上にEoIPトンネルを作成し、それをローカルネットワークに接続されているインターフェイスにブリッジします。

この例ではワイヤレス構成を取り上げません。ワイヤレスリンクがすでに確立されていると仮定します

まず、ゲートウェイにEoIPトンネルを作成します...

[admin@Our_GW] interface eoip> add name="eoip-remote" tunnel-id=0 \
\... remote-address=10.0.0.2
[admin@Our_GW] interface eoip> enable eoip-remote
[admin@Our_GW] interface eoip> print
Flags: X - disabled, R - running
  0    name=eoip-remote mtu=1500 arp=enabled remote-address=10.0.0.2 tunnel-id=0
[admin@Our_GW] interface eoip>

...そしてリモートルーター上

[admin@Remote] interface eoip> add name="eoip" tunnel-id=0 \
\... remote-address=10.0.0.1
[admin@Remote] interface eoip> enable eoip-main
[admin@Remote] interface eoip> print
Flags: X - disabled, R - running
  0   name=eoip mtu=1500 arp=enabled remote-address=10.0.0.1 tunnel-id=0

[admin@Remote] interface eoip>

次のステップは、ローカルインターフェイスをEoIPトンネルでブリッジすることです。

[admin@Our_GW] interface bridge> add 
[admin@Our_GW] interface bridge> print
Flags: X - disabled, R - running
 0  R name="bridge1" mtu=1500 arp=enabled mac-address=00:00:00:00:00:00 
      protocol-mode=none priority=0x8000 auto-mac=yes 
      admin-mac=00:00:00:00:00:00 max-message-age=20s forward-delay=15s 
      transmit-hold-count=6 ageing-time=5m 
[admin@Our_GW] interface bridge> port add bridge=bridge1 interface=eoip-remote
[admin@Our_GW] interface bridge> port add bridge=bridge1 interface=office-eth
[admin@Our_GW] interface bridge> port print
Flags: X - disabled, I - inactive, D - dynamic
 #    INTERFACE      BRIDGE  PRIORITY PATH-COST
 0    eoip-remote    bridge1 128      10
 1    office-eth     bridge1 128      10
[admin@Our_GW] interface bridge>

...とリモートルーター:

[admin@Remote] interface bridge> add 
[admin@Remote] interface bridge> print
Flags: X - disabled, R - running
 0  R name="bridge1" mtu=1500 arp=enabled mac-address=00:00:00:00:00:00 
      protocol-mode=none priority=0x8000 auto-mac=yes 
      admin-mac=00:00:00:00:00:00 max-message-age=20s forward-delay=15s 
      transmit-hold-count=6 ageing-time=5m 
[admin@Remote] interface bridge> port add bridge=bridge1 interface=ether
[admin@Remote] interface bridge> port add bridge=bridge1 interface=eoip-main
[admin@Remote] interface bridge> port print
Flags: X - disabled, I - inactive, D - dynamic
 #    INTERFACE      BRIDGE  PRIORITY PATH-COST
 0    ether          bridge1 128      10
 1    eoip-main      bridge1 128      10     
[admin@Remote] interface bridge>

これで、両方のサイトが同じLayer2ブロードキャストドメインにあります。両方のサイトで同じネットワークからIPアドレスを設定できます。

また、IPSecをセットアップする必要もあります。 詳細はこちら

現時点でMikrotikで通信するための最も安全な方法であるIPsecは、ルーターにハードウェアアクセラレーションがない限り、CPUを大量に消費することに注意してください。したがって、単純なルーターボードを使用している場合は、10〜15 Mbps以上のスループットを期待しないでください。

ルーターに動的インターネットIPがある場合、MikroTikの IP>クラウド機能 を使用して動的DNSを取得し、小さなスクリプトでそれらのDynDNSを使用してEoIPトンネルのIPを自動的に更新する必要があります。パブリックIPが変更されたときのIPsecピアとポリシー。

最後に、インターネットへの接続のMTUはせいぜい1500バイトであると想定しています。トンネルとEoIPを使用して、EoIPトンネルインターフェイスのMTUを1400バイトのレルムで下げる必要があります(セットアップ/トラフィックに最適な値を見つけるには、いくつかのテストを行うことをお勧めします)。
セットアップ/トラフィックには1400バイトを使用します。残念ながら、パケットのサイズに依存するIPsecの性質により、オーバーヘッドは変動するため、常に最善を尽くすことはできません。

5
Cha0s