自宅のネットワーク構成
RTX830 を買ってからだいぶ時間が経ってしまったんですが、最近やっと前に使っていたルーターと入れ替えて常時稼働させました。
入れ替えるまでにやってみたことの一部は記事にまとめています。
記事に書いたこと以外にも色々 RTX830 の機能を試しながら家のネットワーク構成をどうしようか考えてたんですが、一旦決まったので記事にまとめてみます。
構成
家の回線は「フレッツ光ネクスト マンションタイプ」、プロバイダは @nifty で v6 プラスを使っていますが、ネットワークはこんな構成にしました。
ルーターは RTX830、L2 スイッチは SWX2210-8G、Wi-Fi AP は 2 台とも BUFFALO の無線 LAN ルーターをアクセスポイントモードで使っています。
そしてマルチプル VLAN で 3 つのネットワークを作っています。
- 家用ネットワーク
- 仕事用ネットワーク
- IoT 用ネットワーク
最初は IoT 用ネットワークは作らないつもりだったんですが、仕事用ネットワークに使おうとした Wi-Fi AP が IPv6 に対応していない?のか IPv6 で通信ができなかったので有線でつなぐことにしました。それで 1 台余ったので、せっかくなので IoT 用のネットワークを作って活用することにしました。
この構成にしたのは他にも次のようなことをしたかったからです。
家用と仕事用のネットワークを分離する
個人用の PC は寝ているとき以外はほぼ常時起動してますが、物を買うときはある程度調べてから決めますし、プログラミングをするので結構ググります。また、フリーソフトを探して使ったりもします。そうするとたまに怪しい広告(PC が危険な状態ですといってソフトをインストールさせようとするものなど)が表示されるサイトを開いてしまうことがあります。PC にはセキュリティソフトとしてノートンを入れていますが、それでも 100% 安全ということはありません。
そしてコロナの影響で家でリモートワークしてますが、社内ネットワークにアクセスするために VPN でつないで作業することがあります。同じネットワークだと、個人用 PC がウイルスに感染 → 仕事用 PC に感染 → 社内に広がってしまう、という可能性があります。
なのでその可能性を低くするためにネットワークを分離して互いにアクセスできないようにしました。
分離する方法としてはルーターのポートベース VLAN やタグ VLAN を使い、フィルタで互いのアクセスを遮断する方法がありますが、今回は L2 スイッチのマルチプル VLAN 機能を使いました。理由は、
- LAN マップを使いたい
- ポートベース VLAN / タグ VLAN だと 1 つのネットワークでしか IPv6 通信ができない
という感じです。LAN マップは使えなくても困らないけどせっかくなので使いたい、くらいの理由です。
2 は次の話になります。
家用と仕事用の両方のネットワークの端末で IPv6 通信ができる
最初は家用と仕事用のネットワークをポートベース VLAN で分けていたんですが、仕事用ノート PC の通信が全て IPv4 になっているのに気付きました。
理由を調べると、どうも自分の環境だと IPv6 を 2 つ以上のネットワークで使えないようでした。フレッツの契約でひかり電話ありの場合は IPv6 プレフィックスが /56 なのに対し、光電話なしの場合は /64 になるようなのですが、自分はひかり電話なしの契約なのでプレフィックスは /64、つまりネットワークが 1 つしか割り当てられてませんでした。
なので家用のネットワークにしか IPv6 アドレスが割り当てられておらず、仕事用ネットワークには IPv4 アドレスのみが割り当てられた状態になっていました。
ただ、せっかく IPv6 使える回線なので仕事用ネットワークでも使いたいと思って調べると、マルチプル VLAN ならルーターからすると 1 つのネットワークになり、かつスイッチでポート間の通信を制限できると分かったので、L2 スイッチを買って構成しました。
余談1
ひかり電話ありなら複数 IPv6 ネットワークを RTX830 で作れるのかというと制限があるようです。
RTX810 で VLAN と IPv6 を両立させる方法 | RANDOM.SOFT
コメントでポートベース VLAN ならできたという報告がありますが、タグ VLAN ではそもそも IPv6 が使えないらしいです。
余談2
v6 プラスでは IPv4 で通信するときに MAP-E という技術が使われますが、使えるポート数が通常より限られており、自分の場合は 240 個でした。
単純に考えると全てのネットワークで合計で 240 個の NAT セッションしか作れないことになりますが、RTX830 にはポートセービング IP マスカレードという機能があり、実際には 240 個以上の NAT セッションを作れるようです。
IPv4(PPPoE)が必要なときにすぐに使える
v6 プラスでは IPv4 で使えるポートが制限されているのでオンラインゲームなどによってはうまく通信できないことがあります。私の場合は PS4 のボイスチャットが利用できませんでした。
今はオンラインゲームをやってないのでもうあまり重要ではないんですが、必要になったときに調べて設定しても間に合わないかもしれないのですぐに利用できるように設定だけしています。
PS4 に固定 IP アドレスを割り当てるときに、IPv4 over IPv6 でよいときと IPv4(PPPoE)が必要なときで DHCP で割り当てる IP アドレスを変え、その IP アドレスでどちらを使うかを決めるようにしています。(記事の最後のコンフィグのコメントを参照)
ルーターに設定した機能
ルーターには基本的な機能に加えて以下の機能を設定しています。
全部なくても困りはしないのですがせっかくなので設定しています。
QoS は lan2 には Dynamic Traffic Control を設定して動画などで使われる UDP パケットの帯域を多く取りました。
また、lan1 では優先制御で UDP パケットを優先しています。QoS は帯域が広い側から狭い側へパケットを送信するとき効果的なようですがダウンロード時にも設定しています。回線速度測定を実行しながら YouTube で 4K/60FPS の動画を再生しているときに再生が止まりにくくなった気がしたので一応効果あるのか?と思って設定しています。
最後に
業務用ルーターを買って勉強していたら最後には L2 スイッチも買ってしまいましたが、ある程度満足できるネットワーク構成になりました。本当は Wi-Fi AP も 1 つにまとめられるといいんですが、RTX830 がタグ VLAN で IPv6 を使えるようにならないと(そしてひかり電話を契約してタグ VLAN 使える業務用 AP を買わないと)できなさそうなので今はこれでよいかなと思ってます。
また、今回コンフィグを作るために色々ネットワークのことを調べたおかげでネットワークへの苦手意識が結構無くなりました。とくにフィルタの設定を適当にせずできるだけ理解するようにしたおかげか、Linux のファイアーウォールの設定に面倒くささを感じにくくなった気がします。
お金は少しかかりましたが仕事にも役立つ分野なのでいい投資になったと思ってます。
コンフィグ
RTX830 と SWX2210-8G のコンフィグです。
RTX830
# RTX830 Rev.15.02.17 (Fri Jul 10 09:59:21 2020) # # ユーザー # login password encrypted {{LOGIN_PASSWORD_ANONYMOUS_ENCRYPTED}} administrator password encrypted {{ADMIN_PASSWORD_ENCRYPTED}} user attribute connection=serial,telnet,remote,ssh,sftp,http gui-page=dashboard,lan-map,config login-timer=3600 # # ゲートウェイ # # IPv4 パケットは基本 tunnel 1 に、VPN および 特定の端末のみ pp 1 にルーティングする ip route default gateway tunnel 1 gateway pp 1 filter 401002 401003 401004 401005 401080 # # WAN # description lan2 IPv6 # ひかり電話を利用しないためルーター広告によるプレフィックスを使用する ipv6 prefix 1 ra-prefix@lan2::/64 ipv6 lan2 secure filter in 601000 601001 601002 600099 ipv6 lan2 secure filter out 601099 dynamic 611000 611001 611002 611003 611004 611005 611006 ipv6 lan2 dhcp service client ir=on # 侵入検知 ip lan2 intrusion detection in on ip lan2 intrusion detection in ip on reject=on ip lan2 intrusion detection in ip-option on reject=on ip lan2 intrusion detection in fragment on reject=on ip lan2 intrusion detection in icmp on reject=on ip lan2 intrusion detection in udp on reject=on ip lan2 intrusion detection in tcp on reject=on ip lan2 intrusion detection in ftp on reject=on ip lan2 intrusion detection in winny on reject=on ip lan2 intrusion detection in share on reject=on ip lan2 intrusion detection in default off ip lan2 intrusion detection out on ip lan2 intrusion detection out ftp on reject=on ip lan2 intrusion detection out winny on reject=on ip lan2 intrusion detection out share on reject=on ip lan2 intrusion detection out default off # QoS(Dynamic Traffic Control) # 動画や音声で使われる UDP の帯域を確保する。 speed lan2 100m queue lan2 type shaping queue lan2 default class 2 queue lan2 class property 4 bandwidth=50m,100m queue lan2 class property 2 bandwidth=1m,100m queue lan2 class filter list 10 11 # アップロード時にデフォルトの 200 では足りないので増やす queue lan2 length 2000 # # IPv4(PPPoE) # pp select 1 description pp IPv4(PPPoE) # キープアライブ設定 pp keepalive interval 30 retry-interval=30 count=12 # 常時接続するかどうか pp always-on on # PPPoE を使う LAN インターフェース pppoe use lan2 # PPPoE セッションを自動切断しない pppoe auto disconnect off # 受け入れる認証方式 pp auth accept pap chap # 送信する認証情報 pp auth myname {{PP_AUTH_MYNAME}} {{PP_AUTH_PASSWORD}} # MRU設定 # 指定値はルーターが生成した値 ppp lcp mru on 1454 # IPアドレスのネゴシエーションをする ppp ipcp ipaddress on # IPCPのMS拡張オプションを使う # dns server のために必要 ppp ipcp msext on # パケットを圧縮しない ppp ccp type none # 受信方向フィルタの 400000-400003 は後ろの許可するパケットの送信元がプライベートアドレスのパケットを破棄するために必要 ip pp secure filter in 400000 400001 400002 400003 401000 401001 401002 401003 ip pp secure filter out 400004 400005 400006 400007 400008 400009 400010 400011 400012 400013 402000 402001 401099 dynamic 411000 411001 411002 411003 411004 411005 411006 411007 # 侵入検知 ip pp intrusion detection in on ip pp intrusion detection in ip on reject=on ip pp intrusion detection in ip-option on reject=on ip pp intrusion detection in fragment on reject=on ip pp intrusion detection in icmp on reject=on ip pp intrusion detection in udp on reject=on ip pp intrusion detection in tcp on reject=on ip pp intrusion detection in ftp on reject=on ip pp intrusion detection in winny on reject=on ip pp intrusion detection in share on reject=on ip pp intrusion detection in default off ip pp intrusion detection out on ip pp intrusion detection out ftp on reject=on ip pp intrusion detection out winny on reject=on ip pp intrusion detection out share on reject=on ip pp intrusion detection out default off # QoS(Dynamic Traffic Control) # 動画や音声で使われる UDP の帯域を確保する。 queue pp default class 2 queue pp class filter list 11 queue pp length 2000 # ネットボランチ netvolante-dns hostname host pp server=1 {{NET_VOLANTE_HOST}} # NAT変換の適用設定 ip pp nat descriptor 2000 # 相手先を有効にする pp enable 1 # # VPN # pp select anonymous description pp VPN pp bind tunnel2 pp auth request chap-pap pp auth username {{VPN_USER}} {{VPN_PASSWORD}} ppp ipcp ipaddress on ppp ipcp msext on ip pp remote address pool dhcp ip pp mtu 1258 pp enable anonymous # # v6 プラス(IPv4 over IPv6)用トンネル # tunnel select 1 description tunnel IPv4(v6プラス) # v6プラスでの IPv4 over IPv6 トンネルでは MAP-E を使う tunnel encapsulation map-e # MTU 設定 # IPv6 のデフォルトの MTU が 1500, IPv6 ヘッダーが 40 オクテットのため ip tunnel mtu 1460 # 受信方向フィルタの 400000-400003 は後ろの許可するパケットの送信元がプライベートアドレスのパケットを破棄するために必要 ip tunnel secure filter in 400000 400001 400002 400003 401000 401001 ip tunnel secure filter out 400004 400005 400006 400007 400008 400009 400010 400011 400012 400013 402000 402001 401099 dynamic 411000 411001 411002 411003 411004 411005 411006 411007 # 侵入検知 ip tunnel intrusion detection in on ip tunnel intrusion detection in ip on reject=on ip tunnel intrusion detection in ip-option on reject=on ip tunnel intrusion detection in fragment on reject=on ip tunnel intrusion detection in icmp on reject=on ip tunnel intrusion detection in udp on reject=on ip tunnel intrusion detection in tcp on reject=on ip tunnel intrusion detection in ftp on reject=on ip tunnel intrusion detection in winny on reject=on ip tunnel intrusion detection in share on reject=on ip tunnel intrusion detection in default off ip tunnel intrusion detection out on ip tunnel intrusion detection out ftp on reject=on ip tunnel intrusion detection out winny on reject=on ip tunnel intrusion detection out share on reject=on ip tunnel intrusion detection out default off # QoS queue tunnel class filter list 11 # NAT 変換の適用設定 ip tunnel nat descriptor 1000 # トンネルを有効にする tunnel enable 1 # # VPN 用トンネル # tunnel select 2 description tunnel VPN tunnel encapsulation l2tp ipsec tunnel 102 ipsec sa policy 102 1 esp aes-cbc sha-hmac ipsec ike keepalive use 1 off ipsec ike local address 1 192.168.3.1 ipsec ike nat-traversal 1 on ipsec ike pre-shared-key 1 text {{VPN_PRE_SHARED_KEY}} ipsec ike remote address 1 any l2tp tunnel disconnect time off # Pixel3 は L2TP キープアライブに対応していないらしいので無効にする l2tp keepalive use off l2tp keepalive log on l2tp syslog on ip tunnel tcp mss limit auto tunnel enable 2 # # LAN # ip lan1 address 192.168.3.1/24 # LAN1 の IP アドレス # LAN2 のプレフィックスに ::1 を付け足した IP アドレスとする ipv6 lan1 address ra-prefix@lan2::1/64 # LAN1 にルーター広告を送信する # オプション情報をホストに自動的に取得させる ipv6 lan1 rtadv send 1 o_flag=on ipv6 lan1 dhcp service server # L2SW でマルチプル VLAN を構成してネットワークを分割するため不要なポートは無効化する lan shutdown lan1 2 3 4 # # LAN 側 QoS(優先制御) # 動画や音声で使われる UDP を最優先する。 # speed lan1 1000m queue lan1 type priority queue lan1 default class 2 queue lan1 class filter list 10 11 # # フィルターの設定 # UDP, FTP, DNSなどは静的フィルタではなく動的フィルタを用いる # # [フィルタ番号体系] # 各桁の意味は以下の通り # # 4xxxxx: IPv4 # 6xxxxx: IPv6 # x0xxxx: static # x1xxxx: dynamic # xx00xx: reject # xx10xx: pass # xx20xx: restrict # IPスプーフィング/LAND/Smurf攻撃への対策 # WAN側から入ってくるパケットの送信元がプライベートアドレスのものを破棄する # 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16はプライベートネットワークアドレス ip filter 400000 reject 10.0.0.0/8 * * * * ip filter 400001 reject 172.16.0.0/12 * * * * ip filter 400002 reject 192.168.0.0/16 * * * * ip filter 400003 reject 192.168.3.0/24 * * * * # WAN側に出ていくパケットの送信先がプライベートアドレスのものを破棄する ip filter 400004 reject * 10.0.0.0/8 * * * ip filter 400005 reject * 172.16.0.0/12 * * * ip filter 400006 reject * 192.168.0.0/16 * * * ip filter 400007 reject * 192.168.3.0/24 * * * # RPCで使われるポートを拒否 # WAN側からのアクセス/WAN側へのアクセスは不要 ip filter 400008 reject * * udp,tcp 135 * ip filter 400009 reject * * udp,tcp * 135 # Windowsのファイル共有で使われるNetBIOS関連を拒否 # WAN側からのアクセス/WAN側へのアクセスは不要 ip filter 400010 reject * * udp,tcp netbios_ns-netbios_ssn * ip filter 400011 reject * * udp,tcp * netbios_ns-netbios_ssn # Windowsのダイレクト・ホスティングSMBサービス関連を拒否 # WAN側からのアクセス/WAN側へのアクセスは不要 ip filter 400012 reject * * udp,tcp 445 * ip filter 400013 reject * * udp,tcp * 445 ip filter 400099 reject * * * * * # ICMPパケットを通す # LANからWANへ送信したICMPパケットの応答を通すために必要 ip filter 401000 pass * 192.168.3.0/24 icmp * * # メールサーバーからの認証パケットを許可する ip filter 401001 pass * 192.168.3.0/24 tcp * ident # VPN 用パケットを通す ip filter 401002 pass * 192.168.3.1 esp * * ip filter 401003 pass * 192.168.3.1 udp * 500,4500,1701 ip filter 401004 pass 192.168.3.1 * esp * * ip filter 401005 pass 192.168.3.1 * udp 500,4500,1701 * # ゲートウェイ用 ip filter 401080 pass 192.168.3.182 * * * * ip filter 401099 pass * * * * * # 特定のパケットは回線がアップ状態のときのみ通す # 回線が切断されているときにこのパケットを送信すると回線が接続されてしまうが、 # 通信の終了を表すものなので接続する必要がない。 ip filter 402000 restrict * * tcpfin * www,21,nntp ip filter 402001 restrict * * tcprst * www,21,nntp # 全て許可(回線接続時) ip filter 402099 restrict * * * * * # 各種プロトコルのLAN->WANをトリガーとした通信を動的に許可 ip filter dynamic 411000 * * ftp ip filter dynamic 411001 * * domain ip filter dynamic 411002 * * www ip filter dynamic 411003 * * smtp ip filter dynamic 411004 * * pop3 ip filter dynamic 411005 * * submission ip filter dynamic 411006 * * tcp ip filter dynamic 411007 * * udp ipv6 filter 600099 reject * * * * * # ICMPv6 のパケットを許可する # IPv6 では ICMP を使ってエラー通知やアドレス解決(近隣探索)などを行うため許可する必要がある ipv6 filter 601000 pass * * icmp6 * * # IP プロトコル番号 4 は IP in IP を表し、IPv4 over IPv6 のために必要 ipv6 filter 601001 pass * * 4 # UDP の 546 ポートは DHCP クライアントが使用するポート ipv6 filter 601002 pass * * udp * 546 ipv6 filter 601099 pass * * * * * ipv6 filter dynamic 611000 * * ftp ipv6 filter dynamic 611001 * * domain ipv6 filter dynamic 611002 * * www ipv6 filter dynamic 611003 * * smtp ipv6 filter dynamic 611004 * * pop3 ipv6 filter dynamic 611005 * * tcp ipv6 filter dynamic 611006 * * udp # # QoS # queue class filter 10 4 ipv6 * * udp * * queue class filter 11 4 ip * * udp * * # # IPSec # ipsec transport 1 102 udp 1701 ipsec auto refresh on l2tp service on # # DNSサーバー設定 # # DNSサーバーへのアクセスを許可するホスト dns host lan1 # 名前解決時に IPv6 を優先する dns service fallback on # LAN2 の DHCP サーバーから取得した DNS サーバーに対して問い合わせをする dns server dhcp lan2 # DNS問い合わせ先サーバーとそのサーバーを選択する条件 # pp 1: pp 1 から通知されたサーバーを問い合わせ先とする # any .: 全てのタイプ、全てのドメインに対する問い合わせ # restrict pp 1: pp 1 がアップしていることも条件に追加する dns server select 402099 pp 1 any . restrict pp 1 # プライベートアドレスに対する問い合わせを上位サーバーに転送しない dns private address spoof on # # NATの設定 # nat descriptor type 1000 masquerade nat descriptor address outer 1000 map-e # 静的NAT変換/IPマスカレード変換を行うNATディスクリプタ # PPPoEではWAN側に1つIPアドレスが割り振られるが、複数の端末が接続するため # IPマスカレード変換が必要 nat descriptor type 2000 masquerade nat descriptor address outer 2000 ipcp nat descriptor address inner 2000 auto nat descriptor masquerade static 2000 1 192.168.3.1 esp nat descriptor masquerade static 2000 2 192.168.3.1 udp 500 nat descriptor masquerade static 2000 3 192.168.3.1 udp 4500 nat descriptor masquerade static 2000 4 192.168.3.1 udp 1701 # # DHCPサーバー設定 # # DHCPサーバーとして動作する dhcp service server # DHCPサーバーが応答を返さない場合でも一部のPCが正しく動作するようにする dhcp server rfc2131 compliant except remain-silent # LAN1に対してDHCPサーバーが割り当てるIPアドレスの範囲 dhcp scope 1 192.168.3.2-192.168.3.254/24 gateway 192.168.3.1 dhcp scope option 1 router=192.168.3.1 dns=192.168.3.1 ntp_server=192.168.3.1 # IPv4(PPPoE) に接続する端末の IP アドレスを固定する # 普段は pp 1 を使わず、使うときのに以下のコマンドを実行して 192.168.3.182 を割り当てる # (02:FF:FF:FF:FF:FF はローカルアドレス) # # no dhcp scope bind 1 192.168.3.181 ethernet F8:46:1C:53:EA:05 # no dhcp scope bind 1 192.168.3.182 ethernet 02:FF:FF:FF:FF:FF # dhcp scope bind 1 192.168.3.181 ethernet 02:FF:FF:FF:FF:FF # dhcp scope bind 1 192.168.3.182 ethernet F8:46:1C:53:EA:05 # # 戻すときは以下のコマンドを実行する # # no dhcp scope bind 1 192.168.3.181 ethernet 02:FF:FF:FF:FF:FF # no dhcp scope bind 1 192.168.3.182 ethernet F8:46:1C:53:EA:05 # dhcp scope bind 1 192.168.3.181 ethernet F8:46:1C:53:EA:05 # dhcp scope bind 1 192.168.3.182 ethernet 02:FF:FF:FF:FF:FF dhcp scope bind 1 192.168.3.181 ethernet F8:46:1C:53:EA:05 dhcp scope bind 1 192.168.3.182 ethernet 02:FF:FF:FF:FF:FF # 無線LANアクセスポイントに固定IPアドレス割り当て # 管理画面にアクセスするために必要 dhcp scope bind 1 192.168.3.191 ethernet 34:3D:C4:B4:B5:3E dhcp scope bind 1 192.168.3.192 ethernet CC:E1:D5:C8:26:38 # L2SWに固定IPアドレス割り当て # 管理画面にアクセスするために必要 # L2SWがClient-Identifierを発行しないため"ethernet"はつけない dhcp scope bind 1 192.168.3.201 AC:44:F2:87:72:53 # # NTP # sntpd service on sntpd host lan1 schedule at 1 */* 05:00 * ntpdate ntp.nict.jp syslog # 起動すると2秒ほどずれているので起動時に同期する schedule at 2 startup * ntpdate ntp.nict.jp syslog # # その他サーバー # # TELNETサーバーへアクセスできるホストの設定 telnetd host lan1 # TFTPサーバーへアクセスできるホストの設定 tftp host lan1 # # Switch # # L2MS を使う switch control use lan1 on terminal=on # # 本体 # # ログインタイマー login timer 1800 # 起動時にアラームを鳴らす alarm startup on # トラフィック量の統計機能をON statistics cpu on statistics memory on statistics traffic on statistics flow on statistics nat on statistics route on statistics filter on statistics application on # コンソールの文字コード console character ja.utf8 # コンソールの表示行数 console lines infinity
SWX2210-8G
! password-encryption enable ! enable password {{ADMIN_PASSWORD}} password {{LOGIN_PASSWORD_ANONYMOUS}} ! dns-client enable ! loop-detect enable ! flowcontrol enable ! interface port1.1 eee enable switchport mode access switchport multiple-vlan group 1 no shutdown ! interface port1.2 eee enable switchport mode access switchport multiple-vlan group 1 switchport multiple-vlan group 2 switchport multiple-vlan group 3 switchport multiple-vlan group 4 no shutdown ! interface port1.3 eee enable switchport mode access switchport multiple-vlan group 1 no shutdown ! interface port1.4 eee enable switchport mode access switchport multiple-vlan group 2 no shutdown ! interface port1.5 eee enable switchport mode access switchport multiple-vlan group 1 no shutdown ! interface port1.6 eee enable switchport mode access switchport multiple-vlan group 3 no shutdown ! interface port1.7 eee enable switchport mode access switchport multiple-vlan group 1 no shutdown ! interface port1.8 eee enable switchport mode access switchport multiple-vlan group 4 no shutdown ! interface vlan1 ip address dhcp ! clock timezone JST ! ntpdate server name ntp.nict.jp ntpdate interval 24 ! http-server enable http-server secure enable http-server login-timeout 30 ! telnet-server enable ! tftp-server enable 69 ! end