TL;DR
- 私「あー、久々にコンフィグいじったろ」
- るーた「お、メンテかなぁ」
- 私「プロバイダ2つあるし、パケット転送フィルタでもしたろかな。」
- るーた「あ、ちょっとまって....あああああああ」
- 私「あるぇ、VPN繋がんね???」
- るーた「わいしーらね」
環境
- Roter : YAMAHA RTX1200
- Firmware :
RTX1200 Rev.10.01.78 (Wed Nov 13 16:29:42 2019)
何じゃその転送フィルタとかいうの
サイト内を抜粋しますが。このようなものです。
- 概要
パケット転送フィルターは、 ip filterコマンドで定義したフィルターとの比較にもとづいて、 パケットの転送先を決める機能です。 従来のフィルター型ルーティングと似ていますが、 次の2点が大きく異なります。
-
パケット転送フィルターは、ルーティングの処理とは独立に動作します。 静的経路や動的経路の設定とはまったく関係がありません。
-
フィルタ型ルーティングではゲートウェイのロードバランスや hide指定が可能ですが、パケット転送フィルタでは対応していません。
パケット転送フィルターの処理の位置づけは次のようになっています。 -
イメージ
...まぁ要するにルールに一致するパケットを転送設定された方向に投げますよと。そういうことですね。
まぁ、ここで書かれているようにフィルタ型ルーティングしろよっていえばまぁそれはそれでありなんですけどね。
実際のフィルタ設定部分を御覧ください。
まぁ、コンフィグいじってるわけなのでコンフィグ見に行きますわね。
設定にくだらんコメント入れてんじゃねぇぞオラァってヤクザみたいなこと言わないで泣いてしまいます。
Config
# IP filter configure
## Standard configure
ip filter source-route on
ip filter directed-broadcast on
## 1 - 1000 Wellknown
ip filter 1 pass * * icmp
## 1000 - 1499 NetBios blocker
ip filter 1000 reject * * udp,tcp 135 *
ip filter 1001 reject * * udp,tcp * 135
ip filter 1002 reject * * udp,tcp netbios_ns-netbios_dgm *
ip filter 1003 reject * * udp,tcp * netbios_ns-netbios_dgm
ip filter 1004 reject * * udp,tcp netbios_ssn *
ip filter 1005 reject * * udp,tcp * netbios_ssn
ip filter 1006 reject * * udp,tcp 445 *
ip filter 1007 reject * * udp,tcp * 445
## 1500 - 1999 Malformed packet block
ip filter 1500 reject 10.0.0.0/8 * * * *
ip filter 1501 reject 172.16.0.0/12 * * * *
ip filter 1502 reject 192.168.0.0/16 * * * *
## 2000 L2TP/IPsecVPN
ip filter 2000 pass * 192.168.100.1 ah * *
ip filter 2001 pass * 192.168.100.1 esp * *
ip filter 2002 pass * 192.168.100.1 udp * 500
ip filter 2003 pass * 192.168.100.1 udp * 4500
ip filter 2004 pass * 192.168.100.1 udp * 1701
## 100000 - 199999 192.168.100.0/24 packet filter
ip filter 100000 pass * 192.168.100.127 tcp * 443
ip filter 100001 pass * 192.168.100.127 udp * 443
## 500000 IP filter routing
# 192.168.100.0-7
ip filter 500000 pass 192.168.100.0/29 * * * *
# 192.168.100.8-15
ip filter 500001 pass 192.168.100.8/29 * * * *
# 192.168.100.16-23
ip filter 500002 pass 192.168.100.16/29 * * * *
# 192.168.100.24-31
ip filter 500003 pass 192.168.100.24/29 * * * *
# 192.168.100.32-39
ip filter 500004 pass 192.168.100.32/29 * * * *
# 192.168.100.40-47
ip filter 500005 pass 192.168.100.40/29 * * * *
# 192.168.100.48-55
ip filter 500006 pass 192.168.100.48/29 * * * *
# 192.168.100.56-63
ip filter 500007 pass 192.168.100.56/29 * * * *
# 192.168.100.64-71
ip filter 500008 pass 192.168.100.64/29 * * * *
# 192.168.100.72-79
ip filter 500009 pass 192.168.100.72/29 * * * *
# 192.168.100.80-87
ip filter 500010 pass 192.168.100.80/29 * * * *
# 192.168.100.88-95
ip filter 500011 pass 192.168.100.88/29 * * * *
# 192.168.100.96-103
ip filter 500012 pass 192.168.100.96/29 * * * *
# 192.168.100.104-111
ip filter 500013 pass 192.168.100.104/29 * * * *
# 192.168.100.112-119
ip filter 500014 pass 192.168.100.112/29 * * * *
# 192.168.100.120-127
ip filter 500015 pass 192.168.100.120/29 * * * *
# 192.168.100.128-254
ip filter 500016 pass 192.168.100.128/25 * * * *
# Forward to pp 2
ip forward filter 100 2 gateway pp 2 filter 500001
ip forward filter 100 3 gateway pp 2 filter 500002
ip forward filter 100 4 gateway pp 2 filter 500003
ip forward filter 100 5 gateway pp 2 filter 500004
ip forward filter 100 6 gateway pp 2 filter 500005
ip forward filter 100 7 gateway pp 2 filter 500006
ip forward filter 100 8 gateway pp 2 filter 500007
ip forward filter 100 9 gateway pp 2 filter 500008
# 192.168.111.1-254
ip filter 501000 pass 192.168.111.0/24 * * * *
ip forward filter 200 1 gateway pp 2 filter 501000
## All deny or All allow
ip filter 999998 reject * 192.168.100.0/24 * * *
ip filter 999999 pass * * * * *
## Dynamic Filter list
ip filter dynamic 100 * * ftp
ip filter dynamic 101 * * www
ip filter dynamic 102 * * domain
ip filter dynamic 103 * * smtp
ip filter dynamic 104 * * pop3
ip filter dynamic 105 * * submission
ip filter dynamic 106 * * tcp
ip filter dynamic 107 * * udp
# IPv6 filter configure
ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * * tcp * ident
ipv6 filter 1012 pass * * udp * 546
ipv6 filter 2000 reject * * * * *
ipv6 filter 3000 pass * * * * *
ipv6 filter dynamic 100 * * ftp
ipv6 filter dynamic 101 * * domain
ipv6 filter dynamic 102 * * www
ipv6 filter dynamic 103 * * smtp
ipv6 filter dynamic 104 * * pop3
ipv6 filter dynamic 105 * * tcp
ipv6 filter dynamic 106 * * udp
# NAT
nat descriptor type 1 nat-masquerade
nat descriptor masquerade incoming 1 reject
nat descriptor log on
nat descriptor address outer 1 ipcp
nat descriptor address inner 1 auto
nat descriptor masquerade static 1 1 192.168.100.1 ah
nat descriptor masquerade static 1 2 192.168.100.1 esp
nat descriptor masquerade static 1 3 192.168.100.1 udp 500
nat descriptor masquerade static 1 4 192.168.100.1 udp 4500
nat descriptor masquerade static 1 5 192.168.100.127 tcp https
nat descriptor masquerade static 1 6 192.168.100.127 udp https
上のConfig抜粋と説明
500000番台には、細かくIPレンジを設定して、転送フィルタ用に設定しています。
8アドレス/ルール
で区切ってます。
## 500000 IP filter routing
# 192.168.100.0-7
ip filter 500000 pass 192.168.100.0/29 * * * *
# 192.168.100.8-15
ip filter 500001 pass 192.168.100.8/29 * * * *
# 192.168.100.16-23
ip filter 500002 pass 192.168.100.16/29 * * * *
# 192.168.100.24-31
ip filter 500003 pass 192.168.100.24/29 * * * *
# 192.168.100.32-39
ip filter 500004 pass 192.168.100.32/29 * * * *
# 192.168.100.40-47
ip filter 500005 pass 192.168.100.40/29 * * * *
# 192.168.100.48-55
ip filter 500006 pass 192.168.100.48/29 * * * *
# 192.168.100.56-63
ip filter 500007 pass 192.168.100.56/29 * * * *
# 192.168.100.64-71
ip filter 500008 pass 192.168.100.64/29 * * * *
# 192.168.100.72-79
ip filter 500009 pass 192.168.100.72/29 * * * *
# 192.168.100.80-87
ip filter 500010 pass 192.168.100.80/29 * * * *
# 192.168.100.88-95
ip filter 500011 pass 192.168.100.88/29 * * * *
# 192.168.100.96-103
ip filter 500012 pass 192.168.100.96/29 * * * *
# 192.168.100.104-111
ip filter 500013 pass 192.168.100.104/29 * * * *
# 192.168.100.112-119
ip filter 500014 pass 192.168.100.112/29 * * * *
# 192.168.100.120-127
ip filter 500015 pass 192.168.100.120/29 * * * *
# 192.168.100.128-254
ip filter 500016 pass 192.168.100.128/25 * * * *
ip forward filter
を設定してLANからのパケットを転送します。
# Forward to pp 2
ip forward filter 100 2 gateway pp 2 filter 500001
ip forward filter 100 3 gateway pp 2 filter 500002
ip forward filter 100 4 gateway pp 2 filter 500003
ip forward filter 100 5 gateway pp 2 filter 500004
ip forward filter 100 6 gateway pp 2 filter 500005
ip forward filter 100 7 gateway pp 2 filter 500006
ip forward filter 100 8 gateway pp 2 filter 500007
ip forward filter 100 9 gateway pp 2 filter 500008
おわかりいただけただろうか...
この設定。どうやらフィルタ設定的に書式通りではなかった...エラー出してくれ。
(今思い返せば、pp1から出ていくはずのマシンが突然pp2から出ていったりしていたのでおかしいと思わなければいけなかった!!)
よく見てみたら
パケット転送フィルターを設定するコマンドの書式は次のようになっています。
ip forward filter ID ORDER gateway GATEWAY filter FILTER_ID ... [ keepalive KEEPALIVE_ID ]
IDはパケット転送フィルターの識別子です。 同じインターフェースに対して、複数のパケット転送フィルターを設定するときには、 それらのすべてに対して、同じ番号を指定します。
ORDERは、評価の順番を示すものです。ルータは、 若い番号を持つ設定ほど先に評価します。典型的には、 次のようにいくつかのコマンドを順番に並べて設定します。
- ip forward filter 100 1 gateway tunnel 1 filter 11 12 13
- ip forward filter 100 2 gateway tunnel 2 filter 21 22 23
- ip forward filter 100 3 gateway tunnel 3 filter 31 32 33
FILTER_ID ...の部分は前に書いているものから順に評価します。
なるほど...ip forward filter のフィルタ番号は繋げるのか。これに合わせた書き方に変えてみよう...デフォゲに飛ぶ設定も一旦つくっておこう。
- 変更後
ip forward filter 100 1 gateway pp 1 filter 500000 500009 500010 500011 500012 500013 500014 500015 500016
ip forward filter 100 2 gateway pp 2 filter 500001 500002 500003 500004 500005 500006 500007 500008
ip forward filterをまとめたらVPNにつながるようになった...が...
とりあえずVPNに接続失敗しまくる現象からは逃れられたのですが、問題がまた発生します。
VPNクライアントにあたっているIPはpp1(接続プロパティ1)のレンジなのにpp2(接続プロパティ2)で外部に出てしまう。
ここでこの問題が出てしまいました。
どうやら、このパケット転送フィルタを経由していないらしい。
パケット転送フィルタが経由されない通信....もしかしてルータ自身のパケットのように扱われているのでは....
もういっそのことフィルタ型ルーティングにしてやれ!
もう、いっそのことフィルタ型ルーティングしてやろうと決心。ip route 設定で以下のようにしました。
- 変更前
ip route default gateway pp 1 gateway pp 2 hide
- 変更後
ip route default gateway pp 1 gateway pp 2 filter 500001 gateway pp 2 filter 500002 gateway pp 2 filter 500003 gateway pp 2 filter 500004 gateway pp 2 filter 500005 gateway pp 2 filter 500006 gateway pp 2 filter 500007 gateway pp 2 filter 500008
結果
パケット転送フィルタを使わずにフィルタルーティングにすることで、想定される正しいルールで通信が流れるようになりました。
YAMAHAルータ初心者なので、かなり初歩ミスのようなところ引っかかりまくりました...次からの教訓にしよう。
なんで突然ゲートウェイ変わってたのか多分わかった気がする...
- 最後に通信されたゲートウェイをデフォゲにしているっぽい?
- VPNで接続した場合、本来のローカル接続とは違いルータが応答しているのでルータ自身のパケットになってしまっている。
最終的な形
ip routing process fast
ip route default gateway pp 1 gateway pp 2 filter 500001 gateway pp 2 filter 500002 gateway pp 2 filter 500003 gateway pp 2 filter 500004 gateway pp 2 filter 500005 gateway pp 2 filter 500006 gateway pp 2 filter 500007 gateway pp 2 filter 500008
ip filter source-route on
ip filter directed-broadcast on
~省略~
# IP filter configure
## Standard configure
ip filter source-route on
ip filter directed-broadcast on
## 1 - 1000 Wellknown
ip filter 1 pass * * icmp
## 1000 - 1499 NetBios blocker
ip filter 1000 reject * * udp,tcp 135 *
ip filter 1001 reject * * udp,tcp * 135
ip filter 1002 reject * * udp,tcp netbios_ns-netbios_dgm *
ip filter 1003 reject * * udp,tcp * netbios_ns-netbios_dgm
ip filter 1004 reject * * udp,tcp netbios_ssn *
ip filter 1005 reject * * udp,tcp * netbios_ssn
ip filter 1006 reject * * udp,tcp 445 *
ip filter 1007 reject * * udp,tcp * 445
## 1500 - 1999 Malformed packet block
ip filter 1500 reject 10.0.0.0/8 * * * *
ip filter 1501 reject 172.16.0.0/12 * * * *
ip filter 1502 reject 192.168.0.0/16 * * * *
## 2000 L2TP/IPsecVPN
ip filter 2000 pass * 192.168.100.1 ah * *
ip filter 2001 pass * 192.168.100.1 esp * *
ip filter 2002 pass * 192.168.100.1 udp * 500
ip filter 2003 pass * 192.168.100.1 udp * 4500
ip filter 2004 pass * 192.168.100.1 udp * 1701
## 100000 - 199999 192.168.100.0/24 packet filter
ip filter 100000 pass * 192.168.100.127 tcp * 443
ip filter 100001 pass * 192.168.100.127 udp * 443
## 500000 IP filter routing
# 192.168.100.0-7
ip filter 500000 pass 192.168.100.0/29 * * * *
# 192.168.100.8-15
ip filter 500001 pass 192.168.100.8/29 * * * *
# 192.168.100.16-23
ip filter 500002 pass 192.168.100.16/29 * * * *
# 192.168.100.24-31
ip filter 500003 pass 192.168.100.24/29 * * * *
# 192.168.100.32-39
ip filter 500004 pass 192.168.100.32/29 * * * *
# 192.168.100.40-47
ip filter 500005 pass 192.168.100.40/29 * * * *
# 192.168.100.48-55
ip filter 500006 pass 192.168.100.48/29 * * * *
# 192.168.100.56-63
ip filter 500007 pass 192.168.100.56/29 * * * *
# 192.168.100.64-71
ip filter 500008 pass 192.168.100.64/29 * * * *
# 192.168.100.72-79
ip filter 500009 pass 192.168.100.72/29 * * * *
# 192.168.100.80-87
ip filter 500010 pass 192.168.100.80/29 * * * *
# 192.168.100.88-95
ip filter 500011 pass 192.168.100.88/29 * * * *
# 192.168.100.96-103
ip filter 500012 pass 192.168.100.96/29 * * * *
# 192.168.100.104-111
ip filter 500013 pass 192.168.100.104/29 * * * *
# 192.168.100.112-119
ip filter 500014 pass 192.168.100.112/29 * * * *
# 192.168.100.120-127
ip filter 500015 pass 192.168.100.120/29 * * * *
# 192.168.100.128-254
ip filter 500016 pass 192.168.100.128/25 * * * *
# Forward to pp 2
ip forward filter 100 1 gateway pp 1 filter 500000 500009 500010 500011 500012 500013 500014 500015 500016
ip forward filter 100 2 gateway pp 2 filter 500001 500002 500003 500004 500005 500006 500007 500008
# 192.168.111.1-254
ip filter 501000 pass 192.168.111.0/24 * * * *
ip forward filter 200 1 gateway pp 2 filter 501000
## All deny or All allow
ip filter 999998 reject * 192.168.100.0/24 * * *
ip filter 999999 pass * * * * *
## Dynamic Filter list
ip filter dynamic 100 * * ftp
ip filter dynamic 101 * * www
ip filter dynamic 102 * * domain
ip filter dynamic 103 * * smtp
ip filter dynamic 104 * * pop3
ip filter dynamic 105 * * submission
ip filter dynamic 106 * * tcp
ip filter dynamic 107 * * udp
# IPv6 filter configure
ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * * tcp * ident
ipv6 filter 1012 pass * * udp * 546
ipv6 filter 2000 reject * * * * *
ipv6 filter 3000 pass * * * * *
ipv6 filter dynamic 100 * * ftp
ipv6 filter dynamic 101 * * domain
ipv6 filter dynamic 102 * * www
ipv6 filter dynamic 103 * * smtp
ipv6 filter dynamic 104 * * pop3
ipv6 filter dynamic 105 * * tcp
ipv6 filter dynamic 106 * * udp
# NAT
nat descriptor type 1 nat-masquerade
nat descriptor masquerade incoming 1 reject
nat descriptor log on
nat descriptor address outer 1 ipcp
nat descriptor address inner 1 auto
nat descriptor masquerade static 1 1 192.168.100.1 ah
nat descriptor masquerade static 1 2 192.168.100.1 esp
nat descriptor masquerade static 1 3 192.168.100.1 udp 500
nat descriptor masquerade static 1 4 192.168.100.1 udp 4500
nat descriptor masquerade static 1 5 192.168.100.127 tcp https
nat descriptor masquerade static 1 6 192.168.100.127 udp https
結論
- 原因
- パケット転送フィルタではルーティング設定のようにhide指定ができない(あぇぇぇぃしまったぁぁぁ気付かんかった)
- ルーター自身のパケットはパケット転送フィルタにかからない(うわぁぁんちくせう)