BRouterでサイクリングルートマップを編集する

無料でルートマップを作成する

そろそろ新しいナビが欲しい

私は2014年に発売されたユピテルASG-CM14をいまだに使っています。手頃な値段のナビが出てきたので買い替えたい気持ちはあるのですが。

ルートマップを作成する方法

ASG-CM14はスマホアプリとの連動機能が無いのでPCでルートマップを作る必要がありますが、Stravaや自転車NAVITIMEなど使い勝手が良いものは有料になってしまいました。たまに使うマップだけのためにサブスクを契約するのはためらわれます。

kyomo.jp

無料でルートマップを作成する方法

無料でやるのはひと手間が必要です。

agyay.hatenablog.com

agyay.hatenablog.com

無料でルートマップを作る方法 その2

会社内のSMSで嘆いたらドイツの同僚がこのサイトを教えてくれました。

brouter.de

なかなか使いやすいです。ユーザー登録も必要ありません。Googleマップと同様に始点と終点を指定すると自動でルートを提案してくれます。

ProfileをFastbikeからSafetyに切り替えると自転車道や川沿いの道を優先的に選びます。長距離のルートはいくつかに分割してProfileを使い分けると思いどおりのルートにしやすいです。

経由地を追加することもできます。

地図はOpenStreetMapです。航空写真に切り替えることもできます。

獲得標高も表示できます。

 

GMAPS2GPX Chrome拡張機能でGoogleマップのルートをGPXファイルにエクスポートしてサイコンで読み込む

GoogleマップのルートをGPXファイルにエクスポートする(2022年〜)

Maps to GPX Converterが寄付を募られています

以前、こういう記事を書きました。

agyay.hatenablog.com

GoogleマップのルートをGPXに変換するにはMaps to GPX Converterを使っていました。

mapstogpx.com

とても使いやすいサービスです。しかし、最近どこかの大きな会社がこのサービスを自動で呼び出し始め、そのせいで数千ドル(Google Maps APIの課金だと思われます)を払う羽目になってしまったそうです。すでに問題の会社のIPアドレスはブロックしたそうですが、既に掛かってしまった費用を賄う必要があるということで高精度なデータを使うには2023年5月から寄付が必須になっています。これまでお世話になったので寄付はやぶさかではないのですが、高精度データが使えるのは寄付したその日限りというのが苦しいです。

GoogleマップのルートをGPXにエクスポートするChrome 拡張機能があった

gmaps2gpx.com

この拡張機能Chromeに追加します。追加した後、GoogleのIDでサインインします。

Googleマップを使うときはGMaps2GPX経由で開きます。

後は普通のGoogleマップと同様にルートを編集できます。編集が終わったらGPXをエクスポートできます。

エクスポートされたGPXファイルのフォーマット

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" creator="getwebooster.com" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd">
      <metadata>
        <link href="https://gmaps2gpx.extensionsbox.com/">
          <text>GMaps2GPX</text>
        </link>
        <!--desc>Map data ©2022</desc-->
        <!--copyright author="Google Inc">
          <year>2022</year>
          <license>https://developers.google.com/maps/terms</license>
        </copyright-->
        <time>2023-04-16T08:55:42.851Z</time>
      </metadata>
      <wpt lat="35.6678029" lon="139.47735319999998">
        <name>〒183-0027 東京都府中市本町1丁目10−10</name>
        <desc>〒183-0027 東京都府中市本町1丁目10−10</desc>
      </wpt>
      <wpt lat="35.3004016" lon="139.48009009999998">
        <name>〒251-0036 神奈川県藤沢市江の島2丁目3</name>
        <desc>〒251-0036 神奈川県藤沢市江の島2丁目3</desc>
      </wpt>
    <trk>
      <name>〒183-0027 東京都府中市本町1丁目10−10 to 〒251-0036 神奈川県藤沢市江の島2丁目3</name>
      <trkseg>
    
      <trkpt lat="35.6678029" lon="139.4773532">
        <name>TP0</name>
      </trkpt>
    
      <trkpt lat="35.6674309" lon="139.4776119">
        <name>TP1</name>
      </trkpt>
    
      <trkpt lat="35.6673992" lon="139.4776373">
        <name>TP2</name>
      </trkpt>
    
      <trkpt lat="35.6673467" lon="139.4776741">
        <name>TP3</name>
      </trkpt>

すべてのトラックポイントに名前要素が入っています。Googleマイマップ、TrailNoteだと問題なく読み込めます。

www.trail-note.net

しかし、ユピテルGPSサイクルコンピューターASG-CM14に読み込ませるとApplication Errorになり再起動してしまいます。そこで、これまで使っていたのと同じスクリプトで不必要な要素を取り除くと動作します。


cat $@ > re.txt
cat $@ |
sed -e 's/<\?xml.*\?>/<?xml version="1\.0" encoding\="UTF\-8"?>/g' |
# sed -e 's/<gpx.*>/<gpx>/g' |
sed -e 's/.*<wpt.*wpt>//g' |
sed -e 's/.*<metadata>//g' |
sed -e 's/.*<\/metadata>//g' |
sed -e 's/><ele>/>\n<ele>/g' |
sed -e 's/.*<ele.*ele>//g' |
sed -e 's/.*<link.*>//g' |
sed -e 's/.*<\/link>//g' |
sed -e 's/.*<text.*text>//g' |
# sed -e 's/.*<\/trkpt>//g' |
sed -e 's/.*<desc>//g' |
sed -e 's/.*<\/desc>//g' |
sed -e 's/.*<time.*time>//g' |
sed -e 's/.*<year.*year>//g' |
sed -e 's/.*<author>//g' |
sed -e 's/.*<\/author>//g' |
sed -e 's/.*<license.*license>//g' |
sed -e 's/.*<number.*number>//g' |
sed -e 's/.*<name>TP.*<\/name>//g' |
sed -e 's/.*<keywords>//g' |
sed -e 's/.*<\/keywords>//g' |
sed -e 's/.*<bounds.*>//g' |
sed -e 's/0"/"/g' |
sed -e 's/0"/"/g' |
sed -e 's/0"/"/g' |
sed -e 's/.*<\!\-\-desc.*desc\-\->//g' |
sed -e 's/.*<\!\-\-copyright.*>//g' |
sed -e 's/.*<\/copyright\-\->//g' |
sed -e 's/.*<\!\-\-url.*url\-\->//g' |
sed -e 's/.*<name><\!\[CDATA\[/<name>/g' |
sed -e 's/><name>/>\n<name>/g' |
sed -e 's/\]\]><\/name>/<\/name>/g' |
sed -e 's/.*<\!\[CDATA\[.*\]\]>//g' |
sed -e 's/[[:cntrl:]]//g' |
grep -v '^\s*$' >result.gpx
exit

 

法人用アクセスポイント(Netgear WAX610)を家庭で使う


家庭用の無線ルーターを法人用のアクセスポイントに変える

TP-Link Archer A10の調子が悪いです。ルーター機能をYAMAHA RTX810に任せて無線だけを使い、さらに毎日電源リセットすることでかなり安定しましたが、それでも時々ハングアップします。NETGEAR WAX610が2022年8月まで22,000円だったところ、18,000円まで値下がりしていたので思わず買ってしまいました。

rakuten:netgear-official-store:10000153:detail

製品登録

保証期間は5年ですが、購入から3ヶ月以内にオンライン登録しないと保証期間が製造日から1年以内になってしまいます。登録は

という手順を踏む必要があります。各ページの内容は重複があり入力が面倒です。

Insight Cloud アカウント登録

WAX610にはInsight Pro サブスクリプション(120円/台・月)が1年間無料で付いてきます。なお、Basicは過去に有った無料版で今は使えません。2台以上でメッシュWiFIを構築するにはInsight サブスクリプションが必須ですが、1台だけならスタンドアロンモードでも問題ありません。しかしせっかくなので1年間はinsiteを利用します。

Insight Pro アカウント有効化手順 Captive Portal/Contents Filtering/Premium から Pro 移行 | Answer | NETGEAR Support

  • 新規登録(1年間無料を使用して作成する場合)

に従ってアカウントを作ります。Insightのアカウントは製品登録とは別なのでもう一度同じような内容を登録する必要があります。法人用なので組織やロケーションを登録する手順が混じりますが、ここは適当な名前を入れておきます。

7. 必要に応じて、組織>ロケーションを選択後右上にある +(プラス)マークを押して、1年間無料対象のデバイスのシリアルを入力して追加します。

はアクセスポイントを接続してから行います。

設置方法

アクセスポイントは普通、天井または壁に取り付けるのですが、賃貸なので釘が打てません。ディスプレイ設置をアームに変えたときに余ったスタンドにブラケットを取り付けました。部屋間の有線LANも無く机の上に一台置くだけにPoEインジェクタを使うのはもったいないので、電源アダプターで給電します。

インストールガイド

https://www.downloads.netgear.com/files/GDC/WAX610/WAX610_IG_JP.pdf

の3つの方法があります。

A. Insiteクラウドポータルで設定する

初めて法人用を使って戸惑ったところだけ書いておきます。

  1. ロケーションの追加
    家庭用のルーターには無い概念です。今回は一つだけロケーションを登録します。
  2. VLAN
    まだ研究中です。デフォルトでManagement VLANが存在しますが、管理用以外のVLANを追加していません。また、在宅勤務用と家庭用のVLANを分けたいのですが、RTX810でタグVLANを使うと性能が足りないという情報が見つかります。
  3. バイスの追加
    アクセスポイントのシリアル番号を入力するとネットワーク上にあるアクセスポイントを探し出してくれます。その後自動的にファームウェアがアップグレードされますが、最大10分とあるとおりかなり時間がかかります。
b. インサイトアプリで設定する

特にスマホでやりたいこともないので使っていません。

C. スタンドアロンで設定する (ローカル管理)

WiFiで接続して設定する方法が書いてありますが、有線でPCを繋いで設定することもできます。PCと一対一で繋ぐなどネットワーク上にDHCPサーバがない状態ならばWAX610のアドレスは192.168.0.100です。http://192.168.0.100/に接続するとhttpsではないとブラウザが警告がするはずですが無視して繋ぎます。

設定の一部

完全な正解かどうかまだわかりません。

System / Advanced / General

ルーターとアクセスポイントだけの簡単な構成のネットワークなので、これらはすべてDisableにします。

  • Spanning Tree Protocol : Disable
  • Network Integrity Check : Disable
  • IGMP Snooping : Disable
Wireless / Basic / WLAN Settings
  • Authentication : WPA3/WPA2 Personal
    Amazon EchoやスマートリモコンがWPA2にしか対応していないので mixモードにします。
    ただ、WAX610をmixモードにしていると、Windows10のPCが最初は問題なく接続できるのですが、時間が立つとインターネットに接続できなくなります。PCではWiFiは接続済み、しかしインターネット接続なしと表示されるだけなのでなかなか原因がわからなかったのですが、WAX610のログと見比べてやっと鍵の更新のせいだとわかりました。ワイヤレス内蔵のノートPC、USBのWiFi子機を付けたデスクトップの2台とも同じ症状なのでWindows10特有の問題かもしれません。WPA2ではなくWPA3で接続するように設定したら不具合が治まりました。なお、Windows11のPC, macOS VenturaはWPA3がデフォルトのようで、こちらはMixモードでも問題が起きていません。
  • 802.11w : Option
    スマートリモコンなど一部の機器がPMFに対応していないため、PMF (Protected Management Frames) の使用をオプションにします。

Wireless / Basic / Wireless Settings
  • Wireless Mode : 11ax
    11axにしておくと、11ng, 11ac, 11ax のどの機器も繋がりました。
Security / RASIUS Settings / Authentication Settings
  • Update Global Key : 1800
    Windows10 PCの接続が不安定なときは、鍵の更新間隔を0(更新しない)にすると安定するという記事がありましたが、PC側でWPA3に設定することで安定したので、セキュリティを考えてデフォルトのまま30分で更新するようにしています。
    ただ、ログを見ているとその他の機器(MACアドレスは伏せ字にしています)でも鍵の更新に失敗してから再接続しているものがあります。ちょっと様子を見ます。
Dec 12 20:18:22 nddmp[3336]: alarm : seqNo-[18416], level-[OTHER], info-[{"ip":"192.168.0.20","mac":"XX-XX-XX-XX-XX-XX","hname":"XX-XX-XX-XX-XX-XX","txR":"6 Mbps","rxR":"6 Mbps","ssid":"xxxxxx","dOs":"Unknown Device OS","dType":"Unknown Device Type","mode":"11AC","status":"Authenticated","bssid":"XX-XX-XX-XX-XX-XX","chnl":"100","chWidth":"20/40/80 MHz","rssi":"23","state":"QOS/HT/VHT","type":"wpa2","idle":"0","time":"00:00:00","txB":"141","rxB":"314","pmf":"none","vlanID":"1","Username":"Not Applicable","radio":"1"}]
Dec 12 20:18:22 nddmp[3336]: alarm : seqNo-[18415], level-[INFO], info-[XX-XX-XX-XX-XX-XX wireless client connected]
Dec 12 20:18:22 hostapd: wifi1vap0: STA xx:xx:xx:xx:xx:xx WPA: pairwise key handshake completed (RSN)
Dec 12 20:18:22 hostapd: wifi1vap0: STA xx:xx:xx:xx:xx:xx WPA: received EAPOL-Key frame (4/4 Pairwise)
Dec 12 20:18:22 hostapd: wifi1vap0: STA xx:xx:xx:xx:xx:xx WPA: sending 3/4 msg of 4-Way Handshake
Dec 12 20:18:22 hostapd: wifi1vap0: STA xx:xx:xx:xx:xx:xx WPA: received EAPOL-Key frame (2/4 Pairwise)
Dec 12 20:18:22 hostapd: wifi1vap0: STA xx:xx:xx:xx:xx:xx WPA: sending 1/4 msg of 4-Way Handshake
Dec 12 20:18:22 hostapd: wifi1vap0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: associated (aid 3)
Dec 12 20:18:22 configd[3265]: EEM: Received Event: NEW_STA_ASSOC_EEM
Dec 12 20:18:22 hostapd: wifi1vap0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: authenticated
Dec 12 20:18:18 nddmp[3336]: alarm : seqNo-[18414], level-[INFO], info-[XX-XX-XX-XX-XX-XX wireless client disconnected]
Dec 12 20:18:18 hostapd: wifi1vap0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: disconnected
Dec 12 20:18:18 hostapd: wifi1vap0: STA xx:xx:xx:xx:xx:xx WPA: group key handshake failed (RSN) after 4 tries
Dec 12 20:18:17 hostapd: wifi1vap0: STA xx:xx:xx:xx:xx:xx WPA: sending 1/2 msg of Group Key Handshake

DNS問い合わせが遅いのでRTX810のconfigを見直す

インターネットに時々接続できない

回線速度は十分なはずなのに、なぜかインターネットの接続が時々遅い気がします。PCだとよくわからないのですが、スマホだとDNS関係のエラーメッセージが一瞬出たあとに繋がるので、DNSの応答速度に問題がある気がします。この人と同じ状況かもしれません。

www.yokoweb.net

RTXのマニュアルを全部読み直してconfigを見直しました。最後にこのサイトで19/20になることを確認しました。ただしスコアがたまに下がってしまうことがあるので、まだどこかに問題があるかもしれません。

ipv6-test.com

 

最終形

no dns srcport
no dns static
no dns syslog resolv
dhcp scope option 1 dns=192.168.0.1,8.8.8.8,1.1.1.1
dns cache max entry 1024
dns cache use on
dns domain .
dns host lan1
dns notice order dhcp me server
dns private address spoof on
dns service recursive
dns service fallback on
dns server dhcp lan2
dns server select 1 dhcp lan2 any .
dns server select 2 2001:4860:4860::8888 2001:4860:4860::8844 any .
dns server select 3 pp 1 any . restrict pp 1
dns server select 4 8.8.8.8 1.1.1.1 any .

DHCPサーバーの設定

  • dhcp scope option 1 dns=192.168.0.1,8.8.8.8,1.1.1.1
    DHCPクライアントにDNSサーバのアドレスを配布することができる。
  • RTX810をリカーシブサーバーとして動作させるのならDTX810以外のアドレスを配布する必要はなさそう。
  • しかしEDNSを使う機器(Amazon Echoなど)はEDNS0に未対応のRTX810では問題が起こるとの情報もあり、気休めにセカンダリーにパブリックDNSを設定した。
    www.biwako.ne.jp
  • この記事を見るとさらにフィルタが必要になるかもしれないがとりあえず放置。fal.ms

DNSサーバー指定の優先順

  1. dns server select
    # まずはIPv4 over IPv6DNSを使う
    dns server select 1 dhcp lan2 any .

    #それがダウンしているときはIPv6のパブリックDNSを使う

    dns server select 2 2001:4860:4860::8888 2001:4860:4860::8844 any .

    # さらにダウンしているときはPPPoEのDNSを使う

    dns server select 3 pp 1 any . restrict pp 1

    # さらにダウンしているときは IPv4のパブリックDNSを使う
    dns server select 3 8.8.8.8 1.1.1.1 any .
  2. dns server
    今回は使わない
  3. dns server pp 1
    dns server selectを使わずにこれを指定してしまうとIPv4 over IPv6でもPPPoEのDNSサーバを使ってしまうので省略する。
  4. dns server dhcp lan2
    指定したインタフェースで DHCP サーバーから取得した DNS サーバーアドレスに対して問い合わせを行う

DNSの動作設定

  • dns host lan1
    オープンリゾルバーとして動作させないために、LAN1ポート側ネットワーク内からのアクセスだけを許可する

www.rtpro.yamaha.co.jp

外付けディスプレイの縦横を切り替える(Mac, Windows)

外付けディスプレイを2枚並べる

以前は外付けディスプレイを3枚使っていましたが、今は2枚に整理しました。ディスプレイスタンドもアームに替えたので机の上がかなりすっきりしました。

ディスプレイ間でウィンドウを移動する

デュアルディスプレイではウィンドウを簡単に移動できるようにすると作業がとても捗ります。LogicoolのマウスM590の親指ボタン2つにショートカットを割り当てました。

Windows

Logi Optionsでキーボードショートカットをマウスのボタンに割り当てます。

  • ウィンドウの画面間の移動:Win + Shift + Right、Left
  • ウィンドウの最大化・解除:Win + Up、Down
macOS

macOSにはウィンドウを別画面に移すキーボードショートカットが無いので Rectangle を使います。この用途だけなら有料版の Rectangle Pro でなくても無料版の Rectangle で足ります。

rectangleapp.com

ショートカットをマウスの親指ボタンに割り当てます。

  • 次のディスプレイ:Control + Option + Command + Right
  • フルスクリーン・解除:Command + Control + F

ディスプレイの縦横を切り替える

表示するコンテンツによってはディスプレイを縦向きにするほうが使いやすいことがあります。アームにしたおかげで縦横回すのは簡単になりました。ただし回すたびにコントロールパネルで表示方法を設定し直す必要があるのでフリーウェアで操作を簡単にします。なお、ジャイロセンサー搭載のディスプレイなら自動で表示を切り替えてくれるらしいです。

Windows

sourceforge.net

Windowsの設定でディスプレイの配置を変更します。

その状態でMonitor Profile Switcherのプロファイルを追加します。保存したプロファイルはマウスで選択しても良いですし、ホットキーを割り当てることも可能です。

macOS

DisplayPlacerというアプリを使います。github.com

DisplayPlacerはコマンドラインから呼び出す必要があるので、Automatorでさらに簡単に使えるようにします。下記の記事を参考にしました。

qiita.com今使っているMacbook Pro 2019にはTouch Bar があるので、これにクィックアクションボタンを追加します。

DisplayPlacerのdisplayplacer listコマンドで確認したコマンドをシェルスクリプトに貼り付けます。

 

インターネット環境を整える(4)

無線LAN環境の整備

ルーター無線LANアクセスポイントの構成にしたい

無線Wi-Fiルーターが頻繁にハングアップするのでルーター機能をRTX810に分担させました。ついでにアクセスポイントも業務用に替えたいのですが、ヤマハ製は高価です。BUFFALOは安いですが良い思い出がありません。

家庭用の無線LANルーターをアクセスポイントモードで使う

適当なアクセスポイントが見つかるまで、今までルータとして使っていたTP-Link Archer A10 AC2600 をブリッジモード(アクセスポイント)で使います。

www.tp-link.com

無線LANのハングアップ、輻輳、DFS対策

マンションはWiFiが混雑しています。WiFi Analyzerを使うと2.4GHz帯は20個、5GHz帯は8個のSSIDが検出できます。

internet.watch.impress.co.jp

5GHz帯は輻輳しにくいW53・W56のチャネルを使いたいのですが、これらのチャネルはDFSを検出するとW52に変更されてしまいます。今の住所だと120チャンネルが比較的DFSが起きにくいことを試行錯誤で見つけましたが、それでも数日で変更されてしまいます。常にクライアントが繋がっている状態なので一旦変更されると元のチャネルに戻りません。Archer A10のワイヤレススケジュール機能でオフ・オンすれば元のチャネルに戻すことができますが、少なくとも一時間はオフする設定にしかできないので不便です。そこでArcher A10のハングアップ対策も兼ねて毎朝4時にデジタルタイマーで再起動することにしました。これなら停波時間は数分で済みます。

Archer A10のDHCPサーバーを完全に無効にできない

Archer A10をブリッジモードにするとDHCPサーバー機能がグレーアウトします。しかし実は完全に無効にはなりません。

起動後のログを見ると

  1. A10がDISCOVERメッセージをブロードキャストする
  2. RTX810がIPアドレスをOFFERする
  3. A10がDHCPサーバー機能を無効にする
  4. A10がRTX810から提案されたIPアドレスをREQUESTする
  5. RTX810がA10のIPアドレスをACKする

となっています。ところがまれに1を始める前に無線LANのクライアントからDISCOVERメッセージを受け取ってしまうことがあり、そうするとA10がDHCPサーバーとして働いてクライアントにIPアドレスをOFFERしてしまいます。アドレス範囲は192.168.0.100〜に固定されているため、RTX810が192.168.0.xxxとは別のセグメントのIPアドレスになっているとこの無線LANのクライアントがインターネットに接続できなくなってしまいます。そこで、RTX810のアドレスは192.168.0.1にしました。

#再起動すると時刻は2018-10-26 09:00:00(GMT)になる
#他のDHCPサーバーを見つける前にDISCOVERを受け取るとIPアドレスをOFFERしてしまう
2018-10-26 09:00:41 [5] DHCPD: Recv DISCOVER from A1:B2:C3:D4:E5:F6
2018-10-26 09:00:41 [5] DHCPD: Send OFFER with ip 192.168.0.100
#他のDHCPサーバーを探す
2018-10-26 09:01:20 [5] DHCPC: Send DISCOVER with request ip 0.0.0.0 and unicast flag 0
#RTX810から192.168.00.99をOFFERされる
2018-10-26 09:01:20 [5] DHCPC: Recv OFFER from server 192.168.0.1 with ip 192.168.0.99
2018-10-26 09:01:20 [5] DHCPC: Send REQUEST to server 192.168.0.1 with request ip 192.168.0.99
2018-10-26 09:01:21 [5] DHCPC: Recv ACK from server 192.168.0.1 with ip 192.168.0.99 lease time 86400
#IPアドレスを192.168.00.99にして、DHCPサーバー機能を無効にする
2018-10-26 09:01:21 [5] DHCPC: LAN ip is changed, new ip = 192.168.0.99/255.255.255.0, old ip = 192.168.0.254/255.255.255.0.
2018-10-26 09:01:21 [5] DHCPC: Set AP ip to 192.168.0.99/255.255.255.0.
2018-10-26 09:01:21 [5] DHCPD: Disable AP's DHCP server because remote DHCP server is online.
#RTX810から時刻を受け取ったので以降のログの時刻(GMT)は正しい
2022-10-13 15:57:30 [5] DHCPC: Send REQUEST to server 192.168.0.1 with request ip 192.168.0.99
2022-10-13 15:57:31 [5] DHCPC: Recv ACK from server 192.168.0.1 with ip 192.168.0.99 lease time 86400

インターネット環境を整える(3)

逸般の誤家庭

個人で業務用機器を使っている家を「逸般の誤家庭」と呼ぶそうですが、誰も知りませんね。それはともかく、家庭用のルータはどれも不安定です。ログが貧弱で何が起こったのかわからないのもストレスです。

ヤマハルータ YAMAHA RTX810

RTX830は高いです。その点RTX810の中古なら5000円以下で手に入りますし、性能も1Gbpsのマンションタイプの光配線には十分です。

インターネット回線スピードテスト・通信速度測定 | USEN GATE 02

で測定すると上り・下りとも300Mbps程度のときにRTX810のCPUは10%です。

業務用ルータの利点

  • IPv6が安定する
  • ルータ一台でIPv6IPv4を併用できる
  • 無線LANの不具合が有線LANに影響しなくなる
  • ログが詳細なので不具合が起きたとき何が起きたかわかる
IPv6が安定する

NECバッファロー・TP-linkのルーターをRTX810に替えてから不具合は全く起きていません。

ルータ一台でIPv6IPv4を併用できる

楽天ひかりではIPv6で契約していても、IPv6が不安定なときはIPv4に切り替えることができます。明記されていませんが、IPv6IPv4を常時併用することも可能です。

network.mobile.rakuten.co.jp

家庭用ルータを2台繋いでIPv6IPv4を併用する方法もありますが、いろいろな制約があります。RTX810なら一台でIPv6IPv4を併用したり、障害時にIPv6からIPv4に自動的に切り替えることができます。

無線LANの不具合が有線LANに影響しなくなる

無線LANもまだ安定した家庭用製品に巡り合っていません。ルータと無線LANを別にすることで少なくとも有線LANに繋いだPCは無線LANの障害に影響されません。

不具合が起きたときにログが追える

家庭用ルータはログが簡素すぎて役に立ちません。

業務用ルータで面倒なこと

やはり設定はそれなりに面倒です。セキュリティにも気を使います。

フィルタ

この人はとにかくきっちりとフィルタを設定されています。

qiita.com

この人は基本を抑えつつシンプルなフィルタにされています。

www.marbacka.net

私はポート開放やVPNを使わないのでシンプルなフィルタにしました。ミスが無ければよいのですが。

# 2020/3/31にリリースされた現時点での最新版
# RTX810 Rev.11.01.34 (Tue Nov 26 18:39:12 2019)
# 実際のパスワードは異なる
login password hogehoge
administrator password blahblahblah
# IP configuration
ip routing process fast
ip route change log on
# weight0 hide で通常はIPv6, 異常時だけIPv4で通信するようにする
ip route default gateway tunnel 1 weight 1 keepalive 1 gateway pp 1 weight 0 hide
ip filter source-route on
ip filter directed-broadcast on
# keepaliveでClouldFlareのDNSにpingを打ってトンネル接続を監視する
ip keepalive 1 icmp-echo 1 3 1.1.1.1 log=off gateway-selection-rule=head
# IPv6 configuration
ipv6 prefix 1 ra-prefix@lan2::/64
# LAN configuration
# 無線LANルータのデフォルトIP 192.168.0.254にクラスを合わせておく
# 理由は次の記事に記載
ip lan1 address 192.168.0.1/24
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
# 不正アクセス検知をONにすると遅くなるという記事もあるが自分はほぼ影響なし
ip lan2 intrusion detection in on
ip lan2 intrusion detection
in default on reject=on
# フィルタ番号が参考にする記事ごとに違っているので注意して合わせる
ipv6 lan2 secure filter in 101030 101031 101032 101098
ipv6 lan2 secure filter out 101099 dynamic 101080 101081 101082 101083 101084 101085 101098 101099
ipv6 lan2 dhcp service client ir=on
# Provider Type configuration
provider type isdn-terminal
provider filter routing connection
# 名前は好みで付けて良い
provider lan1 name LAN:
provider lan2 name PPPoE/0/1/5/0/0/0:rakutenPPPoE
provider lan2 name ipv6 PRV/0/4/0/0/1/1:rakutenIpv6
# 時刻をntp.nict.jpに問い合わせる
provider ntpdate ntp.nict.jp
# PP configuration
pp disable all
pp select 1
pp name PRV/1/1/5/0/0/0:rakutenPPPoE
# PPPoEの接続を維持
pp keepalive interval 30 retry-interval=30 count=12
pp always-on on
pppoe use lan2
pppoe auto disconnect off
pp auth accept pap chap
# 実際のユーザ名とパスワードは異なる
pp auth myname ra123456789@m.rakutenbb.jp "password"
ppp lcp mru on 1454
ppp ipcp ipaddress on
ppp ipcp msext on
ppp ccp type none
ip pp mtu 1454
# フィルタ番号が参考にする記事ごとに違っているので注意して合わせる
ip pp secure filter in 100 101 198
ip pp secure filter out 199 dynamic 200 201 202 203 204 205 206
# 不正アクセス検知機能をONにする
ip pp intrusion detection in on
ip pp intrusion detection in default on reject=on
ip pp nat descriptor 1000
pp enable 1
# Provider information
provider set 1 rakutenPPPoE
provider dns server pp 1 1
provider select 1
# IPv6の設定(DS-Lite Xpass方式の場合)
# TUNNEL configuration
no tunnel enable all
tunnel select 1
tunnel name DS-lite
tunnel encapsulation ipip
# 楽天ひかりのAFTRアドレス
tunnel endpoint address 2001:f60:0:200::1:1
ip tunnel mtu 1460
# IPv4 over IPv6とPPPoEは同じフィルタを使う。不正アクセス検知もONにする
ip tunnel secure filter in 100 101 198
ip tunnel secure filter out 199 dynamic 200 201 202 203 204 205 206
ip tunnel intrusion detection in on reject=on
ip tunnel tcp mss limit auto
tunnel enable 1
# IP filter configuration
# ローカルアドレスへのパケットはすべて拒否
ip filter 100 reject 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 * * * *
# KeepAliveのためにエコー応答・エコー要求・TTP超過によるパケット破棄だけ通す
ip filter 101 pass * * icmp 0,3,11 *
# 外から内に向かうパケットは静的フィルタではすべて破棄
ip filter 198 reject * * * * *
# 内から外に向かうパケットはすべて許可
ip filter 199 pass * * * * *
# IP dynamic filter configuration
# ローカルからリクエストした通信の返信だけを動的フィルタで受ける
ip filter dynamic 200 * * domain
ip filter dynamic 201 * * www
ip filter dynamic 202 * * ftp
ip filter dynamic 203 * * smtp
ip filter dynamic 204 * * pop3
ip filter dynamic 205 * * tcp
ip filter dynamic 206 * * udp
# NAT Descriptor configuration
nat descriptor type 1000 masquerade
# IPv6のフィルタはYAMAHAルータのマニュアルから。
# IPv6 filter configuration
ipv6 filter 101030 pass * * icmp6 * *
ipv6 filter 101031 pass * * tcp * ident
ipv6 filter 101032 pass * * udp * 546
ipv6 filter 101098 reject * * * * *
ipv6 filter 101099 pass * * * * *
# IPv6 dynamic filter configuration
ipv6 filter dynamic 101080 * * ftp
ipv6 filter dynamic 101081 * * domain
ipv6 filter dynamic 101082 * * www
ipv6 filter dynamic 101083 * * smtp
ipv6 filter dynamic 101084 * * pop3
ipv6 filter dynamic 101085 * * submission
ipv6 filter dynamic 101098 * * tcp
ipv6 filter dynamic 101099 * * udp
# SYSLOG configuration
syslog debug on
# TFTP configuration
tftp host 169.168.0.110
# TELNETD configuration
telnetd host lan
# DHCP configuration
dhcp service server
dhcp server rfc2131 compliant except remain-silent use-clientid
dhcp scope 1 192.168.0.11-192.168.0.99/24 expire 24:00
# MACアドレス(実際は異なる)で無線LANのIPアドレスを予約しておく
dhcp scope bind 1 192.168.0.99 0a:1b:2c:3d:4e:5a
# DNS configuration
dns host lan1
dns service fallback on
dns server dhcp lan2
dns server select 500000 dhcp lan2 any .
dns server select 500001 pp 1 any . restrict pp 1
dns private address spoof on
# Schedule configuration
# 3:05に時刻合わせ
schedule at 1 */* 03:05 * ntpdate ntp.nict.jp
# YNO Agent configuration
yno use off