前回の記事の投稿から少し間が空いてしまいましたが,「自宅 LAN の理想と現実 (3) ~IPv6 をどうするか・その4〜」です.今回は私の備忘録を兼ねて,「SEIL/x86」の設定の一部を御紹介します.
前提
前提として,前回記事で構築した環境
を仮定します.物理配線と VLAN の状態は以下の通りです.
また,SEIL/x86 は Thinkpad にインストールされた Windows 10 pro のクライアント Hyper-V 上にインストールされており,
- ローカル(VLAN1): lan0
- グローバル(VLAN10): lan1
のように SEIL/x86 からネットワークインターフェースが認識されているとします.
注意
今回紹介する設定は最低限のセキュリティしか考慮していません.従ってこのまま使ってセキュリティ的な問題が生じても責任は持てません.御注意下さい.
設定
まずは設定の全体を以下に貼り付けておきます.
hostname "SEILx86OCN" timezone "Japan" environment login-timer 300 option ipv6 unicast-rpf strict logging on ppp add ipv4 keepalive 30 ipcp enable ipcp-address on ipcp-dns on ipv6cp disable authentication-method auto identifier aaaaaaa@***.ocn.ne.jp passphrase ***** tcp-mss auto ppp add ipv6 keepalive none ipcp disable ipcp-address off ipcp-dns off ipv6cp enable authentication-method chap identifier [email protected] passphrase ***** tcp-mss auto interface lan0 description "local" interface lan0 media auto interface lan0 add 192.168.2.1/24 interface lan1 description "flets-west.jp" interface lan1 media auto interface lan1 queue normal interface lan1 add dhcp interface lan1 add router-advertisement interface pppoe0 description "***.ocn.ne.jp" interface pppoe0 over lan1 interface pppoe0 ppp-configuration web-config interface pppoe1 description "ipv6.ocn.ne.jp" interface pppoe1 over lan1 interface pppoe1 ppp-configuration ipv6 bridge disable bridge ip-bridging on bridge ipv6-bridging on route add default pppoe0 route dynamic rip disable route dynamic ospf disable route dynamic bgp disable route dynamic redistribute static-to-rip disable route dynamic redistribute static-to-ospf disable route dynamic redistribute ospf-to-rip disable route dynamic redistribute rip-to-ospf disable route dynamic redistribute connected-to-rip enable route dynamic redistribute connected-to-ospf enable route dynamic pim-sparse disable route6 add default pppoe1 route6 add 2001:a200::/24 2001:****:****:****:****:****:****:**** route6 dynamic ripng disable route6 dynamic redistribute static-to-ripng disable route6 dynamic redistribute connected-to-ripng enable route6 dynamic pim-sparse disable filter add filter1 interface pppoe0 direction in action block protocol tcp srcport 0-65535 dstport 80 state disable logging on enable filter add filter2 interface pppoe0 direction in action block protocol tcp srcport 0-65535 dstport 23 state disable logging on enable filter add filter3 interface pppoe0 direction in action block protocol tcp srcport 0-65535 dstport 22 state disable logging on enable filter6 add seil_ctl_lan0 interface lan0 direction in action pass protocol tcp srcport 0-65535 dst self dstport 0-65535 state disable logging off enable filter6 add telnetd_block interface any direction in action block protocol tcpudp srcport 0-65535 dst self dstport 23 state disable logging on enable filter6 add httpd_block interface any direction in action block protocol tcpudp srcport 0-65535 dst self dstport 80 state disable logging on enable filter6 add outgoing interface pppoe1 direction out action pass state enable logging on enable filter6 add dhcpv6 interface pppoe1 direction in action pass protocol udp srcport 547 dstport 546 state disable logging on enable filter6 add incoming_block interface pppoe1 direction in action block state disable logging on enable nat timeout 900 nat logging off nat upnp on nat upnp interface pppoe0 nat napt add private 192.168.2.1-192.168.2.254 interface pppoe0 nat napt add private 192.168.2.1-192.168.2.254 interface lan1 nat option port-assignment random nat6 add nttngn type ngn interface lan1 internal 2400:****:****:****::/64 external 2001:a200::/24 ndproxy on proxyarp disable dhcp enable dhcp mode server dhcp interface lan0 enable dhcp interface lan0 expire 24 dhcp interface lan0 pool 192.168.2.2/24 253 dhcp interface lan0 dns add 192.168.2.1 dhcp6 client enable dhcp6 client interface pppoe1 dhcp6 client prefix-delegation subnet lan0 sla-id 0xff enable dhcp6 server interface lan0 enable dhcp6 server interface lan0 dns add dhcp6 dns forwarder enable dns forwarder add dhcp6 ntp disable cbq link-bandwidth 100Mbps snmp disable snmp community "public" snmp security-model community-based off snmp security-model user-based on snmp trap disable syslog debug-level off syslog facility local1 syslog remote off translator timeout 300 encrypted-password admin xxxxxxxxxxxxx encrypted-password-long admin xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx resolver enable resolver address add ipcp rtadvd enable rtadvd interface lan0 enable rtadvd interface lan0 other-flag on rtadvd interface lan0 advertise auto rtadvd interface lan0 advertise add interface-prefix httpd enable sshd hostkey rsa1 none sshd hostkey rsa xxxxxxxxxxx sshd hostkey dsa xxxxxxx sshd enable telnetd disable vendor OEM
主要部分(指定が必要な部分)のみ以下,解説していきます.
インターフェースの設定
ppp add web-config keepalive 30 ipcp enable ipcp-address on ipcp-dns on ipv6cp disable authentication-method auto identifier aaaaaaa@***.ocn.ne.jp passphrase ***** tcp-mss auto ppp add ipv6 keepalive none ipcp disable ipcp-address off ipcp-dns off ipv6cp enable authentication-method chap identifier [email protected] passphrase ***** tcp-mss auto interface lan0 description "buffa.local" interface lan0 media auto interface lan0 add 192.168.2.1/24 interface lan1 description "flets-west.jp" interface lan1 media auto interface lan1 queue normal interface lan1 add dhcp interface lan1 add router-advertisement interface pppoe0 description "***.ocn.ne.jp" interface pppoe0 over lan1 interface pppoe0 ppp-configuration web-config interface pppoe1 description "ipv6.ocn.ne.jp" interface pppoe1 over lan1 interface pppoe1 ppp-configuration ipv6
インターフェースの設定部分です.まず,先頭部分で ppp 接続のために必要な設定(ppp 接続パスワードの指定等)をしています.1行目が v4 ,2行目が v6 用です.3行目以降で,
- lan0 の v4 アドレスとして 192.168.2.1/24 を割り当てています.
- lan1 の v4 アドレスは NTT Router から DHCP で割り当てます.
- lan1 の v6 アドレスは router-advertisement による自動割り当てとしています(※).
- pppoe0 は v4 での接続用とし,lan1 と紐づけ(ブリッジ?)
- pppoe1 は v6 での接続用とし,lan1 と紐づけ(ブリッジ?)
が設定されています.
ルーティングの設定
route add default pppoe0 route6 add default pppoe1 route6 add 2001:a200::/24 2001:a250:****:****:****:****:****:****
最低限のルーティング設定です.最初の2行は見ての通り v4, v6 のデフォルトルートの設定ですが,最後の行は NTT のフレッツ光回線のための設定です.
NTT のフレッツ光は,NTT が構築した巨大な NTT ローカルな ipv6 ネットワークです.ただし,(場合にもよりますが)このネットワークは直接インターネットにはつなげられていません.2行目で ipv6 のデフォルトルートを pppoe1 としていますので,ipv6 の通信は基本的に ocn 経由で行われますが,NTT のフレッツ光回線は NTT のローカルネットなので,このままだとフレッツ光につながれている機器への通信が行えません.これが行われるようにするために必要な設定が3行目となります.
ipv6 アドレス
2001:a250:****:****:****:****:****:****
は NTT Router の「トップページ > 情報 > DHCPv6サーバ払い出し状況」から確認できる DNS/SIP サーバのアドレスです(多分 NTT Router 自身の ipv6 アドレスだと思う).
また,
2001:a200::/24
は NTT のローカルネットワークに割り当てられているアドレス群です.
なお,NTT のネットワークに割り当てられている ipv6 アドレスは上記のものだけでは無いようですが,最低限,自分が属しているネットワークのもののみ設定しています.
ファイヤーウォールの設定
filter add filter1 interface pppoe0 direction in action block protocol tcp srcport 0-65535 dstport 80 state disable logging on enable filter add filter2 interface pppoe0 direction in action block protocol tcp srcport 0-65535 dstport 23 state disable logging on enable filter add filter3 interface pppoe0 direction in action block protocol tcp srcport 0-65535 dstport 22 state disable logging on enable filter6 add seil_ctl_lan0 interface lan0 direction in action pass protocol tcp srcport 0-65535 dst self dstport 0-65535 state disable logging off enable filter6 add telnetd_block interface any direction in action block protocol tcpudp srcport 0-65535 dst self dstport 23 state disable logging on enable filter6 add httpd_block interface any direction in action block protocol tcpudp srcport 0-65535 dst self dstport 80 state disable logging on enable filter6 add outgoing interface pppoe1 direction out action pass state enable logging on enable filter6 add dhcpv6 interface pppoe1 direction in action pass protocol udp srcport 547 dstport 546 state disable logging on enable filter6 add incoming_block interface pppoe1 direction in action block state disable logging on enable
必要最低限のファイヤーウォールの設定です.グローバル側から SEIL/x86 の設定等を行えないようにするなどしていたはずです.
NAT の設定
nat upnp on nat upnp interface pppoe0 nat napt add private 192.168.2.1-192.168.2.254 interface pppoe0 nat napt add private 192.168.2.1-192.168.2.254 interface lan1 nat option port-assignment random nat6 add nttngn type ngn interface lan1 internal 2400:****:****:****::/64 external 2001:a200::/24 ndproxy on proxyarp disable
NAT の設定です.upnp を有効にすると共に,
- pppoe0 (ipv4 internet vir OCN)
- lan1 for ipv4 (ipv4 NTT Router network)
- lan1 for ipv6 (ipv6 localnet by NTT NGN)
の3つに napt を設定しています.まず,ipv4 internet とローカルネットワークの機器が通信できるようにするため,pppoe0 に napt を設定しています.そして,lan1 に,NTT のフレッツ光ネットワークにつながれている機器との通信性を確保するための設定を行っています.
SEIL/x86 は,NTT Router の下につながれています.NTT Router が配下の機器に DHCP で割り当てるアドレスは標準だと 192.168.1.0/24 の範囲で,ローカルネットワークのアドレスは 192.168.2.0/24 です.通信できるようにするためには,静的ルートの設定を行うのが普通なのかも知れませんが,今回は「ローカル⇒NTT Router ネットワーク」の通信性だけ確保できれば良いので,napt を lan1 に設定するだけにしています.ipv6 についても同様です.
ただし,ipv6 に静的ルートを設定し,通信性を確保することは現実的ではありません.
ローカルネットワークには,OCN が配る ipv6 アドレス 2400:****:****…/64 が設定されています.フレッツ光ネットワークのアドレスは 2001:a200::/24 です.フレッツ光ネットワークに繋がれた機器がローカルにつながれた機器と通信できるには,当然,フレッツ側の機器がこちらのネットワーク構成を知っていなければなりません.当然これは無理です.ということは,NTT のネットワークに直接接続されている lan1 がローカルとグローバルのアドレスの書き換えを実施せざるを得ません.つまり napt を lan1 に掛けざるを得ない訳です.成程,フレッツに対応するには napt6 が必要な訳です.
見ての通り,今回は ipv6 インターネットには napt6 を設定していません.pppoe1 に napt6 を設定することで,リンクローカルな ipv6 アドレスのみ割り当てられたローカルの機器から ipv6 インターネットに接続することも可能だと思いますが,今回は試していません.
また,SEIL/x86 の napt6 には ngn(NTT のフレッツ光ネットワーク)用と,transparent 方式の2通りあります.今回はフレッツ光への接続ですので,ngn としましたが,これらがどう違うのかは私にはよく分かりません.
DHCP と rtadvd の設定
dhcp enable dhcp mode server dhcp interface lan0 enable dhcp interface lan0 expire 24 dhcp interface lan0 pool 192.168.2.2/24 253 dhcp interface lan0 dns add 192.168.2.1 dhcp6 client enable dhcp6 client interface pppoe1 dhcp6 client prefix-delegation subnet lan0 sla-id 0xff enable dhcp6 server interface lan0 enable dhcp6 server interface lan0 dns add dhcp6 dns forwarder enable dns forwarder add dhcp6
DHCP の設定です.面倒なので,ipv4 のアドレスも含めて DHCP で配るよう設定しています.DHCP6 の設定の解説は
をご覧ください.また,ipv6 のアドレスは自動構成が基本です.このために rtadvd の設定が必要ですが,その部分は以下の通りとなります.
rtadvd enable rtadvd interface lan0 enable rtadvd interface lan0 other-flag on rtadvd interface lan0 advertise auto rtadvd interface lan0 advertise add interface-prefix
この部分についても,上記の SEIL 公式 blog の記事をご覧ください.
まとめ
正直,複雑ですねぇ.おまけに,いくつかこの設定で合っているのか疑問に思うところもあります.
今回,ひかり電話ありを仮定しましたが,なし,でも多分同じで大丈夫なんじゃないかと思います.どうもひかり電話ありとなしでは,NTT のフレッツ光ネットワークから配られる(NTTローカルな) ipv6 アドレスの範囲に違いが出てくるようです.
でも,今回は lan1 を素直に NTT Router の下にぶら下げ,napt6 経由でフレッツ網と通信していますので,この部分を考慮する必要はないはずです.
なお,今回の設定だと,napt6 を OCN 経由 ipv6 経由の通信に設定していません.と言うことは,ローカルネットワークの機器にも,ipv6 のグローバルアドレスが設定されているということで,これは,ローカルの機器に直接インターネットからアクセス可能であることを意味しています.
従って,ipv6 の通信についてはファイヤーウォールの設定をきちんと行っておかないと危ないということになるのですが,この辺りのことを考えると,SEIL/x86 を使うことは手間の観点から問題があると言わざるを得ないような気がします.