2021年5月8日土曜日

自宅のネットワーク環境のNVR510の設定(抜粋,小型ONU接続,v6プラス固定IP,ひかり電話)

現在の私の自宅のネットワーク環境のNVR510の設定です。
小型ONU接続+v6プラス固定IP+ひかり電話というかなりマニアックな構成になっています。

抜粋版でIPアドレスなどは修正してあります。

環境は以下のような感じ。
ローカルネットワーク192.168.62.0/23
NVR510ローカル側アドレス192.168.62.1
VPNサーバ192.168.62.200ポート開放。
クライアントIP:192.168.63.1-5
DLNAサーバ192.168.62.201ポート開放。
v6プラス固定IP
IPv4アドレス
111.111.111.111
インタフェースID2222:2222:2222:2222
BRアドレス3333:3333:3333:3333::3333
ひかり電話の電話番号0333333333


ローカルネットワークアドレスが通常の/24ではなく、/23なのかというと、VPNサーバがクライアントに割り当てるIPアドレス192.168.62.xxxにできないからです。NVR510がDHCPで配布するIPアドレスは、192.168.62.xxx(62=00111110b)で、VPNクライアントのIPアドレスは、192.168.63.xxx(63=00111111b)なので、ネットワークマスクを/23(255.255.254.0)にすればまとめて扱えます。

以下は、NVR510の設定です。全部をコマンドでやるのは大変なので、Web GUIである程度設定してから差分をコマンドで設定した方が良いと思います。

ngn type onu1 ntt

NGNとの接続設定。ひかり電話を使うのでntt。小型ONU接続の場合はlan2ではなくて、onu1。


 ip lan1 address 192.168.62.1/23
NVR510のローカル側のIPアドレス設定

ip onu1 address dhcp
WAN側のIPv4アドレスをDHCPで取得。ひかり電話を使う場合には必須。

ipv6 route default gateway dhcp onu1
ipv6 prefix 1 dhcp-prefix@onu1::/64
ipv6 lan1 address dhcp-prefix@onu1::2222:2222:2222:2222/64
ipv6 lan1 prefix change log on
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
ipv6 onu1 dhcp service client

IPv6の設定。ひかり電話を使っているのでDHCPv6-PDの設定。v6プラス固定IPの場合、インタフェースIDに指定されたものを使わないと(=IPv6アドレスに指定したものを使わないと)、BRがv6プラス通信してくれません。


ipv6 lan1 mld router version=2
ipv6 onu1 mld host version=2
IPv6マルチキャストの設定。ひかりTV用です。

ip route default gateway tunnel 1
tunnel select 1
 tunnel encapsulation ipip
 tunnel endpoint address 3333:3333:3333:3333::3333
 ip tunnel mtu 1460
 ip tunnel tcp mss limit auto
 ip tunnel nat descriptor 1000
 tunnel enable 1
nat descriptor type 1000 masquerade
nat descriptor address outer 1000 111.111.111.111
nat descriptor masquerade incoming 1000 discard 
nat descriptor masquerade static 1000 1 192.168.62.200 tcp 55555
nat descriptor masquerade static 1000 2 192.168.62.201 udp 30000-60000
IPv4は、tunnel 1(v6プラス固定IP)を使います。v6プラス固定IPだと、いわゆるポート開放も簡単。

dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.62.10-192.168.62.201/23
dhcp scope bind 1 192.168.62.200 ethernet xx:xx:xx:xx:xx:xx
dhcp scope bind 1 192.168.62.201 ethernet yy:yy:yy:yy:yy:yy
dhcp client release linkdown on
DHCPサーバの設定。2つサーバはIP固定に。

tunnel select 1
 ip tunnel secure filter out 1000 1001 1002 1999 dynamic 10000 10001 10002 10003 10004 10005 10006 10007
ip filter 1000 reject * 192.168.62.0/23 * * *
ip filter 1001 reject * * udp,tcp 135,netbios_ns-netbios_ssn,445 *
ip filter 1002 reject * * udp,tcp * 135,netbios_ns-netbios_ssn,445
ip filter 1999 pass * * * * *
ip filter dynamic 10000 * * ftp
ip filter dynamic 10001 * * domain
ip filter dynamic 10002 * * www
ip filter dynamic 10003 * * smtp
ip filter dynamic 10004 * * pop3
ip filter dynamic 10005 * * submission
ip filter dynamic 10006 * * tcp
ip filter dynamic 10007 * * udp

 IPv4 outフィルターの設定。ファイル共有などだけブロックして後はスルーさせます。後述しますが、in側のフィルターは基本全ブロックで、動的フィルターで通過させます。

 

tunnel select 1
  ip tunnel secure filter in 2000 2001 2002 2003 2004 2999
ip filter 2000 reject 192.168.62.0/23 * * * *
ip filter 2001 pass * 192.168.62.0/23 icmp * *
ip filter 2002 pass * 192.168.62.200 tcp * 55555
ip filter 2003 pass * 192.168.62.201 udp * 30000-60000
ip filter 2999 reject * * * * * 

IPv4 inフィルターの設定。動的フィルターを使うのでICMPと開放したポート以外は全部拒否。

ipv6 onu1 secure filter out 3000 3001 3999 dynamic 30001 30002 30003 30004 30005 30006 30007 30008
ipv6 filter 3000 reject-log * * udp,tcp 135,137-139,445 *
ipv6 filter 3001 reject-log * * udp,tcp * 135,137-139,445
ipv6 filter 3999 pass * * * * *
ipv6 filter dynamic 30001 * * ftp syslog=off
ipv6 filter dynamic 30002 * * domain syslog=off
ipv6 filter dynamic 30003 * * www syslog=off
ipv6 filter dynamic 30004 * * smtp syslog=off
ipv6 filter dynamic 30005 * * pop3 syslog=off
ipv6 filter dynamic 30006 * * submission syslog=off
ipv6 filter dynamic 30007 * * tcp
ipv6 filter dynamic 30008 * * udp

 IPv6 outフィルターの設定。IPv4と基本同じ。


ipv6 onu1 secure filter in 4000 4001 4002 4003 4999
ipv6 filter 4000 pass * * icmp6 1,2,3,4,129,130-255
ipv6 filter 4001 reject * * icmp6 *
ipv6 filter 4002 pass * * 4
ipv6 filter 4003 pass * * udp * 546
ipv6 filter 4999 reject-log * * * * *

IPv6 inフィルターの設定。
ルール4002はv6プラスのパケットを通過させるために必要。

dns private name NVR510
dns host lan1
dns service fallback on
dns server dhcp onu1
dns server select 100000 dhcp onu1 edns=on any flets-east.jp
dns server select 100001 dhcp onu1 edns=on any iptvf.jp
dns server select 100002 2001:4860:4860::8888 edns=on 2606:4700:4700::1111 edns=on any .
dns server select 100003 2001:4860:4860::8844 edns=on 2606:4700:4700::1001 edns=on any .
dns server select 100004 dhcp onu1 edns=on any .
dns private address spoof on
dns notice order dhcp me
dns notice order dhcpv6 me
dns notice order msext me

DNSの設定。flets-east.jpとiptvf.jpはフレッツ網のDNSで処理します。これを入れないと、ひかりTVのSTBが起動しません。それ以外のDNS参照は、Google Public DNSとCloudflare DNSを使うようにしていて、念のため最後にフレッツ網のDNSを参照するようにしています。


analog wait dial timer 1 2
analog sip arrive permit 1 myname
analog sip call myname 1 sip:0333333333
analog sip arrive permit 2 off
analog sip call permit 2 off
analog supplementary-service pseudo call-waiting
analog extension emergency-call-dial type normal-number
analog extension dial prefix sip prefix="9#"
analog extension dial prefix port=1 ngn onu1
analog extension dial prefix port=2 ngn onu1
sip use on

 アナログ電話の設定。Web GUIで設定したものそのままです。

2020年8月15日土曜日

NVR510のGUIからv6プラス固定IPの設定をしても通信できない場合の対処方法

 【要約】
NVR510のGUIからv6プラス固定IPの設定をしても通信できない場合、GUIが余計な設定を付与している場合があるのでそれを削除しましょう。

---

YAMAHA NVR510からはv6プラス固定IPの設定ができるようになっていますが、設定してもIPv6通信はできるけど、IPv4通信ができない場合があります。
CONFIGを確認して、以下の設定がある場合は、これを削除するとIPv4通信できるようになると思います。
ipv6 lan2 address dhcp
または
ipv6 onu1 address dhcp


2020年7月12日日曜日

高いBS-GS2008を買わなくても、ひかりTVマルチキャスト問題を軽減できる「かもしれない」

【要約】
ひかりTVのマルチキャスト問題は、BS-GS2008を買えば確実に改善するけど、BS-GS2008は高いので、手元にスイッチングハブが余っているなら試してみる価値があるかも。

---

【構成1】








【構成2】








この2つの構成で、BS-GS2008のMLDスヌーピングをOFF、トラフィック制御もOFFにした場合、つまり、単なるスイッチングハブ状態でも、ネットワーク負荷はなぜか圧倒的に構成2の方が低かったです。
「ひかりTV」(ケーブルテレビ番組)を見ているときは、普通に通信できていました。ただ、「地デジ」を見ているときは、通信不可では無いですが、かなりの通信負荷がかかっていました。

BS-GS2008はスマートスイッチとしては圧倒的に安いんですが、それでも1万円は超えるので結構高いです。なので、手元にスイッチングハブが余っているなら、試してみる価値はあるかな?と思います。もしかすると、環境によってはある程度、問題を軽減できるかもしれないです。

(1) ルータには、STBとスイッチングハブだけをつなげる
(2) STB以外の機器はハブにぶら下げる

スイッチングハブを買ってまで試すことでは無いです。買うなら、BS-GS2008を買いましょう。その方が確実ですので。

ひかりTVのマルチキャストでネットワーク負荷が上がる問題をMLDスヌーピングではない方法で解決した

【要約】
ひかりTVのマルチキャスト問題はMLDスヌーピングで解決するのが一般的だけど、マルチキャストのトラフィック制御でも解決できるという話

---
ひかりTVを使っているLANでハブを使うと、マルチキャストのパケットがネットワーク全体に送信されてネットワーク負荷が上がる問題があって、その解決方法で有名なのがMLDスヌーピングが使えるスマットスイッチを使う方法です。

前住んでいたところのネットワーク環境だと、MLDスヌーピングを使わなくても、若干ネットワーク負荷が上がるなぁぐらいだったのですが、新居のネットワーク環境だと、MLDスヌーピングが効いていないと、全くといっていいほど通信ができなくなります。

MLDスヌーピングが効いていれば問題にならないと言えばそうなのですが、この場合以下のような問題があります。

(1) スマートスイッチの状態がリセットされると、MLDスヌーピングの学習が終わるまではほぼ通信不可
(2) ひかりTVの「ひかりTV」(ケーブルテレビの番組)だけを見ている場合は、MLDスヌーピングの学習が終わっていれば問題ないですが、「地デジ」を見ると、学習し直しになってその間通信不可になる。「ひかりTV」と「地デジ」は別のマルチキャストとして扱われるようで、「地デジ」はさらにチャンネル毎にも別マルチキャスト。

(2)が特に問題で、ひかりTVのチャンネル切り替えをやると、その都度MLDスヌーピングの学習が終わるまで、インターネットとの通信が止まってしまい、かなり困った状態になりました。

そこで、MLDスヌーピングでは無い方法で問題を解決することにしました。
解決方法ですが、まずネットワークの構成を変えました。

【変更前】

【変更後】

変更前は、ルータ側のLANポートは1つしか使用せず、全部の通信をハブに渡して、それから機器に分岐していたのですが、変更後はひかりTVのSTBだけルータのLANポートに直接つなぎ、他の機器はハブにつなぐことにしました。

この状態だと、STBとハブにマルチキャストが常に飛ぶ状態になるので、ネットワークの負荷は大きいままです。そこで、ハブ(BS-GS2008)の設定で、ルータとつながるポートのマルチキャストパケットのトラフィック上限を下げました(BS-GS2008だと、詳細設定のトラフィック制御のマルチキャストを無制限 → 128p/s に。BS-GS2008のトラフィック制御は、ポートに入ってくるデータに対して効くようです)。

この設定によって、STB側でチャンネル切り替えをやっても、インターネットとの通信が止まることが無くなりました。

ただ、よく分からないことが2つあります。

(1) 変更後の構成だと、STBの電源OFFで、DLNAも使ってないのに、ひかりTVのマルチキャストが続く場合がある。10Mbpsぐらい帯域の無駄。
(2) 変更後の構成で、トラフィック制御せずに、MLDスヌーピングの設定をしても、(学習が終われば)ネットワークの負荷は減るはずなんですが、なぜか負荷が下がらなかった。

理由が分からないのですが、とりあえず問題になるまでは放置です。

2020年7月11日土曜日

引っ越しして、回線がむちゃくちゃ高速になりました

同じ町内で引っ越しました。

元々のマンションは光回線が引けましたがVDSLだったので、どんなに頑張っても80Mbpsが限界でした。引っ越すに当たって、光コンセントが付いているところを探したら近所にありました。

引っ越しに伴って、回線やプロバイダの契約も見直しました。

前の回線・プロバイダは、@niftyの光コラボレーションを使っていましたが、新しいところは、フレッツ光(ギガマンション・スマートタイプ ミニ 光配線方式)+オープンサーキットにしました。一部ポート開放をしたかったので、v6Direct/固定IP1コースにしています。

ルータはYAMAHAのNVR510を引き続き使います。新居の回線工事で、業者の人が持ってきたHGWはRS-500KIでした。これは、小型ONUが付いている機種なので、小型ONU部分を抜いて、NVR510につなぎました。HGWは1回も使わずにしまい込まれました。

で、回線速度ですが、以下のような感じです。
一番下は朝の5時。上3つは夜です。

アップロードの方が若干怪しい数値が出るときがあるんですが、ダウンロードは夜でも非常に速度が出ています。

大量にダウンロード・アップロードする人間でもないので、回線はほとんど遊んでいることになるんですが、ストリーミングとかリアルタイム性のある通信は安定するようになりました。回線の使用状況を見ていると、たまに突発で100Mbpsぐらいの通信が発生することがあるんです。前の回線だと、その段階で上限を超えてしまって、通信が止まる場合がありましたが、新居の回線だと何事も無い場合が多いです。

むちゃくちゃ高速になった回線ですが、大きな欠点があります。
それは、大手のプロバイダの倍ぐらいの金額がかかると言うこと。
フレッツ光の料金としてNTTに払っているお金の段階で、普通の回線・プロバイダ込みの料金ぐらいします。それに加えて、プロバイダ料金がかかります。

まあ、スピードとお金の天秤ですね。

2019年5月26日日曜日

Windowsの標準機能だけを使って、ファイルをソートしてコピーする

 Windowsのエクスプローラーを使ってフォルダの中のファイル一覧を見ているときはソートされた状態で表示されているので気にならないと思うのですが、実際のファイルシステムの中は、結構バラバラで保存されています。
 エクスプローラーでファイルをコピーすると、そのバラバラの順番でファイルコピーが実行されるので、コピー先のファイルシステムの中もバラバラになります。
 普通は問題にならないと思うのですが、一部の音楽プレーヤーやカーナビなどは、そのファイルシステムの順番で音楽を再生してしまうので、思ったように曲が再生されないなどの問題が起きます。
 解決方法として、専用のソフトを使ってファイルシステムを直接並び替えるという方法もあるのですが、標準の方法でもないのでリスクもあり、リスク無しで解決しようとすると、ファイルをソートした順番でコピーするということになります。
 ソートしながらコピーもフリーウェアなどを使ってもいいのですが、Windowsの標準機能だけでも実現することができます。

ということでバッチファイルを作成してみました。

【SortCopy.bat】

echo off
setlocal enabledelayedexpansion
for /F "usebackq delims==" %%i in (`SortCopyEscape.bat %1`) do (

set SRC=%%i
set DEST=!SRC:%1=%2!

echo F | xcopy /F /Y !SRC! !DEST! >nul
echo copy !SRC! → !DEST!
)
endlocal


【SortCopyEscape.bat】

@echo off
for /F "usebackq delims==" %%i in (`dir /S /B /A:-D %1 ^| SORT`) do (

call :REPLACE "%%i"
)
exit /b

:REPLACE
set TMP=%1
echo %TMP:!=^!%
exit /b


 使い方は、2つのファイルをカレントディレクトリにコピーして、

 SorrtCopy <コピー元フォルダ> <コピー先フォルダ>

 です。
 自由に使ってもらってかまいませんが、使用したことで起きた結果について責任を取りませんので、各自の責任でお願いします。

2019年3月16日土曜日

[Synology DiskStation] Hyper Backup で Google Drive に保存したバックアップファイルをPCで直接見る方法

Synology DiskStation の Hyper Backup を使うと、他のディスクドライブだけじゃなくて、Google Driveなどのクラウドストレージにもバックアップを取ることができますが、ファイルが圧縮された形式になっているため、そのままではバックアップしたファイルを参照することができません。

ファイルを参照するには、Hyper Backup Explorerを使用する必要がありますが、Hyper Backup ExplorerはローカルディスクとSynology C2 Backupしか参照することができないので、Google Driveに保存されているバックアップファイルをPCで直接見るには、以下の方法でやる必要があります。

(1) Google Driveからファイルを全部ダウンロードして、Hyper Backup Explorerを使用する。
xxxx.hbk ディレクトリ毎まとめてダウンロードして、その中の SynologyHyperBackup.bkpi をHyper Backup Explorer で開きます。
この方法だと、Google Driveから全ファイルをダウンロードする必要があるので結構大変です。

なので、

(2) ドライブファイルストリームを使う
この方法がちょっと手軽です。
ドライブファイルストリームを使うと、Google DriveがWindowsのファイルシステムに直接マウントされるので、その中の SynologyHyperBackup.bkpi をHyper Backup Explorerで開きます。
ドライブファイルストリームは一種のネットワークドライブなんですが、ドライブレターが割り当てられるので、Hyper Backup Explorerからはローカルディスク扱いです。
一部のファイルのリストアであれば、こちらの方が短時間ですむと思います。