Mikrotik RouterOS でのマルチバンずルヌティング

導入

この蚘事を取り䞊げたのは、虚栄心に加えお、ロシア語圏の電報コミュニティのプロフィヌル グルヌプでこのトピックに関する気のめいるような質問が頻繁にあったこずがきっかけでした。 この蚘事は、初心者の Mikrotik RouterOS (以䞋、ROS) 管理者を察象ずしおいたす。 ルヌティングを重芖しおマルチバンのみを扱いたす。 さらに、安党で䟿利な操䜜を保蚌するために最䜎限必芁な蚭定が甚意されおいたす。 キュヌ、ロヌド バランシング、VLAN、ブリッゞ、チャネル状態の倚段階詳现分析などのトピックの開瀺を求めおいる人は、読むのに時間ず劎力を無駄にしないかもしれたせん。

初期デヌタ

テスト察象ずしお、ROS バヌゞョン 6.45.3 を搭茉した 1 ポヌト Mikrotik ルヌタヌが遞択されたした。 2 ぀のロヌカル ネットワヌク (LAN1 および LAN2) ず 3 ぀のプロバむダヌ (ISP1、ISP2、ISP3) の間でトラフィックをルヌティングしたす。 ISPXNUMX ぞのチャネルには静的「グレヌ」アドレス、ISPXNUMX - DHCP 経由で取埗された「ホワむト」、ISPXNUMX - PPPoE 認蚌付きの「ホワむト」がありたす。 接続図を次の図に瀺したす。

Mikrotik RouterOS でのマルチバンずルヌティング

タスクは、次のようにスキヌムに基づいお MTK ルヌタヌを構成するこずです。

  1. バックアッププロバむダヌぞの自動切り替えを提䟛したす。 メむンプロバむダヌは ISP2、最初の予備プロバむダヌは ISP1、3 番目の予備プロバむダヌは ISPXNUMX です。
  2. ISP1 を介しおのみむンタヌネットぞの LAN1 ネットワヌク アクセスを構成したす。
  3. アドレスリストに基づいお、遞択したプロバむダヌを介しおロヌカル ネットワヌクからむンタヌネットにトラフィックをルヌティングする機胜を提䟛したす。
  4. ロヌカル ネットワヌクからむンタヌネット (DSTNAT) ぞのサヌビス公開の可胜性を提䟛したす。
  5. ファむアりォヌル フィルタヌを蚭定しお、むンタヌネットからの最䜎限の十分なセキュリティを提䟛したす。
  6. ルヌタヌは、遞択した送信元アドレスに応じお、XNUMX ぀のプロバむダヌのいずれかを介しお独自のトラフィックを発行できたす。
  7. 応答パケットが送信元のチャネル (LAN を含む) にルヌティングされおいるこずを確認したす。

備考 バヌゞョンごずに倉曎される「すぐに䜿える」初期蚭定で予期せぬ事態が発生しないこずを保蚌するために、ルヌタを「最初から」蚭定したす。 Winbox は、倉曎が芖芚的に衚瀺される構成ツヌルずしお遞択されたした。 蚭定自䜓は Winbox タヌミナルのコマンドによっお蚭定されたす。 蚭定のための物理接続は、Ether5 むンタヌフェむスぞの盎接接続によっお行われたす。

マルチバンずは䜕なのか、問題があるのか​​、それずも陰謀ネットワヌクを線み出しおいる狡猟な賢い人々がいるのかに぀いおのちょっずした掚論

奜奇心旺盛で気配りのある管理者が、そのようなスキヌムたたは同様のスキヌムを自分で蚭定するず、それがすでに正垞に機胜しおいるこずに突然気づきたす。 はい、はい。カスタム ルヌティング テヌブルやその他のルヌト ルヌルは必芁ありたせん。このトピックに関するほずんどの蚘事にはこれらのルヌルが含たれおいたす。 確認しよう

むンタヌフェむスずデフォルト ゲヌトりェむでアドレス指定を構成できたすか? はい

ISP1では、アドレスずゲヌトりェむが登録されおいたした。 距離=2 О チェックゲヌトりェむ=ping。
ISP2 では、デフォルトの dhcp クラむアント蚭定に応じお、距離は XNUMX になりたす。
ISP3 の pppoe クラむアント蚭定で、 デフォルトルヌトの远加=はい 眮く デフォルトのルヌト距離=3.

出口で NAT を登録するこずを忘れないでください。

/ip firewall nat add action=masqueradechain=srcnat out-interface-list=WAN

その結果、ロヌカル サむトのナヌザヌは、䞻芁な ISP2 プロバむダヌを通じお猫をダりンロヌドしお楜しんでおり、そのメカニズムを䜿甚しおチャンネル予玄が行われおいたす。 ゲヌトりェむをチェックする 泚1を参照

タスクのポむント 1 が実装されたす。 マヌクのあるマルチバンはどこにありたすか いいえ 

さらに遠く。 ISP1 経由で特定のクラむアントを LAN から解攟する必芁がありたす。

/ip ファむアりォヌルマングル远加アクション=ルヌトチェヌン=プレルヌティング dst-address-list=!BOGONS
passthrough = はい、route-dst = 100.66.66.1 src-address-list = Via_ISP1
/ip ファむアりォヌルマングル远加アクション=ルヌトチェヌン=プレルヌティング dst-address-list=!BOGONS
パススルヌ = いいえ ルヌト dst = 100.66.66.1 src アドレス = 192.168.88.0/24

タスクの項目 2 ず 3 が実装されたした。 ラベル、スタンプ、ルヌトルヌル、ここはどこ?!

むンタヌネットからクラむアントにアドレス 172.17.17.17 を持぀お気に入りの OpenVPN サヌバヌぞのアクセスを蚱可する必芁がありたすか? お願いしたす

/ip クラりド セット ddns-enabled=yes

ピアずしお、私たちはクラむアントに出力結果を䞎えたす。:put [IP クラりド取埗 DNS 名] 

むンタヌネットからのポヌト転送を登録したす。

/ip ファむアりォヌル nat 远加アクション=dst-nat チェヌン=dstnat dst-port=1194
in-interface-list=WAN プロトコル=udp to-addresses=172.17.17.17

項目 4 の準備が敎いたした。

ポむント 5 に぀いおはファむアりォヌルずその他のセキュリティを蚭定したしたが、同時にナヌザヌにずっおすべおがすでに機胜しおいるこずを嬉しく思い、お気に入りの飲み物の入った容噚に手を䌞ばしたす...
ああ トンネルは忘れ去られおいる。

Google の蚘事で構成された l2tp-client は、お気に入りのオランダの VDS に昇栌したしたか? はい。
IPsec を備えた l2tp サヌバヌが起動し、IP クラりドからの DNS 名によるクラむアント (䞊蚘を参照) がしがみ぀いおいたすか? はい。
私たちは怅子にもたれかかり、飲み物を飲みながら、タスクのポむント 6 ず 7 をのんびりず怜蚎したす。 私たちはこう思いたす - それは必芁ですか? それでも、そのように動䜜したす (c) ... それで、それでも必芁ない堎合は、それで終わりです。 マルチバンが実装されたした。

マルチバンずは䜕ですか これは、耇数のむンタヌネット チャネルを XNUMX 台のルヌタヌに接続するこずです。

この蚘事をこれ以䞊読む必芁はありたせん。適甚可胜性が疑わしいこずを誇瀺するこず以倖に䜕があるでしょうか?

残り、タスクのポむント 6 ず 7 に興味があり、完璧䞻矩に悩たされおいる人のために、さらに深く掘り䞋げおいきたす。

マルチバンを実装する際の最も重芁なタスクは、正しいトラフィック ルヌティングです。 ぀たり、どれ (たたはどれ) に関係なく、参照しおください。 泚 3 ISP のチャネルはルヌタヌのデフォルト ルヌトを確認し、パケットの送信元である正確なチャネルに応答を返す必芁がありたす。 課題は明確です。 問題はどこだ 確かに、単玔なロヌカル ネットワヌクでは、タスクは同じですが、誰も远加の蚭定を気にせず、問題を感じたせん。 違いは、むンタヌネット䞊のルヌティング可胜なノヌドはすべお、単玔な LAN のように厳密に特定されたチャネルを介しおではなく、各チャネルを介しおアクセスできるこずです。 そしお、「問題」は、ISP3 の IP アドレスを求めるリク゚ストが来た堎合、デフォルト ゲヌトりェむがそこに向けられおいるため、この堎合、答えは ISP2 チャネルを経由するこずです。 そのたたにし、プロバむダヌによっお間違っおいるずしお砎棄されたす。 問題は特定されたした。 どうやっお解決すればいいでしょうか

解決策は XNUMX ぀の段階に分かれおいたす。

  1. プリセット。 この段階では、ルヌタヌの基本蚭定ロヌカル ネットワヌク、ファむアりォヌル、アドレス リスト、ヘアピン NAT などが蚭定されたす。
  2. マルチバン。 この段階で、必芁な接続がマヌクされ、ルヌティング テヌブルに分類されたす。
  3. ISP に接続しおいたす。 この段階では、むンタヌネットぞの接続を提䟛するむンタヌフェむスが構成され、ルヌティングずむンタヌネット チャネル予玄メカニズムがアクティブになりたす。

1. プリセット

1.1. 次のコマンドを䜿甚しおルヌタヌ蚭定をクリアしたす。

/system reset-configuration skip-backup=yes no-defaults=yes

に同意する "危険 ずにかくリセットしたすか [y/N]:」ず衚瀺され、再起動埌、MAC 経由で Wi​​nbox に接続したす。 この段階では、構成ずナヌザヌベヌスがクリアされたす。

1.2. 新しいナヌザヌを䜜成したす。

/user add group=full name=knight password=ultrasecret comment=”Not horse”

その䞋でログむンし、デフォルトのものを削陀したす。

/user remove admin

備考 著者がより安党であるず考え、䜿甚を掚奚しおいるのは、デフォルト ナヌザヌを無効にするのではなく、削陀するこずです。

1.3. ファむアりォヌル、怜出蚭定、その他の MAC サヌバヌでの操䜜に䟿利なように、基本的なむンタヌフェむス リストを䜜成したす。

/interface list add name=WAN comment="For Internet"
/interface list add name=LAN comment="For Local Area"

コメント付きの眲名むンタヌフェむス

/interface ethernet set ether1 comment="to ISP1"
/interface ethernet set ether2 comment="to ISP2"
/interface ethernet set ether3 comment="to ISP3"
/interface ethernet set ether4 comment="to LAN1"
/interface ethernet set ether5 comment="to LAN2"

そしおむンタヌフェヌスのリストに蚘入したす。

/interface list member add interface=ether1 list=WAN comment=ISP1
/interface list member add interface=ether2 list=WAN comment=ISP2 
/interface list member add interface=ether3 list=WAN comment="to ISP3"
/interface list member add interface=ether4 list=LAN  comment="LAN1"
/interface list member add interface=ether5 list=LAN  comment="LAN2"

備考 わかりやすいコメントを曞くこずは、これに時間を費やす䟡倀があり、さらに、トラブルシュヌティングず構成の理解が倧幅に容易になりたす。

著者は、IP プロトコルが通過しないにもかかわらず、セキュリティ䞊の理由から、ether3 むンタヌフェむスを「WAN」むンタヌフェむス リストに远加する必芁があるず考えおいたす。

PPP むンタヌフェむスが ether3 䞊で確立された埌、それをむンタヌフェむス リスト「WAN」にも远加する必芁があるこずを忘れないでください。

1.4. ルヌタヌを近隣怜出から隠し、MAC を介しおプロバむダヌ ネットワヌクから制埡したす。

/ip neighbor discovery-settings set discover-interface-list=!WAN
/tool mac-server set allowed-interface-list=LAN
/tool mac-server mac-winbox set allowed-interface-list=LAN

1.5. ルヌタヌを保護するために、最小限の十分なファむアりォヌル フィルタヌ ルヌルのセットを䜜成したす。

/ip firewall filter add action=accept chain=input comment="Related Established Untracked Allow" 
connection-state=established,related,untracked

(このルヌルは、接続されたネットワヌクずルヌタヌ自䜓の䞡方から開始される、確立された関連接続に察する蚱可を提䟛したす)

/ip firewall filter add action=accept chain=input comment="ICMP from ALL" protocol=icmp

(ping だけでなく、すべおの icmp が蚱可されたす。MTU の問題を芋぀けるのに非垞に圹立ちたす)

/ip firewall filter add action=drop chain=input comment="All other WAN Drop" in-interface-list=WAN

(入力チェヌンを閉じるルヌルにより、むンタヌネットからのその他すべおのものが犁止されたす)

/ip firewall filter add action=accept chain=forward 
comment="Established, Related, Untracked allow" 
connection-state=established,related,untracked

(このルヌルでは、ルヌタヌを通過する確立された関連接続が蚱可されたす)

/ip firewall filter add action=drop chain=forward comment="Invalid drop" connection-state=invalid

(このルヌルはルヌタヌを通過する connection-state=invalid の接続をリセットしたす。Mikrotik によっお匷く掚奚されおいたすが、たれな状況で有甚なトラフィックがブロックされる可胜性がありたす)

/ip firewall filter add action=drop chain=forward comment="Drop all from WAN not DSTNATed"  
connection-nat-state=!dstnat connection-state=new in-interface-list=WAN

(このルヌルは、むンタヌネットから送信され、dstnat 手順を通過しおいないパケットがルヌタヌを通過するこずを犁止したす。これにより、倖郚ネットワヌクず同じブロヌドキャスト ドメむン内にあり、倖郚 IP をしたがっお、ロヌカル ネットワヌクを「探玢」しおみたす。)

備考 ネットワヌク LAN1 ず LAN2 が信頌されおおり、それらの間のトラフィック、およびそれらからのトラフィックがフィルタリングされおいないず仮定したす。

1.6. ルヌティング䞍可胜なネットワヌクのリストを含むリストを䜜成したす。

/ip firewall address-list
add address=0.0.0.0/8 comment=""This" Network" list=BOGONS
add address=10.0.0.0/8 comment="Private-Use Networks" list=BOGONS
add address=100.64.0.0/10 comment="Shared Address Space. RFC 6598" list=BOGONS
add address=127.0.0.0/8 comment=Loopback list=BOGONS
add address=169.254.0.0/16 comment="Link Local" list=BOGONS
add address=172.16.0.0/12 comment="Private-Use Networks" list=BOGONS
add address=192.0.0.0/24 comment="IETF Protocol Assignments" list=BOGONS
add address=192.0.2.0/24 comment=TEST-NET-1 list=BOGONS
add address=192.168.0.0/16 comment="Private-Use Networks" list=BOGONS
add address=198.18.0.0/15 comment="Network Interconnect Device Benchmark Testing"
 list=BOGONS
add address=198.51.100.0/24 comment=TEST-NET-2 list=BOGONS
add address=203.0.113.0/24 comment=TEST-NET-3 list=BOGONS
add address=224.0.0.0/4 comment=Multicast list=BOGONS
add address=192.88.99.0/24 comment="6to4 Relay Anycast" list=BOGONS
add address=240.0.0.0/4 comment="Reserved for Future Use" list=BOGONS
add address=255.255.255.255 comment="Limited Broadcast" list=BOGONS

(これは、むンタヌネットにルヌティングできないアドレスずネットワヌクのリストであり、それに応じお远跡されたす。)

備考 リストは倉曎される可胜性があるため、関連性を定期的に確認するこずをお勧めしたす。

1.7. ルヌタヌ自䜓の DNS を蚭定したす。

/ip dns set servers=1.1.1.1,8.8.8.8

備考 ROS の珟圚のバヌゞョンでは、動的サヌバヌが静的サヌバヌよりも優先されたす。 名前解決芁求は、リストの最初のサヌバヌに順番に送信されたす。 珟圚のサヌバヌが䜿甚できない堎合、次のサヌバヌぞの移行が実行されたす。 タむムアりトが長く、5 秒を超えおいたす。 「ダりンしたサヌバヌ」が再開されるずきに、元に戻るこずは自動的には行われたせん。 このアルゎリズムずマルチバンの存圚を考慮しお、著者はプロバむダヌが提䟛するサヌバヌを䜿甚しないこずをお勧めしたす。

1.8. ロヌカルネットワヌクを蚭定したす。
1.8.1. LAN むンタヌフェヌス䞊に静的 IP アドレスを構成したす。

/ip address add interface=ether4 address=192.168.88.254/24 comment="LAN1 IP"
/ip address add interface=ether5 address=172.16.1.0/23 comment="LAN2 IP"

1.8.2. メむン ルヌティング テヌブルを通じおロヌカル ネットワヌクぞのルヌトのルヌルを蚭定したす。

/ip route rule add dst-address=192.168.88.0/24 table=main comment=”to LAN1”
/ip route rule add dst-address=172.16.0.0/23 table=main comment="to LAN2"

備考 これは、デフォルト ルヌトを経由しないルヌタヌ むンタヌフェむスの倖郚 IP アドレスの゜ヌスを䜿甚しお LAN アドレスにアクセスするための迅速か぀簡単な方法の XNUMX ぀です。

1.8.3. LAN1 ず LAN2 のヘアピン NAT を有効にしたす。

/ip firewall nat add action=src-nat chain=srcnat comment="Hairpin to LAN1" 
out-interface=ether4 src-address=192.168.88.0/24 to-addresses=192.168.88.254
/ip firewall nat add action=src-nat chain=srcnat comment="Hairpin to LAN2" 
out-interface=ether5 src-address=172.16.0.0/23 to-addresses=172.16.1.0

備考 これにより、ネットワヌク内にいながら倖郚 IP 経由でリ゜ヌス (dstnat) にアクセスできるようになりたす。

2.実際には、非垞に正しいマルチバンの実装

「どこから尋ねられたかに答える」ずいう問題を解決するために、次の XNUMX ぀の ROS ツヌルを䜿甚したす。 接続マヌク О ルヌティングマヌク. 接続マヌク 目的の接続をマヌクし、このマヌクを適甚条件ずしお䜿甚できたす。 ルヌティングマヌク。 そしおすでに ルヌティングマヌク で働くこずが可胜 IPルヌト О ルヌトルヌル。 ツヌルを理解したした。次に、どの接続にマヌクを付けるかを決定する必芁がありたす (XNUMX 回、正確にどこにマヌクするか) XNUMX ぀。

最初の方法では、すべおが簡単です。むンタヌネットから適切なチャネルを介しおルヌタヌに到達するすべおの接続にマヌクを付ける必芁がありたす。 この堎合、これらは 1 ぀のラベル (チャネル数ごず)、「conn_isp2」、「conn_isp3」、および「conn_ispXNUMX」になりたす。

XNUMX 番目の堎合のニュアンスは、受信接続には XNUMX ぀のタむプがあるずいうこずです。トランゞット接続ずルヌタヌ自䜓を察象ずした接続です。 テヌブル内で接続マヌク機構が動䜜したす マングル。 mikrotik-trainings.com リ゜ヌス (宣䌝ではありたせん) の専門家が芪切にたずめた簡略図でパッケヌゞの動きを考えおみたしょう。

Mikrotik RouterOS でのマルチバンずルヌティング

矢印に埓うず、パケットが「」に到着しおいるこずがわかりたす。入力むンタヌフェヌス”、チェヌンを通過したす”プレルヌティングそしおそれがブロック内でトランゞットずロヌカルに分割されるだけです。ルヌティングの決定」。 そこで、䞀石二鳥ずしお、 接続マヌク 衚の䞭 マングルプレルヌティング チェヌン プレルヌティング.

泚意。 ROS では、「ルヌティング マヌク」ラベルは、Ip/Routes/Rules セクションでは「テヌブル」ずしおリストされ、他のセクションでは「ルヌティング マヌク」ずしおリストされたす。 これは理解に混乱を招くかもしれたせんが、実際にはこれは同じものであり、Linux 䞊の iproute2 の rt_tables に䌌おいたす。

2.1. 各プロバむダヌからの受信接続をマヌクしたす。

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP1" connection-mark=no-mark in-interface=ether1  new-connection-mark=conn_isp1 passthrough=no

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP2" connection-mark=no-mark in-interface=ether2  new-connection-mark=conn_isp2 passthrough=no

/ip firewall mangle add action=mark-connection chain=prerouting 
comment="Connmark in from ISP3" connection-mark=no-mark in-interface=pppoe-isp3  new-connection-mark=conn_isp3 passthrough=no

備考 すでにマヌクされおいる接続をマヌクしないようにするには、connection-state=new の代わりに connection-mark=no-mark 条件を䜿甚したす。これは、入力フィルタヌで無効な接続のドロップを拒吊するだけでなく、これがより正確であるず考えられるためです。


passthrough=no - この実装方法では再マヌキングが陀倖され、高速化するために最初の䞀臎埌にルヌルの列挙を䞭断できるためです。

ただルヌティングにはいかなる圢でも干枉しおいないこずに留意しおください。 今は準備段階のみです。 実装の次の段階は、ロヌカル ネットワヌクの宛先から確立された接続を介しお戻るトランゞット トラフィックの凊理です。 それらの。 途䞭でルヌタヌを通過したパケット (図を参照):

「入力むンタヌフェむス」=>「プレルヌティング」=>「ルヌティング決定」=>「転送」=>「ポストルヌティング」=>「出力むンタヌフェむス」 そしおロヌカルネットワヌク内の宛先に届きたした。

重芁 ROS では、倖郚むンタヌフェむスず内郚むンタヌフェむスぞの論理的な分割はありたせん。 䞊の図に埓っお応答パケットのパスを远跡するず、芁求ず同じ論理パスをたどるこずになりたす。

「入力むンタヌフェむス」=>「プレルヌティング」=>「ルヌティング決定」=>「転送」=>「ポストルヌティング」=>「出力むンタヌフェむス」 ただのお願いだから」入力むンタフェヌス」は ISP むンタヌフェむスであり、その答えは LAN でした。

2.2. 応答の䞭継トラフィックを察応するルヌティング テヌブルに送信したす。

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP1" connection-mark=conn_isp1 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp1 passthrough=no

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP2" connection-mark=conn_isp2 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp2 passthrough=no

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Routemark transit out via ISP3" connection-mark=conn_isp3 
dst-address-type=!local in-interface-list=!WAN new-routing-mark=to_isp3 passthrough=no

コメント。 in-interface-list=!WAN - ロヌカル ネットワヌクず、ルヌタヌ自䜓のむンタヌフェむスのアドレスの宛先アドレスを持たない dst-address-type=!local からのトラフィックのみを凊理したす。

途䞭でルヌタヌに到達したロヌカル パケットに぀いおも同様です。

「入力むンタヌフェむス」=>「プレルヌティング」=>「ルヌティング決定」=>「入力」=>「ロヌカルプロセス」

重芁 答えは次のようになりたす。

「ロヌカルプロセス」=>「ルヌティング決定」=>「出力」=>「ポストルヌティング」=>「出力むンタヌフェヌス」

2.3. 応答のロヌカル トラフィックを察応するルヌティング テヌブルに送信したす。

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP1" connection-mark=conn_isp1 dst-address-type=!local 
new-routing-mark=to_isp1 passthrough=no

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP2" connection-mark=conn_isp2 dst-address-type=!local 
new-routing-mark=to_isp2 passthrough=no

/ip firewall mangle add action=mark-routing chain=output 
comment="Routemark local out via ISP3" connection-mark=conn_isp3 dst-address-type=!local 
new-routing-mark=to_isp3 passthrough=no

この段階で、芁求の送信元であるむンタヌネット チャネルに応答を送信する準備をするタスクは解決されたず芋なされたす。 すべおがマヌクされ、ラベルが付けられ、配線する準備ができおいたす。
この蚭定の優れた「副次的」効果は、䞡方 (ISP2、ISP3) プロバむダヌからの DSNAT ポヌト転送を同時に䜿甚できるこずです。 ISP1 にはルヌティング䞍可胜なアドレスがあるため、たったくそうではありたせん。 この効果は、たずえば、異なるむンタヌネット チャネルを参照する XNUMX ぀の MX を備えたメヌル サヌバヌの堎合に重芁です。

倖郚 IP ルヌタヌを䜿甚したロヌカル ネットワヌクの運甚の埮劙な違いを排陀するために、段萜の゜リュヌションを䜿甚したす。 1.8.2 および 3.1.2.6。

さらに、問題の段萜 3 を解くためにマヌクが付いたツヌルを䜿甚するこずもできたす。 次のように実装したす。

2.4. ロヌカル クラむアントからのトラフィックをルヌティング リストから適切なテヌブルに転送したす。

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP1" dst-address-list=!BOGONS new-routing-mark=to_isp1 
passthrough=no src-address-list=Via_ISP1

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP2" dst-address-list=!BOGONS new-routing-mark=to_isp2 
passthrough=no src-address-list=Via_ISP2

/ip firewall mangle add action=mark-routing chain=prerouting 
comment="Address List via ISP3" dst-address-list=!BOGONS new-routing-mark=to_isp3 
passthrough=no src-address-list=Via_ISP3

その結果、次のようになりたす。

Mikrotik RouterOS でのマルチバンずルヌティング

3. ISP ぞの接続を蚭定し、ブランド ルヌティングを有効にしたす

3.1. ISP1 ぞの接続をセットアップしたす。
3.1.1. 静的 IP アドレスを構成したす。

/ip address add interface=ether1 address=100.66.66.2/30 comment="ISP1 IP"

3.1.2. 静的ルヌティングを蚭定したす。
3.1.2.1. デフォルトの「緊急」ルヌトを远加したす。

/ip route add comment="Emergency route" distance=254 type=blackhole

備考 このルヌトにより、プロバむダヌのリンクの状態に関係なく、ロヌカル プロセスからのトラフィックがルヌト決定ステヌゞを通過できるようになりたす。 送信ロヌカル トラフィックのニュアンスは、パケットが少なくずもどこかに移動するには、メむン ルヌティング テヌブルにデフォルト ゲヌトりェむぞのアクティブなルヌトが必芁であるずいうこずです。 そうでない堎合、パッケヌゞは単に砎棄されたす。

ツヌルの拡匵機胜ずしお ゲヌトりェむをチェックする チャネル状態をより深く分析するには、再垰ルヌト手法を䜿甚するこずをお勧めしたす。 この方法の本質は、ゲヌトりェむぞのパスを盎接ではなく䞭間ゲヌトりェむを介しお探すようにルヌタヌに指瀺するこずです。 4.2.2.1、4.2.2.2、および 4.2.2.3 が、それぞれ ISP1、ISP2、および ISP3 の「テスト」ゲヌトりェむずしお遞択されたす。

3.1.2.2. 「怜蚌」アドレスにルヌティングしたす。

/ip route add check-gateway=ping comment="For recursion via ISP1"  
distance=1 dst-address=4.2.2.1 gateway=100.66.66.1 scope=10

備考 将来的に 4.2.2.1 を再垰ゲヌトりェむずしお䜿甚するために、ROS タヌゲット スコヌプのスコヌプ倀をデフォルトに䞋げたす。 匷調したいのは、「テスト」アドレスぞのルヌトのスコヌプは、テスト アドレスを参照するルヌトのタヌゲット スコヌプ以䞋でなければならないずいうこずです。

3.1.2.3. ルヌティング マヌクのないトラフィックの再垰的なデフォルト ルヌト:

/ip route add comment="Unmarked via ISP1" distance=2 gateway=4.2.2.1

備考 タスク条件に埓っお ISP2 が最初のバックアップずしお宣蚀されおいるため、 distance=1 の倀が䜿甚されたす。

3.1.2.4. ルヌティング マヌク「to_isp1」を持぀トラフィックの再垰的デフォルト ルヌト:

/ip route add comment="Marked via ISP1 Main" distance=1 gateway=4.2.2.1 
routing-mark=to_isp1

備考 実際、ここで私たちはようやく第 2 段萜で行った準備䜜業の成果を享受し始めおいたす。


このルヌトでは、どのデフォルト ゲヌトりェむがメむン テヌブルに察しお珟圚アクティブであるかに関係なく、マヌク ルヌト「to_isp1」を持぀すべおのトラフィックが最初のプロバむダヌのゲヌトりェむに送信されたす。

3.1.2.5. ISP2 および ISP3 タグ付きトラフィックの最初のフォヌルバック再垰的デフォルト ルヌト:

/ip route add comment="Marked via ISP2 Backup1" distance=2 gateway=4.2.2.1 
routing-mark=to_isp2
/ip route add comment="Marked via ISP3 Backup1" distance=2 gateway=4.2.2.1 
routing-mark=to_isp3

備考 これらのルヌトは、特に、アドレス リスト「to_isp*」のメンバヌであるロヌカル ネットワヌクからのトラフィックを予玄するために必芁です。

3.1.2.6. ルヌタヌのロヌカル トラフィックのルヌトを ISP1 経由でむンタヌネットに登録したす。

/ip route rule add comment="From ISP1 IP to Inet" src-address=100.66.66.2 table=to_isp1

備考 1.8.2 項のルヌルず組み合わせお、指定された゜ヌスで目的のチャンネルぞのアクセスを提䟛したす。 これは、ロヌカル偎 IP アドレス (EoIP、IP-IP、GRE) を指定するトンネルを構築する堎合に重芁です。 ip ルヌト ルヌルのルヌルは条件が最初に䞀臎するたで䞊から䞋に実行されるため、このルヌルは 1.8.2 項のルヌルの埌にある必芁がありたす。

3.1.3. 送信トラフィック甚の NAT ルヌルを登録したす。

/ip firewall nat add action=src-nat chain=srcnat comment="NAT via ISP1"  
ipsec-policy=out,none out-interface=ether1 to-addresses=100.66.66.2

備考 IPsec ポリシヌに含たれるものを陀き、送信されるすべおのものを NAT 化したす。 どうしおも必芁な堎合を陀き、action=masquerade は䜿甚しないようにしおいたす。 新しい接続ごずに NAT アドレスを蚈算するため、src-nat よりも遅く、リ゜ヌスを倧量に消費したす。

3.1.4. 他のプロバむダヌを介したアクセスが犁止されおいるリストのクラむアントを、ISP1 プロバむダヌのゲヌトりェむに盎接送信したす。

/ip firewall mangle add action=route chain=prerouting comment="Address List via ISP1 only" 
dst-address-list=!BOGONS passthrough=no route-dst=100.66.66.1 
src-address-list=Via_only_ISP1 place-before=0

備考 action=route の優先順䜍が高く、他のルヌティング ルヌルよりも先に適甚されたす。


place-before=0 - ルヌルをリストの最初に配眮したす。

3.2. ISP2ぞの接続を蚭定したす。

ISP2 プロバむダヌは DHCP 経由で蚭定を提䟛するため、DHCP クラむアントがトリガヌされたずきに開始されるスクリプトで必芁な倉曎を加えるこずが合理的です。

/ip dhcp-client
add add-default-route=no disabled=no interface=ether2 script=":if ($bound=1) do={r
    n    /ip route add check-gateway=ping comment="For recursion via ISP2" distance=1 
           dst-address=4.2.2.2/32 gateway=$"gateway-address" scope=10r
    n    /ip route add comment="Unmarked via ISP2" distance=1 gateway=4.2.2.2;r
    n    /ip route add comment="Marked via ISP2 Main" distance=1 gateway=4.2.2.2 
           routing-mark=to_isp2;r
    n    /ip route add comment="Marked via ISP1 Backup1" distance=2 gateway=4.2.2.2 
           routing-mark=to_isp1;r
    n    /ip route add comment="Marked via ISP3 Backup2" distance=3 gateway=4.2.2.2 
           routing-mark=to_isp3;r
    n    /ip firewall nat add action=src-nat chain=srcnat ipsec-policy=out,none 
           out-interface=$"interface" to-addresses=$"lease-address" comment="NAT via ISP2" 
           place-before=1;r
    n    if ([/ip route rule find comment="From ISP2 IP to Inet"] ="") do={r
    n        /ip route rule add comment="From ISP2 IP to Inet" 
               src-address=$"lease-address" table=to_isp2 r
    n    } else={r
    n       /ip route rule set [find comment="From ISP2 IP to Inet"] disabled=no 
              src-address=$"lease-address"r
    n    }      r
    n} else={r
    n   /ip firewall nat remove  [find comment="NAT via ISP2"];r
    n   /ip route remove [find comment="For recursion via ISP2"];r
    n   /ip route remove [find comment="Unmarked via ISP2"];r
    n   /ip route remove [find comment="Marked via ISP2 Main"];r
    n   /ip route remove [find comment="Marked via ISP1 Backup1"];r
    n   /ip route remove [find comment="Marked via ISP3 Backup2"];r
    n   /ip route rule set [find comment="From ISP2 IP to Inet"] disabled=yesr
    n}r
    n" use-peer-dns=no use-peer-ntp=no

Winbox りィンドり内のスクリプト自䜓:

Mikrotik RouterOS でのマルチバンずルヌティング
備考 スクリプトの最初の郚分はリヌスが正垞に取埗されたずきにトリガヌされ、XNUMX 番目の郚分はリヌスが解攟された埌にトリガヌされたす。泚2を参照

3.3. ISP3 プロバむダヌぞの接続をセットアップしたす。

蚭定プロバむダヌによっお動的が提䟛されるため、ppp むンタヌフェむスが起動された埌ず降䞋埌に開始されるスクリプトで必芁な倉曎を行うのが合理的です。

3.3.1. たずプロファむルを蚭定したす。

/ppp profile
add comment="for PPPoE to ISP3" interface-list=WAN name=isp3_client 
on-down="/ip firewall nat remove  [find comment="NAT via ISP3"];r
    n/ip route remove [find comment="For recursion via ISP3"];r
    n/ip route remove [find comment="Unmarked via ISP3"];r
    n/ip route remove [find comment="Marked via ISP3 Main"];r
    n/ip route remove [find comment="Marked via ISP1 Backup2"];r
    n/ip route remove [find comment="Marked via ISP2 Backup2"];r
    n/ip route rule set [find comment="From ISP3 IP to Inet"] disabled=yes;" 
on-up="/ip route add check-gateway=ping comment="For recursion via ISP3" distance=1 
    dst-address=4.2.2.3/32 gateway=$"remote-address" scope=10r
    n/ip route add comment="Unmarked via ISP3" distance=3 gateway=4.2.2.3;r
    n/ip route add comment="Marked via ISP3 Main" distance=1 gateway=4.2.2.3 
    routing-mark=to_isp3;r
    n/ip route add comment="Marked via ISP1 Backup2" distance=3 gateway=4.2.2.3 
    routing-mark=to_isp1;r
    n/ip route add comment="Marked via ISP2 Backup2" distance=3 gateway=4.2.2.3 
    routing-mark=to_isp2;r
    n/ip firewall mangle set [find comment="Connmark in from ISP3"] 
    in-interface=$"interface";r
    n/ip firewall nat add action=src-nat chain=srcnat ipsec-policy=out,none 
    out-interface=$"interface" to-addresses=$"local-address" comment="NAT via ISP3" 
    place-before=1;r
    nif ([/ip route rule find comment="From ISP3 IP to Inet"] ="") do={r
    n   /ip route rule add comment="From ISP3 IP to Inet" src-address=$"local-address" 
    table=to_isp3 r
    n} else={r
    n   /ip route rule set [find comment="From ISP3 IP to Inet"] disabled=no 
    src-address=$"local-address"r
    n};r
    n"

Winbox りィンドり内のスクリプト自䜓:

Mikrotik RouterOS でのマルチバンずルヌティング
備考 ひも
/ip ファむアりォヌルマングルセット [find comment="ISP3 からの接続"] in-interface=$"interface";
むンタヌフェむスの名前倉曎は衚瀺名ではなくコヌドで機胜するため、むンタヌフェむスの名前倉曎を正しく凊理できたす。

3.3.2. 次に、プロファむルを䜿甚しお ppp 接続を䜜成したす。

/interface pppoe-client add allow=mschap2 comment="to ISP3" disabled=no 
interface=ether3 name=pppoe-isp3 password=isp3_pass profile=isp3_client user=isp3_client

最埌の仕䞊げずしお、時蚈を蚭定したしょう。

/system ntp client set enabled=yes server-dns-names=0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org

最埌たで読んでいただいた方ぞ

マルチバンを実装するために提案された方法は、䜜成者の個人的な奜みであり、可胜な唯䞀の方法ではありたせん。 ROS ツヌルキットは広範か぀柔軟であるため、初心者にずっおは困難を匕き起こす䞀方で、それが人気の理由でもありたす。 新しいツヌルや゜リュヌションを孊び、詊し、発芋しおください。 たずえば、埗られた知識の応甚ずしお、このマルチバンの実装のツヌルを眮き換えるこずができたす。 チェックゲヌトりェむ ぞの再垰ルヌトを䜿甚 ネットりォッチ.

泚釈

  1. チェックゲヌトりェむ - ゲヌトりェむの可甚性チェックが 10 回連続しお倱敗した堎合に、ルヌトを非アクティブ化できるメカニズム。 チェックは 20 秒ごずに 30 回ず応答タむムアりトを加えお実行されたす。 実際の切り替えタむミングは合蚈で XNUMX  XNUMX 秒の範囲になりたす。 このような切り替えタむミングが十分でない堎合は、ツヌルを䜿甚するオプションがありたす。 ネットりォッチ、チェックタむマヌを手動で蚭定できたす。 チェックゲヌトりェむ リンク䞊で断続的なパケット損倱が発生した堎合には起動したせん。

    重芁 プラむマリ ルヌトを非アクティブにするず、それを参照する他のすべおのルヌトが非アクティブになりたす。 したがっお、圌らが指定するためには、 チェックゲヌトりェむ=ping 必芁はありたせん。

  2. DHCP メカニズムで障害が発生するこずがあり、クラむアントが曎新状態でスタックしおいるように芋えたす。 この堎合、スクリプトの XNUMX 番目の郚分は機胜したせんが、状態が察応する再垰ルヌトを远跡するため、トラフィックが正しく移動するこずは劚げられたせん。
  3. ECMP (等コストマルチパス) - ROS では、耇数のゲヌトりェむず同じ距離を持぀ルヌトを蚭定できたす。 この堎合、接続は、指定されたゲヌトりェむの数に比䟋しお、ラりンド ロビン アルゎリズムを䜿甚しおチャネル党䜓に分散されたす。

蚘事を曞く原動力ずしお、その構造ずアクセントの配眮の圢成にご協力ください - Evgeny に個人的に感謝したす @jscar

出所 habr.com