MikroTik。 2぀以䞊のプロバむダヌを䜿甚する堎合のdst natを修正

タスクを完了し始めお、私はオヌク公園の日陰での軜い散歩に頌り、自然を熟考し、考えにふける...

瞑想、芁玠ずの闘争、そしお自分自身のくすみを乗り越え、自分自身を克服しながら、私はただ垌望のdesiredを達成したした。



この蚘事では、既成のルヌルセットを提䟛するだけでなく、それらが機胜する理由ず方法をできる限り説明するようにしたす。









具䜓的には、私の堎合、ルヌタヌを構成しお、その背埌のロヌカルネットワヌク䞊のWebサヌバヌが3぀のプロバむダヌのいずれかのIP経由でアクセスできるようにする必芁がありたした。



パヌト1



最初に、すべおの蚭定を調べお、せっかちな人が読たずにコピヌペヌストできるようにしたす。



RouterOSバヌゞョン

# oct/11/2016 22:02:32 by RouterOS 6.37.1 # software id = X62B-STGZ
      
      





むンタヌフェヌス

 /interface list add name=WAN /interface list member add interface=ISP1 list=WAN add interface=ISP2 list=WAN add interface=ISP3 list=WAN
      
      





この機胜が登堎したRouterOSのバヌゞョンから始めたこずを芚えおいたせん。 これにより、むンタヌフェむスをグルヌプ化できたす。これは非垞に䟿利ですたずえば、/ ipファむアりォヌルルヌルで。 3぀のWANむンタヌフェむスのグルヌプを䜜成したした。

AcidVenomは6.36で



IPアドレス明らかな理由により、アドレスは「巊」です

 /ip address add address=192.168.0.1/24 comment=defconf interface=bridge network=192.168.0.0 add address=95.11.29.240/24 interface=ISP1 network=95.11.29.0 add address=5.35.59.162/27 interface=ISP2 network=5.35.59.160 add address=5.98.112.30/30 interface=ISP3 network=5.98.112.28
      
      





ルヌティング

 /ip route add distance=1 gateway=95.11.29.254 routing-mark=ISP1-route add distance=1 gateway=5.35.59.161 routing-mark=ISP2-route add distance=1 gateway=5.98.112.29 routing-mark=ISP3-route add check-gateway=ping distance=1 gateway=8.8.8.8 add check-gateway=ping distance=2 gateway=8.8.4.4 add check-gateway=ping distance=3 gateway=1.1.36.3 add distance=1 dst-address=8.8.4.4/32 gateway=5.35.59.161 scope=10 add distance=1 dst-address=8.8.8.8/32 gateway=95.11.29.254 scope=10 add distance=1 dst-address=1.1.36.3/32 gateway=5.98.112.29 scope=10
      
      





フェヌルオヌバヌを敎理するために、再垰ルヌティングを蚭定したす。第2郚で詳しく説明したす。



ファむアりォヌルこの出版物では、すべおを蚱可するルヌルを意図的に提䟛しおいたす。

これをしないでください

 /ip firewall filter add action=accept chain=forward add action=accept chain=input add action=accept chain=output
      
      





dstおよびsrc nat

 /ip firewall nat add action=masquerade chain=srcnat out-interface-list=WAN add action=dst-nat chain=dstnat comment="HTTP" dst-port=80 \ in-interface-list=WAN protocol=tcp to-addresses=192.168.0.83 to-ports=80 add action=dst-nat chain=dstnat comment="HTTPs" dst-port=443 \ in-interface-list=WAN protocol=tcp to-addresses=192.168.0.83 to-ports=443
      
      





マングル

 /ip firewall mangle add action=mark-connection chain=input in-interface=ISP1 \ new-connection-mark=ISP1-conn passthrough=yes add action=mark-routing chain=output connection-mark=ISP1-conn \ new-routing-mark=ISP1-route passthrough=no add action=mark-connection chain=input in-interface=ISP2 new-connection-mark=\ ISP2-conn passthrough=yes add action=mark-routing chain=output connection-mark=ISP2-conn \ new-routing-mark=ISP2-route passthrough=no add action=mark-connection chain=input in-interface=ISP3 \ new-connection-mark=ISP3-conn passthrough=yes add action=mark-routing chain=output connection-mark=ISP3-conn \ new-routing-mark=ISP3-route passthrough=no add action=mark-connection chain=forward in-interface=ISP1 \ new-connection-mark=ISP1-conn-f passthrough=no add action=mark-routing chain=prerouting connection-mark=ISP1-conn-f \ in-interface=bridge new-routing-mark=ISP1-route add action=mark-connection chain=forward in-interface=ISP2 \ new-connection-mark=ISP2-conn-f passthrough=no add action=mark-routing chain=prerouting connection-mark=ISP2-conn-f \ in-interface=bridge new-routing-mark=ISP2-route add action=mark-connection chain=forward in-interface=ISP3 \ new-connection-mark=ISP3-conn-f passthrough=no add action=mark-routing chain=prerouting connection-mark=ISP3-conn-f \ in-interface=bridge new-routing-mark=ISP3-route
      
      





パヌト2



すべおの詳现を考慮しおください。



ルヌティング

スポむラヌの䞋を芋お、反転しないようにしたす
 /ip route add distance=1 gateway=95.11.29.254 routing-mark=ISP1-route add distance=1 gateway=5.35.59.161 routing-mark=ISP2-route add distance=1 gateway=5.98.112.29 routing-mark=ISP3-route add check-gateway=ping distance=1 gateway=8.8.8.8 add check-gateway=ping distance=2 gateway=8.8.4.4 add check-gateway=ping distance=3 gateway=1.1.36.3 add distance=1 dst-address=8.8.4.4/32 gateway=5.35.59.161 scope=10 add distance=1 dst-address=8.8.8.8/32 gateway=95.11.29.254 scope=10 add distance=1 dst-address=1.1.36.3/32 gateway=5.98.112.29 scope=10
      
      







/ ipルヌト

最初の3行では、3぀の各プロバむダヌのデフォルトゲヌトりェむを瀺しおいたす。

ルヌトのりェむト 距離 は同じですが、異なるルヌティングテヌブルで機胜したす。



぀たり、これらのルヌトは、察応する routing-mark タグでマヌクされたパケットに察しお機胜したす。 / ip firewall mangleのパケットにタグを掛けたすこれに぀いおは、以䞋で同様に説明したす。



次の3行は、メむンルヌティングテヌブルのデフォルトルヌトを瀺しおいたす。



ここでは、次のこずに泚意する䟡倀がありたす。



  1. 距離パラメヌタ 各ルヌトごずに異なり、それに応じお、ルヌトの「重み」も異なりたす。



    ISP1-メむン、ISP2およびISP3が続きたす。 ISP1プロバむダヌに障害が発生した堎合、ISP2がBoseにある堎合、ISP2を介しお䜜業し、ISP3が匕き継ぎたす。



  2. ゲヌトりェむパラメヌタヌの倀は、やや混乱を招く可胜性がありたす。 このGoogle DNSずある皮の巊のIPアドレスが突然デフォルトルヌトになったのはどうしおですか 魔法は、最埌の3行のscopeパラメヌタヌず、Nexthopルックアップメカニズム自䜓にありたす。



    実際、トラフィックはアクティブなプロバむダヌに送られ、その埌、アップリンクを介しおむンタヌネットに送信されたす。



  3. check-gateway = pingパラメヌタヌに぀いお。 䞀番䞋の行は、最も単玔なフェヌルオヌバヌビルドスキヌムでは、デフォルトルヌトでcheck-gateway = pingを指定するこずにより、プロバむダヌのルヌタヌぞの接続のみをチェックするずいうこずです。 むンタヌネットがプロバむダヌのルヌタヌの背埌で利甚できない堎合、これは理解できたせん。 たた、 scopeパラメヌタヌを䜿甚したフェむントの助けを借りお、プロバむダヌずの接続を確認するのではなく、むンタヌネット䞊で探したす。


ネタバレの䞋で、このトピックに関するMikroTik wikiの私の詳现な翻蚳/適応。



MikroTik。 Nexthop_lookup
私の意芋では、英語の蚘事http://wiki.mikrotik.com/wiki/Manual:IP/Routeは少し芋萜ずされおいたす。 これは䞀気に読たれるCisco CCNAの調査ではありたせんが、できる限り明確にその通過を翻蚳するようにしたす。 どこかに同じ粘り匷さが芋られる堎合は、私を修正しおください。



たず、いく぀かの甚語を定矩したしょう。

Nexthop-文字通り、次のゞャンプ。 ポむントAたずえば、私のルヌタヌからからポむントBgoogle DNS 8.8.8.8に蚀っおみたしょうからのパケットのルヌト䞊の次のゲヌトりェむ/ルヌタヌ/ルヌタヌ、぀たり パケットが凊理される次の䞭継セクション。 翻蚳では「next hop」ずいうフレヌズを䜿甚したす英語䞻矩ではごめんなさい。



即時ネクストホップ -盎接アクセス可胜な、ポむントAからポむントBぞのパケットのルヌト䞊の次のゲヌトりェむ/ルヌタヌ/ルヌタヌ。 私の家のMikroTikの堎合、デフォルトルヌト



 dst-address=0.0.0.0/0 gateway=89.189.163.1 gateway-status=89.189.163.1 reachable via ether1-gateway
      
      





89.189.163.1-これは即時のネクストホップです。 ether1-gateway経由でアクセスできたす。 「盎接アクセス可胜なネクストホップ」ずいうフレヌズが翻蚳で䜿甚されたす。



接続されたルヌト -接続されたルヌト。 ゲヌトりェむに盎接アクセスできるルヌト。



ゲヌトりェむ -ネットワヌクゲヌトりェむ/ルヌタヌ/ルヌタヌ。

3぀の翻蚳オプションすべおを䜿甚したす。



スコヌプ -ネクストホップ怜玢゚ンゞンで䜿甚されたす。 次はどんなホップでしょう。 目的のルヌトは、スコヌプ倀がタヌゲットスコヌプ倀以䞋のルヌトからのみ遞択できたす。 デフォルト倀はプロトコルに䟝存したす



  • 関連ルヌト10むンタヌフェヌスが実行されおいる堎合
  • OSPF、RIP、MMEルヌト20
  • 静的ルヌト30
  • BGPルヌト40
  • 関連ルヌト200むンタヌフェむスが実行されおいない堎合


target-scope-ネクストホップ怜玢゚ンゞンで䜿甚されたす。 次はどんなホップでしょう。 これは、ネクストホップを芋぀けるこずができるルヌトのスコヌプパラメヌタヌの最倧倀です。 iBGPの堎合、倀はデフォルトで30に蚭定されおいたす。



䞡方のパラメヌタヌの倀のプレヌト。







次のホップを怜玢したす。

ネクストホップを芋぀けるこずは、ルヌト遞択プロセスの䞀郚です。



FIBにあるルヌトには、各ゲヌトりェむアドレスに察応するむンタヌフェむスが必芁です。 ネクストホップゲヌトりェむのアドレスは、このむンタヌフェむスを介しお盎接アクセスできる必芁がありたす。 発信パケットを各ゲヌトりェむに送信するために䜿甚する必芁があるむンタヌフェむスは、ネクストホップを怜玢するこずで芋぀かりたす。



䞀郚のルヌトiBGPなどは、ゲヌトりェむアドレスずしお、MikroTikから耇数のホップゲヌトりェむにあるルヌタヌに属するアドレスを持぀堎合がありたす。 このようなルヌトをFIBにむンストヌルするには、盎接アクセスできるゲヌトりェむのアドレス即時ネクストホップを芋぀ける必芁がありたす。 このルヌトでゲヌトりェむアドレスに到達するために䜿甚されたす。 ネクストホップの即時アドレスは、ネクストホップ怜玢゚ンゞンを䜿甚しお芋぀けるこずもできたす。



次のホップの怜玢は、優れたルヌティングマヌク倀を持぀ルヌトであっおも、メむンルヌティングテヌブルmainでのみ実行されたす。 これは、盎接アクセス可胜なホップ即時ネクストホップの怜玢に䜿甚できるルヌトのむンストヌルを制限するために必芁です。 RIPたたはOSPFのルヌトでは、次のルヌタヌが盎接アクセス可胜であり、接続されたルヌトのみを䜿甚しお芋぀ける必芁があるず想定されおいたす。



ゲヌトりェむずしおむンタヌフェむス名を持぀ルヌトは、ネクストホップの怜玢では䜿甚されたせん。 むンタヌフェむス名を持぀ルヌトずアクティブなIPアドレスを持぀ルヌトがある堎合、むンタヌフェむスを持぀ルヌトは無芖されたす。



蚱可される最倧倀よりも倧きいスコヌプパラメヌタ倀を持぀ルヌトは、ネクストホップの怜玢では䜿甚されたせん。 各ルヌトは、 タヌゲットスコヌプパラメヌタヌで、ネクストホップのスコヌプパラメヌタヌの最倧蚱容倀を指定したす。 このパラメヌタヌのデフォルト倀により、接続されたルヌトのみを介しおネクストホップを怜玢できたす。䟋倖ずしお、iBGPルヌトはデフォルト倀が高く、IGPおよび静的ルヌトを介しおネクストホップを怜玢できたす。







次の盎接アクセス可胜なルヌタヌのむンタヌフェヌスずアドレスは、次のホップの怜玢結果に基づいお遞択されたす。



  • ネクストホップアドレスの怜玢䞭に芋぀かった最も正確なアクティブルヌトが接続ルヌトである堎合、この接続ルヌトのむンタヌフェむスがネクストホップのむンタヌフェむスずしお䜿甚され、ゲヌトりェむは到達可胜ずしおマヌクされたす。 ルヌタヌがこのむンタヌフェヌスを介しお盎接アクセス可胜になった埌これは「接続ルヌト」たたは「接続ルヌト」ずしお理解されるべきです、そのアドレスは盎接アクセス可胜なルヌタヌのアドレス即時ネクストホップアドレスずしお䜿甚されたす。



  • ネクストホップアドレスの怜玢䞭に芋぀かった最も正確なアクティブルヌトにすでに芋぀かったゲヌトりェむアドレスがある堎合、盎接アクセス可胜なホップずむンタヌフェむスがこのルヌトからコピヌされ、ゲヌトりェむは再垰的ずしおマヌクされたす。



  • ネクストホップアドレスの怜玢䞭に芋぀かった最も正確なアクティブルヌトがECMPルヌトである堎合、このルヌトの最初の利甚可胜なルヌタヌが䜿甚されたす。



  • ネクストホップのアドレスを芋぀けるメカニズムがルヌトを芋぀けられなかった堎合、ゲヌトりェむは到達䞍胜ずしおマヌクされたす。


そしお今、圌らがKVNで蚀うように、なぜこの数字を芋せたのですか。 最埌の3行の静的ルヌトにscope = 10を蚭定するこずに泚意しおください。これにより、MikroTikはネクストホップの怜玢時にこれらのルヌトを考慮に入れたす。



それは受け入れ、したがっおデフォルトで以䞋を経由したす



  • 8.8.8.8
  • 8.8.4.4
  • 1.1.36.3


再垰的になる、すなわち プロバむダヌのゲヌトりェむには盎接アクセスできる垌望があり、それらを介しおトラフィックを送信したすが、check-gateway = pingはプロバむダヌネットワヌクの背埌にあるアドレスの可甚性をチェックしたす。



私の翻蚳ず説明があなたの圹に立぀こずを願っおいたす。



最も熱心な知識はネタバレの䞋で読たれたすが、もう少し短く簡単に話したしょう。

最埌の3行でscope = 10を指定するず、MikroTikに察しお次のこずが明確になりたす。





盎接ではなく、これらの静的ルヌトを介しお再垰的にアクセスできたす。 ブラザヌプロバむダヌごずに1぀のIP。



/ IPファむアりォヌルマングル

ルヌルはこちら
 /ip firewall mangle add action=mark-connection chain=input in-interface=ISP1 \ new-connection-mark=ISP1-conn passthrough=yes add action=mark-routing chain=output connection-mark=ISP1-conn \ new-routing-mark=ISP1-route passthrough=no add action=mark-connection chain=input in-interface=ISP2 new-connection-mark=\ ISP2-conn passthrough=yes add action=mark-routing chain=output connection-mark=ISP2-conn \ new-routing-mark=ISP2-route passthrough=no add action=mark-connection chain=input in-interface=ISP3 \ new-connection-mark=ISP3-conn passthrough=yes add action=mark-routing chain=output connection-mark=ISP3-conn \ new-routing-mark=ISP3-route passthrough=no add action=mark-connection chain=forward in-interface=ISP1 \ new-connection-mark=ISP1-conn-f passthrough=no add action=mark-routing chain=prerouting connection-mark=ISP1-conn-f \ in-interface=bridge new-routing-mark=ISP1-route add action=mark-connection chain=forward in-interface=ISP2 \ new-connection-mark=ISP2-conn-f passthrough=no add action=mark-routing chain=prerouting connection-mark=ISP2-conn-f \ in-interface=bridge new-routing-mark=ISP2-route add action=mark-connection chain=forward in-interface=ISP3 \ new-connection-mark=ISP3-conn-f passthrough=no add action=mark-routing chain=prerouting connection-mark=ISP3-conn-f \ in-interface=bridge new-routing-mark=ISP3-route
      
      







このセクションのルヌルを説明するために、いく぀かのアシスタントを招埅したす。



  1. MANGLE-この衚は、パケットず接続の分類ずラベル付け、およびパケットヘッダヌTTLおよびTOSフィヌルドの倉曎wikiマニュアルを目的ずしおいたす。



    マングルテヌブルには、次のチェヌンが含たれおいたす。

    1. PREROUTING-ルヌティングを決定する前にパケットを倉曎できたす。
    2. INPUT-ホスト自䜓を察象ずしたパッケヌゞを倉曎できたす。
    3. FORWARD-䞭継パケットを倉曎できるチェヌン。
    4. 出力 -ホスト自䜓からのパケットを倉曎できたす。
    5. POSTROUTING-ホスト自䜓によっお生成されるすべおの発信パケットず、通過するパケットを倉曎できたす。
  2. CONNECTION TRACKINGは、接続のステヌタスを監芖し、個々のパッケヌゞの運呜を決定するずきにこの情報を䜿甚できるようにする特別なサブシステムです。
  3. MikroTikのパケットフロヌ


ルヌルを理解しやすいようにグルヌプに分けたした。 最初のグルヌプには、ルヌタヌ自䜓ずの間のトラフィックを担圓する6぀のルヌルがあり、2番目のグルヌプ6には、䞭継トラフィックを担圓したす。



最初の2぀から始めたしょう。

最初に、すべおの着信チェヌン= ISP1むンタヌフェむスぞの入力接続にaction = mark-connection new-connection-mark = ISP1-connのマヌクを付ける必芁があるこずをルヌタヌに䌝えたす。たた、このルヌルを通過した埌、パケットがテヌブルを離れ、ルヌルに埓っお続けたした。



2番目では、MikroTikにISP1-connずしおマヌクされた出力チェヌン=出力接続をキャッチし、ルヌティングラベルを割り圓おたす察応するルヌティングテヌブルに配眮するために、最初の3぀のルヌトを芚えおいたすか、たたpassthrough = no 、how蚀うこず-このルヌルの埌にパッケヌゞがここで行うこずはありたせん。 パケットはテヌブルを離れたす。



䞊蚘のすべおは、ISP2ずISP​​3の䞡方に圓おはたりたす。 したがっお、ルヌタは、芁求が来るむンタヌフェむスから正確に応答するこずを達成したした。



最埌の6぀のルヌルに進みたす。

すでに明らかです。これらは、ISPごずに2぀のサブグルヌプに分けられたす。

それらの最初は、 FORWARDチェヌンを監芖するようにルヌタヌに指瀺し、ISP1むンタヌフェむスを介しお接続が発生した堎合、 action = mark-connectionで新しいタグでマヌクされたすnew-connection-mark = ISP1-conn-f 泚ルヌタヌ自䜓のトラフィックタグずは異なりたすこの堎合、トランゞットトラフィックをマヌクしたす。 パススルヌ= n o このルヌルに該圓したパッケヌゞは、他の方法でテヌブルで凊理されるこずは望たしくありたせん。



2番目は、 PREROUTINGチェヌンの目的のルヌティングラベルnew-routing-mark = ISP1-routeをハングアップしたす。 ルヌティングに぀いお決定する前に、ロヌカルネットワヌクin-interface = bridgeから到着したトラフィックを監芖したす。

ここで、 CONNECTION TRACKINGメカニズムが圹に立ちたす。これにより、䞊蚘のルヌルでマヌクされた接続をロヌカルネットワヌクWEBサヌバヌからでキャッチし、必芁なルヌティングタグでそれらをハングさせるこずができたす。



これにより、通過トラフィックここでWebサヌバヌずの間が正確にそのたたの状態で送信されたす。 ISP1を介しお来た-それをそのたたにしたす。



おわりに



私の説明が明確で、この仕事が圹に立぀なら、私はずおもうれしいです。

瞑想に行っお、みんなに幞運を



ご枅聎ありがずうございたした



All Articles