RTX830でv6プラス + IPv4(PPPoE)を構成する

前回の記事から少し経ってしまいましたが、今度は v6 プラスでも接続できるようにしました。

locaq.hatenablog.com

構成

v6 プラスでの接続に加えて IPv4(PPPoE)での接続も作成します。 また、ポートベース VLAN を作成して接続するポートによって使い分けます。

  • VLAN1(ポート:1~3)
  • VLAN2(ポート:4)

基本的に IPv6, IPv4 over IPv6 を使います。

PPPoE の方は普段は使わず、PS4ボイスチャットするときにすぐに使えるように用意しておきます。 (なので PS4 も普段は VLAN1 側のポートに接続しています。)

参考情報

設定する前に以下の書籍で v6 プラスについて勉強しました。1,000 円ですが、リンク先に無料版への案内もあります。

徹底解説 v6プラス(電子書籍のみ)– 技術書出版と販売のラムダノート

また、Kindle 版もあります。私はこちらを買いました。

徹底解説v6プラス | 日本ネットワークイネイブラー株式会社 監修, 小川晃通, 久保田聡 | 工学 | Kindleストア | Amazon

まったく分からない状態よりも少しでも理解していた方が設定もやりやすいのでおすすめです。

コマンド

前回と同様に、v6 プラスのために必要なコマンドの意味を分かる範囲で載せていきます。 また、記事の最後にコンフィグ全体を載せています。

できるだけ正確に書くようにしてますが、ネットワークには疎いので間違ってる可能性もあるのでそこはご了承ください。

WAN 側の設定

ipv6 prefix 1 ra-prefix@lan2::/64

v6 プラスでは IPv6 アドレスの割り当て方法がフレッツとの契約の種類によって 2 種類あるようです。

  1. RA(Router Advertisement, ルータ広告)
  2. DHCPv6-PD(DHCPv6-Prefix Delegation)

私はひかり電話契約をしていないので 1 の方法を使います。

このコマンドで、lan2 ではルータ広告を使った方法でアドレスを割り当てる、と定義します。

ipv6 lan2 secure filter in 100030 100031 100038 100039
ipv6 lan2 secure filter out 100099 dynamic 100080 100081 100082 100083 100084 100098 100099

WAN 側のフィルタ設定です。各 ID のフィルタは後述します。

ipv6 lan2 dhcp service client ir=on

WAN 側の DHCPv6 の動作の設定です。クライアントとして動作するようにします。 また ir=on を指定して Inform-Request を送信するように設定する必要があるようです。

トンネル(IPv4 over IPv6)の設定

v6 プラスで IPv4 通信を行うときは IPv6 パケットのペイロードIPv4 パケットを載せて行うのでトンネルを作成します。

tunnel select 1

使うトンネルの番号の指定。以降の設定はこの 1 番のトンネルに対して行われます。

tunnel encapsulation map-e

トンネルのインターフェースの種類の指定。v6 プラスは MAP-E を使うので map-e を指定します。

ip tunnel mtu 1460

トンネルの MTU の値。Web GUI で設定したらこの値になったのでなぜこの値なのか分かってませんが。

追記ツイッターで教えてもらって分かりました。

まず ipv6 interface mtu コマンドのリファレンスを見ると MTU の初期値が 1500 です。コンフィグでとくに指定していないのでこの値が IPv6 通信で使われます。 そして IPv6 パケットのヘッダー長は固定で 40 オクテットなので、カプセル化された IPv4 通信の MTU には 1500 - 40 = 1460 オクテットを指定する、ということでした。

ip tunnel secure filter in 200000 200001 200002 300003 200020 200021 200022 200023 200024 200025 300030 300032
ip tunnel secure filter out 200010 200011 200012 300013 200020 200021 200022 200023 200024 200025 200026 200027 200099 dynamic 200080 200081 200082 200083 200084 200085 200098 200099

トンネルのフィルタ設定。IPv4(PPPoE)と共通ですがネットワークが異なるので、ネットワークだけ変えたフィルタを作成して指定しています。(3000xx)

 ip tunnel nat descriptor 1000

このトンネルで使う NAT ディスクリプタの指定。

 tunnel enable 1

トンネルの有効化。

LAN 側の設定

lan type lan1 port-based-option=divide-network
vlan port mapping lan1.1 vlan1
vlan port mapping lan1.2 vlan1
vlan port mapping lan1.3 vlan1
vlan port mapping lan1.4 vlan2

ポートベース VLAN の構成。ポート 1 ~ 3 を vlan1 、4 を vlan2 にしています。vlan2 が IPv4(PPPoE)用です。

ip route default gateway tunnel 1 gateway pp 1 filter 1
ip filter 1 pass 192.168.0.0/24 * * * *

IPv4 パケットをトンネル経由にするか PPPoE 経由にするかの設定。後で出てきますが、192.168.0.0/24 は vlan2 のネットワークです。

ip vlan1 address 192.168.3.1/24
ipv6 vlan1 address ra-prefix@lan2::1/64

vlan1 の設定。IPv4 アドレスは 192.168.3.1/24 、IPv6 アドレスは lan2 に割り当てられたプレフィックスに ::1 を付けたものを指定します。

ipv6 vlan1 rtadv send 1 o_flag=on

vlan1 に対するルータ広告の送信制御の設定。o_flag=on を指定する必要があるようです。

ip vlan2 address 192.168.0.1/24

vlan2 の設定。vlan2 の設定はインターフェース名と IP アドレスが変わっただけで前回の記事の設定と同様です。

フィルタ

IPv4 関連のフィルタは前回記事と同様なので、IPv6 関連のみ載せます。

ipv6 filter 100030 pass * * icmp6 * *
ipv6 filter 100031 pass * * 4
ipv6 filter 100038 pass * * udp * 546
ipv6 filter 100039 reject * *
ipv6 filter 100099 pass * * * * *
ipv6 filter dynamic 100080 * * ftp
ipv6 filter dynamic 100081 * * domain
ipv6 filter dynamic 100082 * * www
ipv6 filter dynamic 100083 * * smtp
ipv6 filter dynamic 100084 * * pop3
ipv6 filter dynamic 100098 * * tcp
ipv6 filter dynamic 100099 * * udp

IPv6用のフィルタ。このフィルタについてはルータが生成したものをそのまま使ってます。

100030 の icmp6 は ICMPv6 のパケットを通すものです。ICMPv6 は IPv6 通信で重要な役割を担っているらしいです。 また、UDP の 546 番ポートは DHCPv6 クライアントが使うポートのようです。

100031 は調べてみましたがよく分かりませんでした。 mnemonic Table を見ると ICMP 関係のようなので、ICMPv6 関係と予想しましたが、100030 と別に必要な理由が不明です。 追記:こちらもツイッターで教えてもらって分かりました。 4 はIP のプロトコル番号の 4 番のことで、IPv4 over IPv6 を使うのでそれの受信を許可するフィルタでした。

また、動的フィルタについては IPv4 と同様です。

その他

dns service fallback on

DNS の問い合わせで IPv6 を優先させる設定。off だと機能毎に IPv4/IPv6 のどちらを優先するのかがバラバラのようなので統一させます。

dns server dhcp lan2

DNS サーバーのアドレスをどのインターフェースを使って取得するかの設定。DNS サーバーはサービス側が用意しているものを使うので、DHCP を使って取得します。

nat descriptor type 1000 masquerade
nat descriptor address outer 1000 map-e

トンネル(IPv4 over IPv6)のトンネル用の NAT の設定。外側の IP アドレスはサービス側から MAP-E で指定されるので、それ用の設定をします。

# VLAN1に対してDHCPサーバーが割り当てるIPアドレスの範囲
dhcp scope 1 192.168.3.2-192.168.3.191/24 gateway 192.168.3.1
dhcp scope option 1 router=192.168.3.1 dns=192.168.3.1
dhcp scope bind 1 192.168.3.191 ethernet 34:3D:C4:B4:B5:3E
ipv6 vlan1 dhcp service server

vlan1 の DHCP サーバーの設定。 割り当てに使える IP アドレスの範囲指定と、ルータ、DNS サーバーのアドレスを vlan1 の IP アドレスの指定をします。 また、無線 LAN アクセスポイント(AP)の管理画面に入れるように、AP の MAC アドレスに対して固定で IP アドレスを割り当てています。

まとめ

v6 プラスと IPv4(PPPoE)を併用し、ポートベース VLAN で使い分けて使えるようになりました。

IPv6 や v6 プラスについてまだ理解できてないことが多いのでよく分からず設定してるところも多いですが、それでも設定を始める前よりは知識が増えて勉強になりました。

コンフィグ

最終的なコンフィグを載せます。

#
# ユーザー
#
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

#
# ゲートウェイの設定
#
ip route default gateway tunnel 1 gateway pp 1 filter 1
ip filter 1 pass 192.168.0.0/24 * * * *

#
# WAN
#
description lan2 IPv6
ipv6 lan2 secure filter in 100030 100031 100038 100039
ipv6 lan2 secure filter out 100099 dynamic 100080 100081 100082 100083 100084 100098 100099

#
# v6プラス
#
tunnel select 1
 description tunnel IPv4(v6プラス)
 tunnel encapsulation map-e
 ip tunnel mtu 1460

 # 受信パケットのフィルタ
 ip tunnel secure filter in 200000 200001 200002 300003 200020 200021 200022 200023 200024 200025 300030 300032
 # 送信パケットのフィルタ
 ip tunnel secure filter out 200010 200011 200012 300013 200020 200021 200022 200023 200024 200025 200026 200027 200099 dynamic 200080 200081 200082 200083 200084 200085 200098 200099

 ip tunnel nat descriptor 1000
 tunnel enable 1

#
# ポートベースVLAN
#
lan type lan1 port-based-option=divide-network
description vlan1 "LAN(v6プラス)"
description vlan2 "LAN(IPv4 PPPoE)"
vlan port mapping lan1.1 vlan1
vlan port mapping lan1.2 vlan1
vlan port mapping lan1.3 vlan1
vlan port mapping lan1.4 vlan2

#
# VLAN1
#
ip vlan1 address 192.168.3.1/24
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 vlan1 address ra-prefix@lan2::1/64
ipv6 vlan1 rtadv send 1 o_flag=on

#
# VLAN2
#
ip vlan2 address 192.168.0.1/24

#
# 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

 # 受信パケットのフィルタ
 ip pp secure filter in 200000 200001 200002 200003 200020 200021 200022 200023 200024 200025 200030 200032
 # 送信パケットのフィルタ
 ip pp secure filter out 200010 200011 200012 200013 200020 200021 200022 200023 200024 200025 200026 200027 200099 dynamic 200080 200081 200082 200083 200084 200085 200098 200099

 # NAT変換の適用設定
 ip pp nat descriptor 2000
 # 相手先を有効にする
 pp enable 1

#
# フィルターの設定
# UDP, FTP, DNSなどは静的フィルタではなく動的フィルタを用いる
#

ipv6 filter 100030 pass * * icmp6 * *
ipv6 filter 100031 pass * * 4
ipv6 filter 100038 pass * * udp * 546
ipv6 filter 100039 reject * *
ipv6 filter 100099 pass * * * * *
ipv6 filter dynamic 100080 * * ftp
ipv6 filter dynamic 100081 * * domain
ipv6 filter dynamic 100082 * * www
ipv6 filter dynamic 100083 * * smtp
ipv6 filter dynamic 100084 * * pop3
ipv6 filter dynamic 100098 * * tcp
ipv6 filter dynamic 100099 * * udp

# IPスプーフィング/LAND/Smurf攻撃への対策
# WAN側から入ってくるパケットの送信元がプライベートアドレスのものを破棄する
# 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16はプライベートネットワークアドレス
ip filter 200000 reject 10.0.0.0/8 * * * *
ip filter 200001 reject 172.16.0.0/12 * * * *
ip filter 200002 reject 192.168.0.0/16 * * * *
ip filter 200003 reject 192.168.0.0/24 * * * *
ip filter 300003 reject 192.168.3.0/24 * * * *
# WAN側に出ていくパケットの送信先がプライベートアドレスのものを破棄する
ip filter 200010 reject * 10.0.0.0/8 * * *
ip filter 200011 reject * 172.16.0.0/12 * * *
ip filter 200012 reject * 192.168.0.0/16 * * *
ip filter 200013 reject * 192.168.0.0/24 * * *
ip filter 300013 reject * 192.168.3.0/24 * * *

# RPCで使われるポートを拒否
# WAN側からのアクセス/WAN側へのアクセスは不要
ip filter 200020 reject * * udp,tcp 135 *
ip filter 200021 reject * * udp,tcp * 135

# Windowsのファイル共有で使われるNetBIOS関連を拒否
# WAN側からのアクセス/WAN側へのアクセスは不要
ip filter 200022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 200023 reject * * udp,tcp * netbios_ns-netbios_ssn

# Windowsのダイレクト・ホスティングSMBサービス関連を拒否
# WAN側からのアクセス/WAN側へのアクセスは不要
ip filter 200024 reject * * udp,tcp 445 *
ip filter 200025 reject * * udp,tcp * 445

# 特定のパケットは回線がアップ状態のときのみ通す
# 回線が切断されているときにこのパケットを送信すると回線が接続されてしまうが、
# 通信の終了を表すものなので接続する必要がない。
ip filter 200026 restrict * * tcpfin * www,21,nntp
ip filter 200027 restrict * * tcprst * www,21,nntp

# ICMPパケットを通す
# LANからWANへ送信したICMPパケットの応答を通すために必要
ip filter 200030 pass * 192.168.0.0/24 icmp * *
ip filter 300030 pass * 192.168.3.0/24 icmp * *

# メールサーバーからの認証パケットを許可する
ip filter 200032 pass * 192.168.0.0/24 tcp * ident
ip filter 300032 pass * 192.168.3.0/24 tcp * ident

# 全て許可
ip filter 200099 pass * * * * *

# 全て許可(回線接続時)
ip filter 500000 restrict * * * * *

# 各種プロトコルのLAN->WANをトリガーとした通信を動的に許可
ip filter dynamic 200080 * * ftp
ip filter dynamic 200081 * * domain
ip filter dynamic 200082 * * www
ip filter dynamic 200083 * * smtp
ip filter dynamic 200084 * * pop3
ip filter dynamic 200085 * * submission
ip filter dynamic 200098 * * tcp
ip filter dynamic 200099 * * udp

#
# DNSサーバー設定
#

# DNSサーバーへのアクセスを許可するホスト
dns host lan1

dns service fallback on
dns server dhcp lan2

# DNS問い合わせ先サーバーとそのサーバーを選択する条件
#   pp 1: pp 1 から通知されたサーバーを問い合わせ先とする
#   any .: 全てのタイプ、全てのドメインに対する問い合わせ
#   restrict pp 1: pp 1 がアップしていることも条件に追加する
dns server select 500001 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

#
# DHCPサーバー設定
#

# DHCPサーバーとして動作する
dhcp service server

# DHCPサーバーが応答を返さない場合でも一部のPCが正しく動作するようにする
dhcp server rfc2131 compliant except remain-silent

ipv6 lan2 dhcp service client ir=on

# VLAN1に対してDHCPサーバーが割り当てるIPアドレスの範囲
dhcp scope 1 192.168.3.2-192.168.3.191/24 gateway 192.168.3.1
dhcp scope option 1 router=192.168.3.1 dns=192.168.3.1
# 無線LANアクセスポイントに固定IPアドレス割り当て
# 管理画面にアクセスするために必要
dhcp scope bind 1 192.168.3.191 ethernet 34:3D:C4:B4:B5:3E
ipv6 vlan1 dhcp service server

# VLAN2に対してDHCPサーバーが割り当てるIPアドレスの範囲
dhcp scope 2 192.168.0.2-192.168.0.191/24 gateway 192.168.0.1
dhcp scope option 2 router=192.168.0.1 dns=192.168.0.1
ip vlan2 dhcp service server

#
# NTP
#
schedule at 1 */* 05:00 * ntpdate ntp.nict.jp syslog

#
# その他サーバー
#

# TELNETサーバーへアクセスできるホストの設定
telnetd host lan

#
# 本体
#

# ログインタイマー
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