久々にオフィシャルではなく、こちらに書きます。
図が無いので分かりづらいと思いますが、現在、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を設定しています。
Ether7については、非常用回線になります。ダイヤルオンデマンド設定をしているので、必要なときにしかActiveになりません。
はい、こうなると一つ問題があるのかなと。
デフォルトゲートウェイが複数設定されているのですが、基本的にはすべての送受信はEther5をぬけることになり、Azure側へ接続しようと思っても出来ません。
巷にあふれている情報だと、メイン回線とVPN側へのデフォルトゲートウェイは共用されているのが一般的なので、さてこういう場合はどうするのかなと。
まぁこういうときに思いつくのは、Policy Based Routing(PBR)になるかと思います。しかし、こちらについてもWebで見かけるのは、Sourced PBRが大半でして、接続元IPアドレスで判断させてルーティングさせるというものです。
しかし、今回は接続元を限定するのではなく、あくまで宛先を判断してルーティングさせるというものです。
最初は以下のような感じで簡単に設定できるのではないかと思っていましたが、疎通できないことを確認。
[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に確認中です。
Mikrotikには申し訳ないことしてます。というのも普段は設定のコンサルティング的なことは受け付けてもらえないのですが(ROSのissueとか、要望とかのほうがメインっぽいので)、無理言って確認してもらってます。
問題等ありましたらご連絡ください。