前の記事では、ヤマハ「NVR510」で v6プラス(IPv6 IPoE+IPv4 over IPv6)通信を行った。
そのNVR510ルータの配下に、「RTX1210」ルータを追加して、IPv4(PPPoE)通信とIPv6(IPoE)通信を行い、サーバを公開するようにしたので備忘録を残す。
概要
v6プラスの IPv4 over IPv6 通信では利用できるポートに制約があり、一般にWebサーバで使われる 80,443 ポートなどが公開できない。
そこで、PPPoEのIPv4通信を使いサーバを公開できるようにする。PPPoE通信はNVR510上でも一緒に動かす事も出来るが、負荷分散とセキュリティにも配慮しNVR510配下に別ルータ(RTX1210)を設置し、別セグメントで動かす構成とする。
更に、IPv6通信によるサーバ公開もできるようにする。
NVR510のv6プラス通信設定については下記記事を参照。
ネットワーク構成
NVR510のWAN(LAN2)を、ONUに接続。更に、このNVR510のLAN1に、RTX1210のLAN2とLAN3(PPPoE用)を接続。
フレッツ隼 光回線
|
+---------+
| ONU |
+---------+
|
WAN |
+---------+
| NVR510 |
+---------+
LAN1 |.1 \
| ひかり電話
|
+----+-+-------------+------+(192.168.1.0/24)
| |
| PC1 PC2 PC3 ... (DHCPで配布)
|
LAN2/3 | .254/PPPoE(IPv4,NAT)
+---------+
| RTX1210 |
+---------+
LAN1 | .1
|
+------+--------------------+(192.168.2.0/24)
|
SEVER1 SERVER2 ... (固定又はDHCPで配布)
- NVR510のWANは、config設定などでは「LAN2」と表現されているので注意。
- 公開サーバは、RTX1210のLAN1配下に置く。
- NVR510のLAN1配下のパソコンから、RTX1210のLAN1配下のサーバなどへのアクセスができた方が便利なので、RTX1210のLAN2経由でルーティングする。
- RTX1210のLAN2とLAN3の2つを使っているが、一つに集めても大丈夫。
NVR510側の設定(準備)
NVR510のLAN1配下に、RTX1210ルータを接続する準備。
PPPoEパケット通過
RTX1210ルータからのPPPoEパケットが通過できるようにPPPoEパススルーを設定。
# pppoe pass-through member lan1 lan2
IPv4通信ルーティング
NVR510配下のパソコンから、ルータや公開サーバの設定変更など出来た方が楽なので、IPv4パケットがRTX1210へ通信できるようにルート追加。
# ip route 192.168.2.0/24 gateway 192.168.1.254
IPv6ダイナミックルーティング
NVR510とRTX1210とのIPv6経路情報のやりとりを有効にする。
# ipv6 rip use on
IPv6状況の確認
下記コマンドで、IPv6の配布アドレスなど確認しておく。
> show ipv6 address
> show status ipv6 dhcp
> show ipv6 route
- 「ひかり電話あり」解約なので、プリフィクスは
/56
でDHCPv6により配布されている。一般的なIPv6通信では、/64
で利用するらしいので、8bit分の余裕があり256個までセグメント分割などで利用できる。実用上、十分である。
RTX1210ルータ設定(公開サーバ用)
公開サーバ用のRTX1210ルータを、NVR510のLAN1配下におく。
ルータ基本設定とPPPoE通信設定
RTX1210ルータをPPPoE接続で構築する。基本的には、下記記事で紹介の手順でGUIのウイザードから設定。
- ルータのIPアドレスは
192.168.2.1
に設定。 - LAN3をPPPoE接続で設定。
IPv4通信の設定
LAN2経由で、NVR510のLAN1側とのIPv4アクセスできるようにする。
# ip lan2 address 192.168.1.254/24
IPv6通信の設定
IPv6通信は、ヤマハのページに記載の 設定例(その3) を参考に設定。
IPv6は、LAN2経由で通信できるようにする。又、NVR510からDHCPv6及びRAによりDNS情報などが配布される。
# ipv6 prefix 1 ra-prefix@lan2::2:0:0:0:1/64
# ipv6 lan1 address ra-prefix@lan2::2:0:0:0:1/64
# ipv6 lan1 rtadv send 1 o_flag=on
# ipv6 lan1 dhcp service server
# description lan2 "IPv6 IPoE"
# ipv6 lan2 dhcp service client ir=on
# ipv6 lan2 secure filter in 101000 101001 101002
# ipv6 lan2 secure filter out 101099 dynamic 101080 101081 101082 101083 101084 101085 101098 101099
# ipv6 filter 101000 pass * * icmp6 * *
# ipv6 filter 101001 pass * * tcp * ident
# ipv6 filter 101002 pass * * udp * 546
# ipv6 filter 101099 pass * * * * *
# 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 101098 * * tcp
# ipv6 filter dynamic 101085 * * submission
# ipv6 filter dynamic 101099 * * udp
- 【注意】このルータのLAN1に割り当てるIPv6アドレスは「
ipv6 lan1 address ra-prefix@lan2::2:0:0:0:1/64
」と指定して、上位のNVR510とは重複しないアドレスに設定。 - このルータのLAN1配下の機器には、「
ipv6 prefix 1 ra-prefix@lan2::2:0:0:0:1/64
」により、上位のNVR510側とは別セグメント(2:0:0:0:0
)のアドレスをRA配布する。
config設定では最後に:1
と記述している。ネットワークアドレスなので、本来は:0
で良いはずなのだが、ルータ内部動作の関係上そのような設定が必要とマニュアルに書かれている。
IPv6ダイナミックルーティング
RTX1210とNVR510とのIPv6経路情報のやりとりを有効にする。
# ipv6 rip use on
# ipv6 lan3 rip send off
# ipv6 lan3 rip receive off
- LAN3はPPPoE専用なので念のためrip送受信しないようにしておく。
外部公開ポートの設定
IPv4ポート公開
公開するポートを「静的IPマスカレード」で設定。下記記事を参照。
- GUIからの設定すると、静的IPマスカレードだけでなく静的フィルタの設定も同時にされる。
- 公開サーバのIPv4通信は、PPPoE経由で行われる。(LAN2ポートが使われるわけではない)
IPv6アドレス公開
外部からのIPv6通信パケットは、ルータのIPフィルタ機能で防御されているので、サーバへのIPv6通信を通す設定をする必要がある。
今回の構成では、NRV510及びRTX1210両方のin側フィルタで通過する設定をする。下記記事も参考になる。
IPv6フィルタ(in側)の設定例。
ipv6 lan2 secure filter in 101000 101001 101002 101003 101010 101011
ipv6 filter 101000 pass * * icmp6 * *
ipv6 filter 101001 pass * * tcp * ident
ipv6 filter 101002 pass * * udp * 546
ipv6 filter 101003 pass * * 4 * *
ipv6 filter 101010 pass * 240b:111:222:300:8888:6666:fe83:1100 tcp * www
ipv6 filter 101011 pass * 240b:111:222:300:8888:6666:fe83:1100 tcp * https
- IPv6通信は、LAN2ポート経由で行われる。
通信確認
NVR510のLAN1に接続したパソコンから、外部に対してpingが通るか確認する。
$ nslookup
> www.google.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: www.google.com
Address: 172.217.161.228
Name: www.google.com
Address: 2404:6800:400a:80c::2004
> exit
$ ping 172.217.161.228
PING 172.217.161.228 (172.217.161.228) 56(84) bytes of data.
64 bytes from 172.217.161.228: icmp_seq=1 ttl=55 time=8.86 ms
64 bytes from 172.217.161.228: icmp_seq=2 ttl=55 time=9.86 ms
^C
--- 172.217.161.228 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 8.869/9.365/9.862/0.505 ms
$ ping6 2404:6800:400a:80c::2004
PING 2404:6800:400a:80c::2004(2404:6800:400a:80c::2004) 56 data bytes
64 bytes from 2404:6800:400a:80c::2004: icmp_seq=1 ttl=52 time=8.22 ms
64 bytes from 2404:6800:400a:80c::2004: icmp_seq=2 ttl=52 time=8.39 ms
64 bytes from 2404:6800:400a:80c::2004: icmp_seq=3 ttl=52 time=7.99 ms
^C
--- 2404:6800:400a:80c::2004 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 7.991/8.203/8.390/0.179 ms
$
「ipv6-test.com」で、外部からの Ping と Website テストを実行。
考察
IPv4の方はスムーズに動いたが、IPv6でのネットワーク構築の知識が乏しかったので、最初はRTX1210側からのIPv6通信が動かなくて苦労した。ポイントはセグメント分けとダイナミックルーティングで、デフォルトルートの宛先が解決できていないようだった。
RTX1210のLAN側のIPv6アドレスがNVR510側と重複しないようにして、両方に「rip use on
」を入れる事でOKとなった。
手動ルーティング
IPv6通信は、プラグアンドプレイで繋げば自動で動くようになるという設計思想のようである。参考までに、ripを使わない手動ルーティングでも試したので設定情報を残す。
【NVR510側】
RTX1210側へのルート指定(RTX1210のLAN2経由)
ipv6 route 240b:111:222:302::/64 gateway fe80::ae44:f2ff:fe6a:a63a%lan1
【RTX1210側】
NVR510のルータアドレスをデフォルトゲートウェイに指定
ipv6 route default gateway 240b:111:222:300::1%lan2
ちなみに、下記指定ではダメだった。
ipv6 route default gateway dhcp lan2
- DHCPv6の仕様では、デフォルト・ゲートウェイ・アドレスを渡すことは出来ないらしい。(DNSサーバの情報など渡す為に使う)
その他
ipv6 lan2 address auto
上記設定すると、RAで取得したプレフィックスとインタフェースのMACアドレスからIPv6アドレスを生成してlan2インタフェースに割り当てる。
ipv6 lan2 dhcp service client ir=on
上記の ir=on
は、DHCPv6クライアントで動作する時に、自アドレスの割り当てを要求しないというもの(MACアドレスを使ったリンクアドレスは自動生成される)。ir=off
にするとアドレス要求するようになる。
ひかり電話なしの契約では?
ひかり電話あり契約では、DHCPv6で /56
のプリフィクスが配布されるが、ひかり電話なし契約では、RA通知で /64
のプリフィクス配布となる。今回説明したような /64
より上のbitでのセグメント分割ができない。複数のルータなどの機器を接続する場合には、どうするのだろう?
/64
より下で分割してもよいのだろうが、もしかしたら RIP によるダイナミックルーティングで、うまく対応できるのかもしれない???
IPv6もなかなか奥が深そうだが、今後も勉強していこうと思う。
所感
IPv6通信の理解が足りなくて、config設定を呪文のように打ち込んで動かなかったりもしたが、いろいろ試した事で勉強になった。もっとスッキリした方法があるのかもしれないが、今後、試していきたい。
通信応答速度については、今回の構成により爆速に改善した。ルータを換えるだけで、これだけ変わるものかと感心。
コメント