LoginSignup
9
1

More than 1 year has passed since last update.

Cisco 841M でひかり電話ありフレッツ光を直収する (DS-Lite もあるよ)

Last updated at Posted at 2022-12-13

前提

フレッツ光ネクスト ファミリータイプ とオプションのひかり電話を契約している.ひかり電話契約によってアドレス取得方法が SLAAC ではなく DHCPv6-PD になっている.送られてきたひかり電話ルータ (HGW) を利用せずに, ONU から直接収容している.そのため DHCPv6-PD で委譲されるプレフィクスの長さは /56 となっている.

WAN 側は ONU に直接接続し, LAN 側はスイッチに接続する. SLAAC によるアドレス取得を行うときは RA / RS を疎通させるために WAN - LAN 間をブリッジする必要があったが,今回は必要ない (L3 のルーティングで解決できる) .すなわちファイアウォールが設定可能である.

今回は LAN を 1 つ作成し, /64 のプレフィクスを RA によって広告して SLAAC によるアドレス自動構成を行わせる. LAN 内での DHCPv6 利用はしない.

インターフェースの割り当て

今回は以下のようにインターフェースを割り当てる:

  • GigabitEthernet0/0: LAN 側 (Vlan1 スイッチの 1 ポートとして機能)
  • GigabitEthernet0/4: WAN 側 (IPv6 のみ)
  • Vlan1: LAN 側 (スイッチとして機能, デュアルスタック)
  • Tunnel0: DS-Lite 用トンネル (IPv4 のみ)

GigabitEthernet0/0 ~ 0/3 は Vlan1 の配下にあるスイッチとして機能する (switchport) .

設定

時刻の設定 (オプション)

特に必要ではないが,各種時刻のタイムゾーンが JST にそろっていたほうがうれしいので設定しておく.

clock timezone JST 9 0
ntp server asia.pool.ntp.org

SSH 関連の設定 (オプション)

私は継続的なメンテナンスに SSH を用いることにしたため,よりセキュアに使える設定を探した.

# 4096 ビットの RSA 鍵を使う
crypto key generate rsa label SSH-KEY modulus 4096
ip ssh rsa keypair-name SSH-KEY

# SSH v2 を使う
ip ssh version 2

# DH 鍵交換時の最小鍵長を 4096 ビットにする
ip ssh dh min size 4096

# SSH に関するログを有効化する
ip ssh logging events

# Telnet を無効化する
line vty 0 4
  transport input ssh
exit

これらの設定については以下の記事を参考にしている:

また, Cisco 841M の IOS は鍵交換アルゴリズムとして diffie-hellman-group-exchange-sha1diffie-hellman-group14-sha1 の二つにしか対応しておらず,またホスト鍵のアルゴリズムについて ssh-rsa のみをオファーするため,クライアントの SSH クライアントによっては接続時にエラーとなる.そのときは以下の設定を ~/.ssh/config に追加すればよい.

Host <LAN_IP_ADDR>
    KexAlgorithms +diffie-hellman-group14-sha1
    HostKeyAlgorithms ssh-dss,ssh-rsa

ここで <LAN_IP_ADDR> はルータの LAN 側 IP アドレスで置き換えられる.

DHCPv6-PD の受信

Gig0/4 で DHCPv6 クライアントを有効にし, PD を受ける:

interface GigabitEthernet0/4
 ipv6 enable
 ipv6 dhcp client pd PD_PREFIX
 ipv6 address PD_PREFIX ::DEAD:BEEF/64
exit

ここで ::DEAD:BEEF は範囲内であれば任意のアドレスを利用できる.これは IPv6 パケットを送出するときに必要となる.

LAN 側にプレフィクスを広告

次は /64 プレフィクスを切り出して LAN 側に広告する:

interface Vlan1
 ipv6 enable
 ipv6 address PD_PREFIX ::1/64
 ipv6 nd other-config-flag
exit

ここで ::1 の代わりに任意のアドレスを指定できる.先ほど設定した Gig0/0 のものとは別のアドレスにすること.

ND の転送を無効化

DHCPv6-PD を使った構成では ND (Neighbor Discovery) を転送する必要がないため,無効化する:

no ip forward-protocol nd

IPv6 のルーティングを有効化

上位ルータのアドレスを確認する:

shell
$ show ipv6 dhcp interface Gig0/4
GigabitEthernet0/4 is in client mode
  Prefix State is OPEN
  Renew will be sent in 01:42:48
  Address State is IDLE
  List of known servers:
+   Reachable via address: FE80::10FF:FE02:2062
    DUID: [REDACTED]
    Preference: 0
    Configuration parameters:
      IA PD: IA ID 0x00070001, T1 7200, T2 10800
        Prefix: 2409:[REDACTED]::/56
                preferred lifetime 12600, valid lifetime 14400
                expires at Dec 06 2022 04:38 AM (13368 seconds)
      DNS server: 2404:1A8:7F01:A::3
      DNS server: 2404:1A8:7F01:B::3
      Domain name: flets-east.jp
      Domain name: iptvf.jp
      Information refresh time: 0
  Prefix name: PD_PREFIX
  Prefix Rapid-Commit: disabled
  Address Rapid-Commit: disabled

ハイライトさせた部分がルータのアドレスである.これを使って以下のようにルーティングを設定する:

ipv6 unicast-routing
ipv6 cef
ipv6 route ::/0 GigabitEthernet0/4 FE80::10FF:FE02:2062

このアドレスは環境によって変わる可能性が高いので,自身の環境のものを使うこと.

動作確認

$ ping 2606:4700:4700::1111
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2606:4700:4700::1111, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/6/12 ms

DS-Lite の設定 (オプション)

IPv4 通信を利用するために,今回は Transix 網の DS-Lite を設定してみる:

interface Tunnel0
 ip address 192.0.0.2 255.255.255.252
 tunnel source Vlan1
 tunnel mode ipv6
 tunnel destination <AFTR_ADDRESS>
exit

<AFTR_ADDRESS> については,以下から環境に合うものを選んで使う:

NTT 東日本 NTT 西日本
2404:8e00::feed:100 2404:8e01::feed:100
2404:8e00::feed:101 2404:8e01::feed:101

トンネルが UP になっていることを確認する:

$ show interface Tunnel0
Tunnel0 is up, line protocol is up
  Hardware is Tunnel
  Internet address is 192.0.0.2/30
  MTU 1460 bytes, BW 100 Kbit/sec, DLY 50000 usec,
     reliability 255/255, txload 73/255, rxload 81/255
  Encapsulation TUNNEL, loopback not set
  Keepalive not set
  Tunnel linestate evaluation up
  Tunnel source 2409:[REDACTED]::1 (Vlan1), destination 2404:8E00::FEED:101
   Tunnel Subblocks:
      src-track:
         Tunnel0 source tracking subblock associated with Vlan1
          Set of tunnels with source Vlan1, 1 member (includes iterators), on interface <OK>
  Tunnel protocol/transport IPv6
  Tunnel TTL 255
  Tunnel transport MTU 1460 bytes
  Tunnel transmit bandwidth 8000 (kbps)
  Tunnel receive bandwidth 8000 (kbps)
  (以下略)

あとは IPv4 のデフォルトルートを Tunnel0 に向ければ完了:

ip route 0.0.0.0 0.0.0.0 Tunnel0

動作確認

$ ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/8 ms

ファイアウォール (オプション)

このまま運用するのは危険なので,一般的なファイアウォールを設定しておく:

# 戻りパケットを良い感じにする CBAC (Context-Based Access Control)
ip inspect name firewall tcp
ip inspect name firewall udp
ip inspect name firewall ftp
ip inspect name firewall icmp

# こちらは IPv6 版
ipv6 inspect name firewallv6 tcp
ipv6 inspect name firewallv6 udp
ipv6 inspect name firewallv6 icmp
ipv6 inspect name firewallv6 ftp

# ip inspect によって許可されたパケットを除いて外からの入力パケットは全部弾く
access-list 100 remark WANv4_IN
access-list 100 deny ip any any

# IPv6 は ND プロトコルの通信と DS-Lite の ATFR は許可しておく
ipv6 access-list WANv6_IN
 permit icmp any any nd-na
 permit icmp any any nd-ns
 permit ipv6 host 2404:8E00::FEED:100 any
 permit ipv6 host 2404:8E00::FEED:101 any
 deny ipv6 any any
exit

# IPv4 の ACL を Tunnel0 に設定
interface Tunnel0
 ip inspect firewall out
 ip access-group 100 in
exit

# IPv6 の ACL を Gig0/4 に設定
interface GigabitEthernet0/4
 ipv6 inspect firewallv6 out
 ip access-group WANv6_IN in
exit

以上で,ひかり電話ルータを捨ててもインターネットに接続できるようになった.

参考文献

文中で提示したものは除いています.

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1