(新)タイトルいつ決めるのさ

何かの参考にして頂ければ幸いです。

NVR500 の IP電話設定を So-netフォンから SMARTalk に変更  - 其の弐 - 敢えての二重ルーター化で SIPアタック阻止?

So-netフォンが 2021年5月末を以てサービス終了になってしまうということで、代わりに楽天モバイルの「SMARTalk」を契約し、それ用に NVR500 の設定を書き換えて使っていたのですが、どうも「SIPアタック」が以前より酷 いようで、度々通信不能に追い込まれるようになってしまいました。「鎖国フィルタ」なるものを作って対応している方もおられるようですが、その前にちょっと試してみたいことがあったので、NVR500 の設定を書き換えてみることにしました。

これまでは先日書いた下の記事のように RTX830 の LAN から NVR500 の LAN にぶら下げただけで IP電話を利用していました。この構成だと NVR500 の余った LANポートをスイッチングハブとして使う事ができるので、気軽に同じネットワークセグメント上に他の機器を繋ぐことができたのですよね。

ところが、SMARTalk の設定に書き換えてから「SIPアタック」の影響で電話が使えない状態になってしまうことが頻発したので、RTX830 配下の NVR500 をローカルルータとする(所謂二重ルーター構成)ように変えてみることにします。

ただ。この構成にすると NVR500 配下のネットーワーク上の機器と RTX830 のネットワーク上の機器との間で通信させるには NAT越えの為の設定が別途必要になります。幸い今のところ LANポート数には余裕があるので今回は目を瞑って電話が使えることを優先し、必要に迫られた場合にはまた改めて方法を考えることにしました。

ネットワーク構成図 先日の記事でも書いたとおり、前提となる現在のうちのネットワーク構成は大体左の図のような感じになっています。インターネット接続には主に So-net の「v6プラス」を利用しているのですが、そのまま NVR500 を配下に置いただけでは IP電話を利用出来ないので RTX830 にフィルター型ルーティングの設定を入れて NVR500 への通信は IPv6 IPoE + IPv4 PPPoE で行うようにさせています。ちょっと面倒な構成になっていますがこれは後から IP電話を使えるようにしたためで、v6プラスを使いつつ IP電話も使う環境を最初から構築するのであれば NVR510 の方を使えばこの部分を 1台で済ますことも可能です。
RTX830 と NVR500 の接続については下の図の右側のように変更しました。左側の構成では NVR500 をただのスイッチングハブとしてしか使っていないので NVR500 本体のみ IPv4 PPPoE で接続され、配下の機器については RTX830 と同一のネットワーク上でv6プラスでの接続となっていましたが、右側の構成では NVR500 配下の機器は全て IPv4 PPPoE での接続となります。尚、今回は NVR500 の管理画面にはアクセスできるようにしていますが、相互のネットワーク間での通信まではできるようにしていません。

ルーター接続図

RTX830 側の設定については下の記事で So-netフォンを使う為に行っていた設定から何も弄っていません。 NVR500 の IPv4アドレスを固定し、フィルター型ルーティングを使って PPPoE で通信するようにさせています。(PPPoE がダウンしている場合はv6プラスで通信するようにもさせています。)

設定を始める前に、NVR500 に新しいファームウェアがリリースされて「Rev.11.00.41(2020.3.31)」が最新版となっていたのでとりあえずアップデートしておきました。(といっても今回の修正はDoS攻撃への脆弱性対応のみだそうです。古い機種なので今後は修正が行われるとしても重大なセキュリティアップデートくらいになるでしょう。)



それでは NVR500 の設定を始めることにします。なるべくゴミを残したくないので一旦初期化しました。工場出荷状態に戻した直後の NVR500 の IPアドレスは「192.168.100.1/24」となります。このまま既存の RTX830 のネットワークに繋いでしまうとややこしいことになるのでさっさと NVR500 の IPアドレスを変更し、RTX830 側のネットワークから NVR500 の管理画面に入れるようにするまではノートPC を使って作業しました。こういう時に古くてもノートPC が 1台あると非常に便利です。

初期化直後の NVR500 の config は以下の通り。

ip lan1 address 192.168.100.1/24
telnetd host lan
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
dns private name setup.netvolante.jp
analog supplementary-service pseudo call-waiting
analog extension dial prefix line
analog extension dial prefix sip prefix="9#"

ここから更に不要なものを消去して必要最小限の config にし、RTX830 の下に置くためにネットワークセグメントを変えて予め IPアドレスが被らないように以下の様にしたものをベースとすることにします。

ip lan1 address 192.168.200.1/24
telnetd host lan
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.200.2-192.168.200.50/24

RTX830 の LANポートと NVR500 の WANポートを接続したらネット接続と RTX830 側から NVR500 の「かんたん設定ページ」にアクセス出来るようにしていきます。まずは初期設定(?)から。

・設定諸々
  security class 2 on off off
  console prompt "[NVR500] "
  login timer 600
  syslog notice on
  syslog debug on

・WAN側にIPアドレスを付与(RTX830側とセットで固定)
  description lan2 WAN
  ip lan2 address 192.168.100.4/24

・経路設定等(RTX830に向けます)
  ip routing process fast
  ip route default gateway 192.168.100.1
  ip filter source-route on
  ip filter directed-broadcast on
  description lan1 LAN

・DNSサーバーはRTX830を使用
  dns server 192.168.100.1
  dns private address spoof on

・自動時刻補正
  schedule at 1 */* 01:30:00 * ntpdate ntp.nict.jp syslog

続いてネット接続ができるようにします。

IPv4(RTX830 を使った PPPoE)での接続
  ip keepalive 1 icmp-echo 10 5 192.168.100.1
  ip lan2 nat descriptor 1000
  nat descriptor type 1000 masquerade
  nat descriptor address outer 1000 192.168.100.4
  nat descriptor masquerade incoming 1000 discard

・下の行を入れておくと NVR500 の「簡単設定ページ」のトップでネット接続状態が表示されます。
  provider lan2 name PRV/0/1/5/0/0/0:(名前は任意で)

・IPv6 IPoE での接続
  ipv6 prefix 1 ra-prefix@lan2::/64
  ipv6 lan1 prefix ra-prefix@lan2::/64
  ipv6 lan1 rtadv send 1

フィルターは RTX830 の方で設定しているので不要な気もしますが一応入れておきました。

ip filter 101000 reject 10.0.0.0/8 * * * *
ip filter 101001 reject 172.16.0.0/12 * * * *
ip filter 101002 reject 192.168.0.0/16 * * * *
ip filter 101003 reject 192.168.200.0/24 * * * *
ip filter 101010 reject * 10.0.0.0/8 * * *
ip filter 101011 reject * 172.16.0.0/12 * * *
ip filter 101012 reject * 192.168.0.0/16 * * *
ip filter 101013 reject * 192.168.200.0/24 * * *
ip filter 101020 reject * * udp,tcp 135 *
ip filter 101021 reject * * udp,tcp * 135
ip filter 101022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 101023 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 101024 reject * * udp,tcp 445 *
ip filter 101025 reject * * udp,tcp * 445
ip filter 101030 pass * * icmp * *
ip filter 101031 pass * * established * *
ip filter 101032 pass * * tcp * ident
ip filter 101033 pass * * tcp ftpdata *
ip filter 101034 pass * * tcp,udp * domain
ip filter 101035 pass * * udp domain *
ip filter 101036 pass * * udp * ntp
ip filter 101037 pass * * udp ntp *
ip filter 101098 reject-nolog * * established
ip filter 101099 pass * * * * *
ip filter 500000 restrict * * * * *

ip filter dynamic 101080 * * ftp
ip filter dynamic 101081 * * domain
ip filter dynamic 101082 * * www
ip filter dynamic 101083 * * smtp
ip filter dynamic 101084 * * pop3
ip filter dynamic 101085 * * submission
ip filter dynamic 101098 * * tcp
ip filter dynamic 101099 * * udp

ipv6 filter 3010 pass * * icmp6 * *
ipv6 filter 3011 pass * * tcp * ident
ipv6 filter 3012 pass * * udp * 546
ipv6 filter 4000 reject * * * * *
ipv6 filter 5000 pass * * * * *

ipv6 filter dynamic 3500 * * ftp
ipv6 filter dynamic 3501 * * domain
ipv6 filter dynamic 3502 * * www
ipv6 filter dynamic 3503 * * smtp
ipv6 filter dynamic 3504 * * pop3
ipv6 filter dynamic 3505 * * submission
ipv6 filter dynamic 3508 * * tcp
ipv6 filter dynamic 3509 * * udp

ip lan2 secure filter in 101003 101020 101021 101022 101023 101024 101025 101030 101032
ip lan2 secure filter out 101013 101020 101021 101022 101023 101024 101025 101099 dynamic 101080 101081 101082 101083 101084 101085 101098 101099

ipv6 lan2 secure filter in 3010 3011 3012 4000
ipv6 lan2 secure filter out 5000 dynamic 3500 3501 3502 3503 3504 3505 3508 3509

状態や通話履歴などが見れると便利なので RTX830側から NVR500 の管理画面に入れるようにします。

httpd host any
nat descriptor masquerade static 1000 1 192.168.200.1 tcp www

ip filter 101081 pass * 192.168.200.1 tcp * www
ip lan2 secure filter in 101003 101020 101021 101022 101023 101024 101025 101030 101032 101081(←「101081」を追加)

続いて IP電話の設定をしていきます。

IP電話を使う準備
  sip use on
  sip log on
  nat descriptor sip 1000 on
  nat descriptor masquerade static 1000 2 192.168.200.1 tcp 5060
  nat descriptor masquerade static 1000 3 192.168.200.1 udp 5060
  nat descriptor masquerade static 1000 4 192.168.200.1 udp 5004-5043

  ip filter 101082 pass * 192.168.200.1 tcp * 5060
  ip filter 101083 pass * 192.168.200.1 udp * 5060
  ip filter 101084 pass * 192.168.200.1 udp * 5004-5043

  ip lan2 secure filter in 101003 101020 101021 101022 101023 101024 101025 101030 101032 101081 101082 101083 101084
   (↑←こちらも「101082~101084を追加)

SMARTalk の設定

・アナログ回線は使いません
  pstn use off

・TEL1ポートのみ使用、自己SIPアドレスへのみ着信許可、発信時のプレフィックス無し
  analog use 1 off
  analog sip arrive permit 1 myname
  analog sip call myname 1 sip:(SMARTalk SIPアカウント)
  analog sip call display name 1 NVR500
  analog use 2 off
  analog extension dial prefix sip server=1

・IP電話サーバーの設定
  sip server 1 (SIPサーバーアドレス) register udp sip:(SIPアドレス) (SIPアカウント) (SIPパスワード)
  sip server display name 1 (SMARTalk電話番号)

・ナンバーディスプレイ機能を有効化
  analog arrive number display 1 on

ひかり電話もまだ解約していないので使えるようにしておきます。HGW側の設定については「こちらの記事」の「PR-S300NE 側の設定」を参照ください。

・自己SIPアドレスを登録
  analog sip arrive myaddress 1 1 sip:5

・プリフィックスを設定。「9#」を押してからダイヤルすることでひかり電話での発信となる。
  analog extension dial prefix sip server=2 prefix="9#"

・IP電話サーバーの設定
  sip server 2 192.168.1.1 register udp sip:5@192.168.1.1 (ユーザー名) (パスワード)
  sip server session timer 2 300
  sip server display name 2 (ひかり電話番号)

以上の設定で、
 1. 発信時に「9#」を押してから電話を掛けることでひかり電話経由で発信
     (緊急電話番号(110、119 など)や 0570 などの番号が使える)
 2. 直接電話番号を入力した場合は SMARTalk で発信
という使い分けができるようにしている点は So-netフォンを使っていた頃と同じです。

世代が古いから仕方ありませんが、やはり NVR500 では config が 1組しか保存できないというのは色々試しながら設定する時にはちょっと不便ですね。この状態で 1週間程使っていますが、今のところ SIPアタックは完全に遮断できているようなのでこのままもうしばらく様子を見てみることにします。