[Mikrotik][RouterOS] RouterOSに於ける、複数WAN環境時のPolicy Based Routing設定。

mikrotik
62df02f0-ada1-446d-8628-dd3455a240bc.png
Masqueraed and routing, few questions (multiple LAN, multiple WAN scenario) - MikroTik

久々にオフィシャルではなく、こちらに書きます。

図が無いので分かりづらいと思いますが、現在、3WAN(2VPN)+1LAN構成でネットワーク環境を構築しているのですが、かなり面倒くさい構成をしています。

ちなみに確認環境は以下の通り。

[admin@Mikrotik] &> /system resource print
uptime: 1d16h12m9s
version: 6.41rc32 (testing)
build-time: Sep/21/2017 13:51:40
free-memory: 1684.3MiB
total-memory: 1956.2MiB
cpu: tilegx
cpu-count: 9
cpu-frequency: 1200MHz
cpu-load: 1%
free-hdd-space: 80.1MiB
total-hdd-space: 128.0MiB
architecture-name: tile
board-name: CCR1009-8G-1S-1S+
platform: MikroTik

WAN側は以下のような状態です。

-ether5 (DHCPv4 + DHCPv6)
-ether6 (IPv4 PPPoE + S2S VPN)
-ether7 (IPv4 PPPoE (DoD))

IPv6環境を入れ替えたので、かなり面倒くさくなっています。メインはether5になります。v6プラスが設定されたEther portになりまして、こちらからHGWに抜ける回線で、もっともパフォーマンスがいい回線になります。

が、こちらには固定IPアドレスが付与できませんので、Ether6で別のISPによるPPPoE clientを設定し、そこにテスト用のAzure サイト間VPNを設定しています。

POINT

Ether7については、非常用回線になります。ダイヤルオンデマンド設定をしているので、必要なときにしかActiveになりません。

はい、こうなると一つ問題があるのかなと。

デフォルトゲートウェイが複数設定されているのですが、基本的にはすべての送受信はEther5をぬけることになり、Azure側へ接続しようと思っても出来ません。

巷にあふれている情報だと、メイン回線とVPN側へのデフォルトゲートウェイは共用されているのが一般的なので、さてこういう場合はどうするのかなと。

まぁこういうときに思いつくのは、Policy Based Routing(PBR)になるかと思います。しかし、こちらについてもWebで見かけるのは、Sourced PBRが大半でして、接続元IPアドレスで判断させてルーティングさせるというものです。

しかし、今回は接続元を限定するのではなく、あくまで宛先を判断してルーティングさせるというものです。

Error - MikroTik Wiki
Manual:IP/Route - MikroTik Wiki

最初は以下のような感じで簡単に設定できるのではないかと思っていましたが、疎通できないことを確認。

[admin@Mikrotik] /ip route > print
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
#      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
0 A S  10.1.0.0/16                        ether6           1
1 A S  0.0.0.0/0                          192.168.1.1%eth...        1

なんでかなーとか思っていましたが、このままだとVPN側へのルーティングテーブルに掲載されないので、実際には宛先制御がされないということのようです。

ではどうするのかというと、Firewallのmangleという機能を使用します。
具体的には以下のような感じとなります(必要部分抜粋)。

[admin@Mikrotik] > /ip firewall mangle print
Flags: X - disabled, I - invalid, D - dynamic
6    ;;; to Azure test
chain=prerouting action=mark-routing new-routing-mark=azure passthrough=no
dst-address=10.1.0.0/16 log=no log-prefix="VPN"

Azure VPNのあるネットワーク、10.1.0.0/16宛のパケットが来たら、全段処理として”azure”というルーティングテーブルに載せる、という処理になります。これで、先程のルーティング設定の際、azureという部分に従って処理されるようになります。

最終的には、ip routeの設定は以下になります。

[admin@Mikrotik] > /ip route print detail
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
0 A S  dst-address=0.0.0.0/0 gateway=pppoe-ether6 gateway-status=pppoe-ether6 reachable
check-gateway=ping distance=1 scope=30 target-scope=10 routing-mark=azure

1 A S  dst-address=0.0.0.0/0 gateway=192.168.1.1@main
gateway-status=192.168.1.1 on main reachable via  ether5 check-gateway=ping distance=1
scope=30 target-scope=10

他にも実際にはNATにもVPN側への設定等が必要になりますが、それはVPNの設定の際必要なので割愛します。

一応、これで自宅環境では問題は出ていません。
しかし、本当に問題がないのか不安なのでMikrotikに確認中です。

POINT

Mikrotikには申し訳ないことしてます。というのも普段は設定のコンサルティング的なことは受け付けてもらえないのですが(ROSのissueとか、要望とかのほうがメインっぽいので)、無理言って確認してもらってます。

問題等ありましたらご連絡ください。

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

いつか、そのとき、あの場所で。rev.2
タイトルとURLをコピーしました