« USB-TXS USB-TXC Windows10動作確認纏め記事 | トップページ | kancolleSniffer導入覚書 »

2018年4月 1日 (日)

RTX1100のマルチホーミング機能を使用して自宅サーバを2つのWAN(URL)で公開してみるテスト

以前断念した一つのサーバを2つのURLで公開してみるテスト。
ついでにWAN1、WAN2のどちら側からもVPN接続が出来るように構成してみるのこと。

ちなみに以前断念した理由はWANルータが2台あると自宅サーバからWANへの返信パケットがデフォゲのルータに片寄る為、デフォゲでないルータ側で受けたコネクションがASYNメトリック状態となり、クライアント側ではアクセスしたサーバと違うサーバが応答を返してきていると認識されて異常状態となったため。

と言う訳で最初はフリーのロードバランサで実現できないか調べていたが、ルータのマルチホーミング機能でやる方が簡単そうだったので別途中古ルータのRTX1100を調達することにした。
まあルータが安かった(税込み3,240円)のも理由である。

接続構成は以下の通り。
注:図中のIP及びURLは実際の構成とは変えてある

20180401_150348
注:図中NB-BBRMはNP-BBRMの間違い

最初はRTX1100はマルチホーミングとルーティングのみの設定予定であった。
しかしNP-BBRMのサーバ公開機能で設定できるLAN側IPアドレスが同一サブネットしか設定できない為、RTX1100のLAN2/LAN3にNATを設定する事となった。

以下RTX1100の設定

RTX1100# show config
# RTX1100 Rev.8.03.94 (Thu Dec 5 19:06:16 2013)
# MAC Address : 00:00:00:00:00:00, 00:00:00:00:00:00, 00:00:00:00:00:00,
# Memory 32Mbytes, 3LAN, 1BRI
# main: RTX1100 ver=e0 serial=XXXXXXXXX MAC-Address=00:00:00:00:00:00 MAC-Addr
ess=00:00:00:00:00:00 MAC-Address=00:00:00:00:00:00
# Reporting Date: Apr 1 14:41:08 2018
login user NetAdmin *
timezone +09:00
console prompt RTX1100
ip route default gateway 192.168.000.1 hide gateway 192.168.001.1 hide
ip local forward filter 200
ip lan1 address 192.168.010.254/24
ip lan1 proxyarp on
ip lan2 address 192.168.000.254/24
ip lan2 nat descriptor 1
ip lan3 address 192.168.001.254/24
ip lan3 nat descriptor 2
pp select anonymous
pp bind tunnel1
pp auth request mschap-v2
pp auth username pptp-user1 XXXXXXXXXXX 192.168.010.100
pp auth username pptp-user2 XXXXXXXXXXX 192.168.001.100
ppp ipcp ipaddress on
ppp ipcp msext on
ppp ccp type mppe-any
ppp ipv6cp use off
ip pp mtu 1280
pptp service type server
pp enable anonymous
tunnel select 1
tunnel encapsulation pptp
pptp tunnel disconnect time off
tunnel enable 1
ip filter 100 pass-log 192.168.001.254 * gre * *
ip filter 101 pass-log 192.168.001.254 * tcp 1723 *
ip forward filter 200 1 gateway 192.168.001.1 filter 100 101
nat descriptor type 1 masquerade
nat descriptor address outer 1 192.168.000.253
nat descriptor static 1 1 192.168.000.10=192.168.010.10 1
nat descriptor static 1 2 192.168.000.20=192.168.010.20 1
nat descriptor masquerade static 1 1 192.168.000.254 tcp telnet
nat descriptor type 2 masquerade
nat descriptor address outer 2 192.168.001.253
nat descriptor static 2 1 192.168.001.10=192.168.010.10 1
nat descriptor static 2 2 192.168.001.20=192.168.010.20 1
nat descriptor masquerade static 2 1 192.168.001.254 tcp 1723
nat descriptor masquerade static 2 2 192.168.001.254 gre
nat descriptor masquerade static 2 1 192.168.001.254 tcp telnet
pptp service on
RTX1100#

検索すれば大体の設定の解説は出てくると思うので、検索では見つからず最後まで嵌った点だけ解説。
検索で見つからないのは恐らくこんな変則的なネットワークを構築している人が非常に少ないためだろう。

1.RTX1100のLAN3へのVPN(PPTP)接続が不安定
これで3日ほど悩んだ。

上記構成ではRTX1100はWAN2(network-wan2.iobb.net)からLAN3へのVPN接続を受け付ける設定と成っている。
しかし実際に接続してみるとスマホからのVPN接続は問題ないが、PCからのVPN接続は失敗する現象が発生した。
LAN3と同じセグメントにPCを用意してVPN接続すると問題なく接続できる。

ちなみにWAN1(network-wan1.iobb.net)側はPPTPサーバ専用ルータ(ETX2-R)でVPNを張っているのでRTX1100のLAN2はVPN接続に関係していない。

失敗時のRTX1100のログでは

2018/04/01 14:22:49: TUNNEL[01] PPTP connection is established: xxx.xxx.xxx.xxx
2018/04/01 14:22:49: PP[ANONYMOUS01] PPTP Connect
2018/04/01 14:23:19: PP[ANONYMOUS01] Give up establishing PPP/LCP in REQSENT
2018/04/01 14:23:19: PP[ANONYMOUS01] PPTP Disconnecting, cause [PPP: LCP Timeout]
2018/04/01 14:23:27: PP[ANONYMOUS01] PPTP Disconnected, cause [PPP: LCP Timeout]
2018/04/01 14:23:27: TUNNEL[01] PPTP connection is closed: xxx.xxx.xxx.xxx

となっておりPPP/LCPのコネクション開設が失敗している。
これはパケットモニタでも確認しており、PCからのリクエストパケットに対し無応答となっている。

色々切り分けを進めている際にWAN2へVPN接続に行くとWAN1のVPN経由でRTX1100のLAN2ポートへ接続しているTELNETコネクションがフリーズすることに気が付いた。
WAN1のVPN接続も影響受けているようでVPNを再接続しないとRTX1100へアクセス出来なくなっていた。

WAN2からVPN接続時のRTX1100のNATテーブルを調べてみた結果は以下の通り。

RTX1100# show nat descriptor address
参照NATディスクリプタ : 1, 適用インタフェース : LAN2(1)
外側アドレス(Outer) 内側アドレス(Inner) TTL(秒)
192.168.000.10 192.168.010.10 static
192.168.000.20 192.168.010.20 static
Masqueradeテーブル
外側アドレス: 192.168.000.253 ポート範囲=60000-64095 2個使用中
プロトコル 内側アドレス 宛先 マスカレード TTL(秒)
TCP 192.168.001.254.1723 XXX.XXX.XXX.XXX.50713 60000 857
TCP 192.168.001.254.1723 XXX.XXX.XXX.XXX.50703 60000 7
TCP 192.168.000.254.23 192.168.000.211.16414 23 900
TCP 192.168.000.254.23 *.*.*.*.* 23 static
--------------------- - ---
参照NATディスクリプタ : 2, 適用インタフェース : LAN3(1)
外側アドレス(Outer) 内側アドレス(Inner) TTL(秒)
192.168.001.10 192.168.010.10 static
192.168.001.20 192.168.010.20 static
Masqueradeテーブル
外側アドレス: 192.168.001.253 ポート範囲=60000-64095 1個使用中
プロトコル 内側アドレス            宛先 マスカレード TTL(秒)
PPTP 192.168.001.254.29131 XXX.XXX.XXX.XXX.50719 60000 900
TCP 192.168.001.254.1723 XXX.XXX.XXX.XXX.50719 1723 895
TCP 192.168.001.254.1723 XXX.XXX.XXX.XXX.50713 1723 47
PPTP 192.168.001.254.* *.*.*.*.* * static
TCP 192.168.001.254.1723 *.*.*.*.* 1723 static
--------------------- - ---
有効なNATディスクリプタテーブルが2個ありました
RTX1100#

本来NATディスクリプタ2で処理されるはずの192.168.001.254.1723のパケットがNATディスクリプタ1で処理されている。
恐らくWAN2側からきたPPP/LCPのリクエストパケットに対する応答がRTX1100起動の新規セッション扱いとなるのか、マルチホーミング機能によりWAN1側へ振り分けられているようである。

これに対応するため以下のフィルタを追加した。
ip filter 1 pass 192.168.001.254 * * * *

このフィルタをLAN3に適用。
ip route default gateway 192.168.000.1 hide gateway 192.168.001.1 filter 1 hide

要するにLAN3のIPアドレスがソースIPのパケットはLAN3で処理しなさいと言う事である。
この設定を追加後、WAN2からのVPN接続は全く問題なくなった。

追記:その後の確認でVPN接続以外ダメになっていた。
これを解決するにはPBR的な処理が必要となる。
依って以下のような修正を実施した。

・ルータ内部が発信元のパケットを処理するためのローカルフォワードとその対応フィルタを定義
ip local forward filter 200

・PPTPサーバIPがソースとなるPPTPパケットを転送処理するフィルタを定義
 これはPPTPで使用されるTCP Port1723とgreを指定(動作確認の為、logオプションを使用)
ip filter 100 pass-log 192.168.001.254 * gre * *
ip filter 101 pass-log 192.168.001.254 * tcp 1723 *

・ip filter 100と101に合致するパケットをWAN2ルータへ転送するフィルタを定義
ip forward filter 200 1 gateway 192.168.001.1 filter 100 101

この修正によってLAN2へ転送・処理されていたLAN3からのPPTPパケットが正しくWAN2ルータへ転送されるようになった。
また最初の修正で機能しなくなっていたWAN2からのWEBサーバへの接続やマルチホーミングによるセッション振り分けも正常に機能するようになった。

以下がWAN2側からLAN3へのVPN接続時のログである。
フィルターが働いてWAN2側ルータへPPTPのパケットが転送されていることがわかる。

2018/04/01 22:40:53: TUNNEL[01] PPTP connection is established: xxx.xxx.xxx.xxx
2018/04/01 22:40:53: PP[ANONYMOUS01] PPTP Connect
2018/04/01 22:40:53: Forward Filter Passed local 1 100 192.168.1.1 proto=47 192.168.1.254 > xxx.xxx.xxx.xxx
2018/04/01 22:40:58: same message repeated 14 times
2018/04/01 22:40:58: PP[ANONYMOUS01] Call detected from user 'pptp-user1'
2018/04/01 22:40:58: Forward Filter Passed local 1 100 192.168.1.1 proto=47 192.168.1.254 > xxx.xxx.xxx.xxx
2018/04/01 22:40:58: same message repeated 14 times
2018/04/01 22:40:58: PP[ANONYMOUS01] PPP/IPCP up (Local: 192.168.10.254, Remote: 192.168.10.100)
2018/04/01 22:40:58: Forward Filter Passed local 1 100 192.168.1.1 proto=47 192.168.1.254 > xxx.xxx.xxx.xxx

2.RTX1100のNATポート(LAN2/LAN3)へのTELNET接続の動作
最初NATのOuter IPアドレスをLAN2とLAN3のIPを使っていた。

nat descriptor address outer 1 primary

この設定だと各NATディスクリプタに以下の設定を入力してもtelnet接続できなかった(筈)。

nat descriptor masquerade static 1 1 192.168.000.254 tcp telnet
nat descriptor masquerade static 1 1 192.168.001.254 tcp telnet

この為、NATのOuter IPアドレスを別途専用IPアドレス(192.168.0.253/192.168.1.253)とした。

nat descriptor address outer 1 192.168.000.253
nat descriptor address outer 1 192.168.001.253

これでも192.168.00X.254へはtelnet接続できないが何故か192.168.00X.253へはtelnet接続できる。
しかしこの状態で

nat descriptor masquerade static 1 1 192.168.000.254 tcp telnet
nat descriptor masquerade static 1 1 192.168.001.254 tcp telnet

の設定を外すと外部からtelnet接続はできなくなる。
この状態でもWAN2のVPN経由だと192.168.001.254へはtelnet接続が可能。
これは恐らくWAN2からのVPN経由だとLAN3のNAT処理に引っかからない為かと思われる。

ちなみにLAN1のポートはNATを使っていないので普通に接続できる。
取り敢えず繋がればよいので深く追求していないが、今一つすっきりしないところである。

|

« USB-TXS USB-TXC Windows10動作確認纏め記事 | トップページ | kancolleSniffer導入覚書 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/99274/66562676

この記事へのトラックバック一覧です: RTX1100のマルチホーミング機能を使用して自宅サーバを2つのWAN(URL)で公開してみるテスト:

« USB-TXS USB-TXC Windows10動作確認纏め記事 | トップページ | kancolleSniffer導入覚書 »