夜明け前の最も暗いとき

技術的なやったことをメモするブログ

CiscoルータでOCNのIPoEを使ってみる

先日、回線工事をしてOCNフレッツ光にしました。ただ、VDSLなのでどう頑張っても100Mbpsしか出ませんが…。 既存のPPPoEでもある程度、速度が出ますがせっかくですので今話題のネイティブIPv6を設定してみます。 使用機材はCisco systemsのC892FJです。

NTTのモデムはGigabitEthernet8に接続されています。ネット上の情報を参考にして、以下のコンフィグを投入しました。

ipv6 unicast-routing
ipv6 cef
ipv6 dhcp pool STATELESS
 import dns-server
 import domain-name

interface GigabitEthernet8
 ipv6 address autoconfig default
 ipv6 enable
 ipv6 dhcp client pd WAN_PREFIX

interface Vlan10
 ipv6 address WAN_PREFIX ::1:0:0:0:1/64
 ipv6 enable
 ipv6 nd other-config-flag
 ipv6 dhcp server STATELESS

ipv6を状態を確認してみます。

Router#sh ipv6 int brief
(略)
GigabitEthernet8       [up/up]
    FE80::520F:80FF:FEB0:D027
    2409:12:aaaa:bbbb:520F:80FF:FEB0:D027
Loopback0              [up/up]
    unassigned
(略)
Vlan10                 [up/up]
    FE80::520F:80FF:FEB0:D014

FE80から始まるアドレスは各インターフェイスに割り当てられるリンクローカルユニキャストアドレスであり、2409から始まるアドレスはOCN(正確にはVNE事業者)から割り当てられたグローバルユニキャストアドレスです。

Vlan10にもグローバルユニキャストアドレスが割り当てられるはずと思っていたのですが、ありません。OCNのサイトを確認してみると以下の記述が。

IPv6パススルー機能(IPv6ブリッジ機能)に対応している必要があります。

debugメッセージを見ると確かにprefix割り当てできないと表示がありました。

*Dec  5 16:45:03.538: IPv6 DHCP: Sending SOLICIT to FF02::1:2 on GigabitEthernet8
*Dec  5 16:45:03.558: IPv6 DHCP: Received ADVERTISE from FE80::212:E2FF:FE70:F1F4 on GigabitEthernet8
*Dec  5 16:45:03.558: IPv6 DHCP: Status code (NOPREFIX-AVAIL) in ADVERTISE from FE80::212:E2FF:FE70:F1F4 on GigabitEthernet8

既存のvlanにブリッジするのは少々躊躇われるので、別にDMZとしてvlan 20セグメントを作成してそこにブリッジします。

interface GigabitEthernet8
 bridge-group 1

interface Vlan20
 description ## IPv6 Passthrough ##
 no ip address
 bridge-group 1
 bridge-group 1 output-type-list 200

access-list 200 permit 0x86DD 0x0000

bridge 1 protocol vlan-bridge
bridge 1 route ip

アクセスリストを使ってIPv6以外のパケットをフィルタリングしています。

各PCやサーバにはTrunkで接続します。

interface GigabitEthernet6
 description ## To Server 1 ##
 switchport trunk native vlan 10
 switchport trunk allowed vlan 1,2,10,20,1002-1005
 switchport mode trunk
 no ip address

次に、サーバ(Linux)側でVLANに対応したインターフェイスを設定します。

jinglan@ubuntu:~$ sudo cat /etc/network/interfaces
...
auto enp4s0f2.20
iface enp4s0f2.20 inet6 manual

Ubuntuではインターフェイス名の後に.VLAN番号でVLANを扱うことができます。

また、グローバルアドレスは外側から容易に接続できるのでiptablesを設定し不要な接続ができないようにします。

jinglan@ubuntu:~$ cat /etc/iptables/rules.v6
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmpv6 -j ACCEPT
-A INPUT -p udp --dport 546:547 -j ACCEPT

-A INPUT -i lo -j ACCEPT
COMMIT

上手く設定が反映されていれば以下のようにIPv6アドレスが設定されます。

jinglan@ubuntu:~$ ip a
(略)
3: enp4s0f2.20@enp4s0f2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:23:f3:12 brd ff:ff:ff:ff:ff:ff
    inet6 2409:12:aaaa:bbbb:e559:81fc:f671:ad5e/64 scope global temporary dynamic
       valid_lft 599685sec preferred_lft 80735sec
    inet6 2409:12:aaaa:bbbb:6761:e8b1:4270:ba15/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 2591891sec preferred_lft 604691sec
    inet6 fe80::b523:6f37:91d9:5c17/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

jinglan@ubuntu:~$ systemd-resolve --status
Link 3 (enp4s0f2.20)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 2404:1a8:7f01:b::3
                      2404:1a8:7f01:a::3
          DNS Domain: flets-east.jp
                      iptvf.jp

実際につながるか試験します。

jinglan@ubuntu:~$ ping ipv6.google.com -c 4
PING ipv6.google.com(kix05s01-in-x0e.1e100.net (2404:6800:400a:808::200e)) 56 data bytes
64 bytes from kix05s01-in-x0e.1e100.net (2404:6800:400a:808::200e): icmp_seq=1 ttl=54 time=13.9 ms
64 bytes from kix05s01-in-x0e.1e100.net (2404:6800:400a:808::200e): icmp_seq=2 ttl=54 time=14.0 ms
64 bytes from kix05s01-in-x0e.1e100.net (2404:6800:400a:808::200e): icmp_seq=3 ttl=54 time=14.0 ms
64 bytes from kix05s01-in-x0e.1e100.net (2404:6800:400a:808::200e): icmp_seq=4 ttl=54 time=13.8 ms

--- ipv6.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 13.893/13.979/14.078/0.141 ms
jinglan@ubuntu:~$

IPv6の名前解決・PINGが飛んだのでOKです。速度測定したところほぼ100Mbpsに近い値が出ました。

f:id:jianlan:20181210163022p:plain
IPv6 SpeedTest

次回はDNS周りの設定をします。