1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ヤマハルーターで、VRRP と 回線冗長化の併用 (LUA)

Posted at

前提

  • インターネット回線は二つ
  • ルーターも二つ
  • 平時もバックアップ回線を有効活用したい
  • パソコンのゲートウェイは1つのアドレスで固定

図にすると、こんな感じのケース。
L3スイッチのGatewayは、10.10.0.254 を見ている想定です。

完成予想図.png

設定

コアな部分のみ書きます。

Router1

ip lan1 vrrp 1 10.10.0.254 priority=200
ip lan1 vrrp shutdown trigger 1 lan2
ip lan1 vrrp 2 10.10.0.253 priority=100
lan keepalive use lan2 icmp-echo 8.8.8.8 length=65

ip filter 2501 pass 192.168.200.1-192.168.200.253 * * * *
ip forward filter 1 1 gateway 10.10.0.253 filter 2501
ip lan1 forward filter 1
schedule at 1 startup * lua emfs:/vrrp-check.lua

Router1 の LUA

embedded file vrrp-check.lua <<EOF
LOG_PTN = "%[VRRP LAN1:2%].* (%w+)$"
CMD_ROUTING = "ip lan1 forward filter 1"

function change_routing_vrrp(VRRP_STATE)
	if VRRP_STATE == "MASTER" then
		rt.command("no " .. CMD_ROUTING)
	else
		rt.command(CMD_ROUTING)
	end
end

function vrrp_status_check()
	local rtn, str
	rtn, str = rt.command("show status vrrp lan1 2")
	if (not rtn) or (not str) then
		return 1
	end

	if string.find(str,"Master") ~= nil then
		change_routing_vrrp("MASTER")
	else
		change_routing_vrrp("BACKUP")
	end
end

function wait_log()
	local rtn, array
	while true do
		rtn, array  = rt.syslogwatch(LOG_PTN)
		if rtn > 0 then
			change_routing_vrrp( string.match(array[1], LOG_PTN))
		end
	end
end

vrrp_status_check()
wait_log()
EOF

Router2

ip lan1 vrrp 1 10.10.0.254 priority=100
ip lan1 vrrp 2 10.10.0.253 priority=200
ip lan1 vrrp shutdown trigger 2 lan2
lan keepalive use lan2 icmp-echo 8.8.8.8 length=65

解説

両方の回線が生きている場合、
端末セグメント2はルーター1の パケット転送フィルター(ip lan1 forward filter ~)で、回線2 を使うようになっています。

回線1が障害の場合、
VRRPにより全通信がルーター2に向きます。

回線2が障害の場合、
端末セグメント2はパケット転送フィルターにより、NextHopが 10.10.0.253になりますが、これはルーター1自身のIPになってしまいます。これを回避するため、LUAで パケット転送フィルターの オン/オフを VRRPに連動して切り替えます。

LUA が必要な理由

  • VRRPの状態により経路変更する仕組みがない

LUA が不要なパターン

  • 端末のゲートウェイ設定をルーター1にしたり、ルーター2にしたり指定できる場合。(図のL3がなくなり、ルーターのLANセグメントに直接、端末がつながっているパターン)
    DHCP サービスを走らせて、fallback オプションと gateway指定の組み合わせで分けたりできる。

後記

いろいろ試してみたけど、どうにも組み込みコマンドだけで設定するのは難しそう。
L3スイッチでソースアドレス指定した経路設定できたら問題ないんだけど。
ヤマハルータなら設定例みたいなソースアドレス指定で経路設計できるので、スイッチでも実装してくれたらいいのに。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?