うっかりSEIL/X1を買ったので設定しました。

前提条件

  • 機器はSEIL/X1
    • ACアダプタが無かったのでソフトバンクAirのものを使用
      • HW-120200J0A (EIAJ4プラグ・12V 2A)
      • メルカリにいっぱい転がってる
  • 回線はIIJmioひかり+IPoEオプション
    • transixがつかえる
  • ひかり電話なし
    • DHCPv6 PrefixDelegation無しでRouterAdvertisementのみ
  • LAN側のIPv6はユニークローカルアドレスを振ってNAT6する
    • ネット上の手順だとブリッジするのが多いが、何となく怖いのでブリッジしたくない

ひかり電話ありの場合は公式ブログ見た方が早い。

最初の諸々

  1. リセットスイッチ押しながら電源投入し初期化
  2. lan0だけ結線しDHCPでIPアドレス受け取る
  3. http://192.168.0.1/ にadminでログインしファームウェアアップデート
  4. telnetからadminでログイン
# 何はともあれパスワード
password admin
password user
# ホスト名を適当に
hostname seilx1
# ログイン後のタイムアウトを伸ばす
environment login-timer 43200
# 日時設定(後でSNTP設定)
date 202006011200.00
# interfaceに名前つけておく
interface lan0 description LAN
interface lan1 description WAN

SSH関係

# sshd有効化
sshd enable
# SSHで入り直し、入れたらtelnetを切る
telnetd disable
# 必要に応じて公開鍵を登録する
# 公開鍵をコピペし、改行してから . を入力すると確定
sshd authorized-key admin add MyPubKey load-from stdin

IPv4関係

# フィルタ定義(怪しいものブロック)
filter add winrpc_block interface pppoe0 direction in/out action block protocol tcp dstport 135 state disable logging on enable
filter add netbios_block interface pppoe0 direction in/out action block protocol tcp dstport 137-139 state disable logging on enable
filter add smb_block interface pppoe0 direction in/out action block protocol tcp dstport 445 state disable logging on enable
filter add local_192_block interface pppoe0 direction in action block src 192.168.0.0/16 state disable logging on enable
filter add local_172_block interface pppoe0 direction in action block src 172.16.0.0/12 state disable logging on enable
filter add local_10_block interface pppoe0 direction in action block src 10.0.0.0/8 state disable logging on enable

# フィルタ定義(LAN->WANは動的フィルタで全開、WAN->LANは全閉じ)
filter add lan_pass interface pppoe0 direction out action pass state enable logging off enable
filter add wan_block interface pppoe0 direction in action block state disable logging on enable
filter add wan_block2 interface lan1 direction in action block state disable logging on enable

# PPPoE設定
ppp delete all
ppp add web-config keepalive 30 ipcp enable ipcp-address on ipcp-dns on ipv6cp disable authentication-method auto identifier *********** passphrase *********** tcp-mss auto
interface pppoe0 ppp-configuration web-config
show status ppp pppoe0
  • lan1を結線してみてPPPoEが上がったことを見る
    • 上がってたらIPv6の設定のため一旦抜く
show status interface pppoe0

IPv6関係

# フィルタ定義(DHCPv6とICMPv6の必要そうなやつを開ける)
# LAN->WANの動的フィルタがどう効くのかよく分からないので一部要らないかもしれない
filter6 add dhcpv6 interface lan1 direction in action pass protocol udp dst self dstport 546 state disable logging off enable
filter6 add icmp_dst_unreach interface lan1 direction in action pass protocol ipv6-icmp icmp-type 1 state disable logging off enable
filter6 add icmp_pkt_too_big interface lan1 direction in action pass protocol ipv6-icmp icmp-type 2 state disable logging off enable
filter6 add icmp_echo_reply interface lan1 direction in action pass protocol ipv6-icmp icmp-type 129 state disable logging off enable
filter6 add icmp_router_adv interface lan1 direction in action pass protocol ipv6-icmp icmp-type 134 state disable logging off enable
filter6 add icmp_neigh_sol interface lan1 direction in action pass protocol ipv6-icmp icmp-type 135 state disable logging off enable
filter6 add icmp_neigh_adv interface lan1 direction in action pass protocol ipv6-icmp icmp-type 136 state disable logging off enable

# フィルタ定義(LAN->WANは動的フィルタで全開、WAN->LANは全閉じ)
filter6 add lan_pass interface lan1 direction out action pass state enable logging off enable
filter6 add wan_block interface lan1 direction in action block state disable logging on enable
# pppoe経由ではIPv6通信しない
filter6 add wan_block2 interface pppoe0 direction in/out action block state disable logging on enable

# lan1のprefixはRAからつける(transix環境なら2409とかが降ってくる)
interface lan1 add router-advertisement
# lan1結線してprefixが降ってきたか見る(多少時間かかるので待つ)
show status interface lan1

# デフォルトゲートウェイもRAから
route6 add default router-advertisement interface lan1
show status route6

# このあたりでpingぐらいは通るはずなのでGooglePublicDNSに投げてみる
ping6 2001:4860:4860::8888

# DHCPv6で色々取る(DNSサーバとNTPサーバが降ってくる)
dhcp6 client interface lan1
dhcp6 client enable
show status dhcp6

# ルーター自身の参照DNSを設定
resolver address add dhcp6
resolver enable

# フォワードするDNSを設定
dns forwarder add dhcp6

# NTPサーバを設定
ntp mode client
ntp server add dhcp6
ntp enable
show status ntp

transixの設定

SEIL/x86 で DS-Lite を元に設定していく。

# フィルタでIP-in-IP通信を通す
filter6 add dslite_pass interface lan1 direction in/out action pass protocol 4 state disable logging off above wan_block

# トンネル作成して名前もつける
interface tunnel0 tunnel dslite gw.transix.jp
interface tunnel0 description Transix
show status interface tunnel0

# トンネルにフィルタ設定(IPv4の内->外は全開で他は閉じる)
filter add dslite_lan_pass interface tunnel0 direction out action pass state enable logging off enable
filter add dslite_wan_block interface tunnel0 direction in action block state disable logging on enable
filter6 add dslite_block interface tunnel0 direction in/out action block logging on

# 元記事に沿って各パラメータ設定
interface tunnel0 mtu 1500
interface tunnel0 unnumbered
option ipv6 avoid-path-mtu-discovery off

# デフォルトゲートウェイ変更
route delete default
route add default tunnel0 distance 10
route add default pppoe0 distance 20
show status route

pingでテストしてみる

  • SEIL側で tcpdump interface tunnel0 expression icmp
  • 適当なPC側で ping -4 -t 8.8.8.8

なんか流れていればOK

LAN側へのIPv6

ユニークローカルアドレスを振りNAT6する。ブリッジしてもいいが怖いのでやらなかった。

まずはここでprefixを生成する。IPV6 Address Generator - Generate IPV6 with Global & Subnet ID

# 作ったprefixを元にアドレスをlan0に振る。適当に1
interface lan0 add fd12:3456:dead:beef::1/64

# NAT6の定義。external側はlan1に振られているprefixをコピペ
# typeにtransparentとngnがあるが違いが分からない。transparentはprefixを付け替えてるだけ
show status interface lan1
nat6 add mynat6 type transparent internal fd12:3456:dead:beef::/64 external 2409:9876:5432:1012::/64 interface lan1 ndproxy on

# lan0にDHCPv6を立てる。WAN側から貰ってきたものをそのまま流す
dhcp6 server interface lan0 dns add dhcp6
dhcp6 server interface lan0 sntp add dhcp6
dhcp6 server interface lan0 enable

# lan0にRA流す。autoにするとinterfaceについてるprefixを流してくれる。
# autoは手で入れようとしたら入らなかったが、enableとかするタイミングで入った気がする
# rtadvd interface lan0 advertise add auto
# o-flagが無いとDHCPv6を見てくれない
rtadvd interface lan0 other-flag on
rtadvd interface lan0 enable
rtadvd enable
# 最近はRAでDNSを配れるようになったらしい。これを入れる場合はo-flag・DHCPv6無しでも行ける
rtadvd interface lan0 dns add fd12:3456:dead:beef::1

最後に

保存を忘れると停電したとき悲しい。

save-to flashrom