stop-the-world

takuya-a のブログ

EdgeRouter設定メモ: IPv6/IPoE + DS-Liteでインターネット高速化

https://www.speedtest.net/result/7772608929.png

家庭用の LAN を IPv6 に移行したら、下り 400 - 500 Mbps、上り 500 - 600 Mbps 出るようになったので、環境や設定などを共有します。

参考:

blog.amedama.jp techlog.iij.ad.jp

環境

CLI による操作

EdgeRouter は Web ベースの GUI での設定と、CLI での設定が可能。せっかくなので CLI で設定することにした。CLI に接続するには、以下の方法がある:

  • ssh での接続
    • デフォルトで eth0 に LAN ケーブルを接続すると $ ssh ubnt@192.168.1.1 で接続できる
    • ネットワークの設定変更などで見えなくなることがある
  • シリアルコンソールでの接続
    • GNU Screen で接続できる
    • ネットワークの設定変更によらず通信できる

EdgeRouter 6P には RJ45 のシリアルコンソールがついているので、今回はシリアルコンソールで設定することにした。

PC との接続にはこのようなガジェットを使う:

【CISCO互換ケーブル】FTDI chipset USB RJ45 コンソールケーブル

【CISCO互換ケーブル】FTDI chipset USB RJ45 コンソールケーブル

ボーレートは 115200(ユーザマニュアルに書いてあった)。デバイスファイルは環境によって変わるが、たとえば /dev/tty.usbserial-AL03M04H だった場合は、以下で接続できる:

$ screen /dev/tty.usbserial-AL03M04H 115200

EdgeOS のコマンド

EdgeOS のシェルには、操作モード(プロンプトが $ )と設定モード(プロンプトが # )の2つの状態がある。 それぞれ使えるコマンドが異なるので注意。

基本コマンド

頻出コマンドは以下:

  • show
    • (操作モードのみ)いろいろなシステム情報の表示
  • configure
    • (操作モードのみ)操作モードから設定モードに入る
  • exit
    • (設定モードのみ)設定モードから操作モードに戻る
  • set
    • (設定モードのみ)システム・シェルオプションの設定
  • commit
    • (設定モードのみ) set したものをすべて反映する(再起動すると変更は失われる)
  • compare
    • (設定モードのみ) commit する前に diff を確認できる
  • save
    • (設定モードのみ) commit したものをすべてファイルシステムに書き込む(再起動しても設定の変更が残る)
  • reboot
    • (操作モードのみ)機器を再起動する
  • ping ping6
    • (操作モードのみ)機器からの疎通を確認する(それぞれ IPv4/IPv6 で接続)

なお、Tab を 1 回入力するとサブコマンドやパラメータの候補が、Tab を 2 回入力すると説明が表示される。

EdgeOS は VyOS からのフォークなので、VyOS のドキュメントも参考になる:

操作モードのコマンド一覧

ubnt@ubnt:~$
Possible completions:
  add           Add an object to a service
  clear         Clear system information
  configure     Enter configure mode
  connect       Establish a connection
  copy          Copy data
  debug         Enable debugging of specified routing protocol
  delete        Delete a file
  disconnect    Take down a connection
  generate      Generate an object
  initial-setup Enter initial configuration dialog
  no            Disable or reset operational variable
  ping          Send Internet Control Message Protocol (ICMP) echo request
  ping6         Send IPv6 Internet Control Message Protocol (ICMP) echo request
  reboot        Reboot the system
  release       Release specified variable
  rename        Re-name something.
  renew         Renew specified variable
  reset         Reset a service
  restart       Restart a service
  set           Set system or shell options
  show          Show system information
  shutdown      Shutdown the system
  telnet        Telnet to <hostname|IPv4 address>
  terminal      Control terminal behaviors
  traceroute    Track network path to <hostname|IPv4 address>
  traceroute6   Track network path to <hostname|IPv6 address>
  update        Run an update command

設定モードのコマンド一覧

ubnt@ubnt#
Possible completions:
  confirm   Confirm prior commit-confirm
  comment   Add comment to this configuration element
  commit    Commit the current set of changes
  commit-confirm
        Commit the current set of changes with 'confirm' required
  compare   Compare configuration revisions
  copy      Copy a configuration element
  delete    Delete a configuration element
  discard   Discard uncommitted changes
  edit      Edit a sub-element
  exit      Exit from this configuration level
  load      Load configuration from a file and replace running configuration
  loadkey   Load user SSH key from a file
  merge     Load configuration from a file and merge running configuration
  rename    Rename a configuration element
  rollback  Rollback to a prior config revision (requires reboot)
  run       Run an operational-mode command
  save      Save configuration to a file
  set       Set the value of a parameter or create a new element
  show      Show the configuration (default values may be suppressed)

設定情報の表示

  • show configuration
    • running configuration を表示
  • show configuration all
    • デフォルトの情報を含む running configuration を表示
  • show configuration commands
    • running configuration を表示(あとでこれをコピペすれば再現できる)

ルーティングの表示

インタフェースごとの設定情報の表示

  • show interfaces ethernet eth0
    • eth0 の設定情報の表示

物理構成

インターネット回線
└── ONU(光回線終端装置)
    └── EdgeRouter 6P
        ├── 無線 AP(ブリッジモード)
        │   └── スマートフォンなど(無線 LAN 接続)
        └── PC など(有線 LAN 接続)

今回は EdgeRouter の eth0 を WAN (アップリンク)とし、ONU に LAN ケーブルで接続した。 eth1 eth2 にはブリッジモードの無線 AP や PC などの DHCP クライアントがぶら下がる想定。

IPoE + DSLite の設定

まずは EdgeRouter から IPv6 で接続できるようにし、そのあと DS-LiteIPv4 接続(IPv4 over IPv6 トンネル)できるように設定する。

IPv6 アドレスの自動設定 (autoconf) と割当ての確認

eth0 に RA (Router Advertisement) を利用した IPv6 アドレスとルーティングの自動設定を行うには、以下のようにする。

configure
set interfaces ethernet eth0 ipv6 address autoconf
commit
exit

10分ほど待つと RA が流れてきて IPv6 アドレスが設定される。 $ show interfaces コマンドで確認できる:

ubnt@ubnt:~$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface    IP Address                        S/L  Description
---------    ----------                        ---  -----------
eth0         192.168.1.1/24                    u/u
             ****:****:****:****:****:****:****:****/64
eth1         -                                 u/D
eth2         -                                 u/D
eth3         -                                 u/D
eth4         -                                 u/D
eth5         -                                 u/D
lo           -                                 A/D

IPv6 のルーティングテーブルの情報は $ show ipv6 route で確認できる:

ubnt@ubnt:~$ show ipv6 route
IPv6 Routing Table
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       IA - OSPF inter area, E1 - OSPF external type 1,
       E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
       N2 - OSPF NSSA external type 2, B - BGP
Timers: Uptime
IP Route Table for VRF "default"
K      ::/0 [0/1024] via fe80::212:e2ff:fe86:e24c, eth0, 00:02:48
C      2409:250:8a00:d700::/64 via ::, eth0, 00:02:37
C      fe80::/64 via ::, eth0, 00:19:49

ここまでで $ ping6 2001:4860:4860::8888Google Public DNSIPv6 アドレス)が通るようになる:

ubnt@ubnt:~$ ping6 2001:4860:4860::8888
PING 2001:4860:4860::8888(2001:4860:4860::8888) 56 data bytes
64 bytes from 2001:4860:4860::8888: icmp_seq=1 ttl=58 time=4.44 ms
64 bytes from 2001:4860:4860::8888: icmp_seq=2 ttl=58 time=4.74 ms
...

ただし、 IPv4 の設定をしていないので $ ping 8.8.8.8 は通らない:

ubnt@ubnt:~$ ping 8.8.8.8
connect: Network is unreachable

DS-Lite による IP-IP トンネルの設定

local-ip には eth0IPv6 アドレス、 remote-ip には AFTR の IPv6 アドレスを設定する(IIJ の場合は transix のアドレスを設定)。

configure
set interfaces ipv6-tunnel v6tun0 encapsulation ipip6
set interfaces ipv6-tunnel v6tun0 local-ip ****:****:****:****:****:****:****:****  # 割り当てられた IPv6 アドレス
set interfaces ipv6-tunnel v6tun0 remote-ip 2404:8e01::feed:100  # transix の AFTR
set interfaces ipv6-tunnel v6tun0 mtu 1500
set interfaces ipv6-tunnel v6tun0 multicast disable
set protocols static interface-route 0.0.0.0/0 next-hop-interface v6tun0
commit
exit

これで $ ping 8.8.8.8 が通る:

ubnt@ubnt:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=123 time=4.58 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=123 time=4.14 ms

ルータ再起動後でもすぐに使えるようにする

上記の設定だと、ルータを再起動後すると、IPv6 アドレスや対向ルータへのルーティングが RA として流れてくるまで 10分ほど接続できない。

設定後すぐに使いたい場合は IPv6 アドレスを設定し、対向ルータのリンクローカルアドレスを next hop に設定する。 対向ルータのリンクローカルアドレスは、 $ show ipv6 neighbors でわかる( fe80:: で始まるアドレス):

ubnt@ubnt:~$ show ipv6 neighbors
fe80::212:e2ff:fe86:e24c dev eth0 lladdr 00:12:e2:86:e2:4c router REACHABLE
2409:250:8a00:d700::fffe dev eth0 lladdr 00:12:e2:86:e2:4c router REACHABLE

reboot などですべての設定をクリアし、以下のコマンドで再設定する:

configure
set interfaces ethernet eth0 address ****:****:****:****:****:****:****:****/64  # 割り当てられた IPv6 アドレス
set interfaces ipv6-tunnel v6tun0 encapsulation ipip6
set interfaces ipv6-tunnel v6tun0 local-ip ****:****:****:****:****:****:****:****  # 割り当てられた IPv6 アドレス
set interfaces ipv6-tunnel v6tun0 remote-ip 2404:8e01::feed:100
set interfaces ipv6-tunnel v6tun0 mtu 1500
set interfaces ipv6-tunnel v6tun0 multicast disable
set protocols static interface-route 0.0.0.0/0 next-hop-interface v6tun0
set protocols static route6 ::/0 next-hop fe80::212:e2ff:fe86:e24c interface eth0  # 対向ルータのリンクローカルアドレス
commit
exit

DNS の設定

Google Public DNSを使う。

configure
set system name-server 2001:4860:4860::8888
set system name-server 2001:4860:4860::8844
commit
exit

ここまでで $ ping6 google.com $ ping google.com が通るようになる。

タイムゾーンの設定

タイムゾーンAsia/Tokyo に。

configure
set system time-zone 'Asia/Tokyo'
commit
exit

NTP の設定

NTP サーバはネットワーク的に近い ntp.nict.jp を使う。

configure
delete system ntp server
set system ntp server 'ntp.nict.jp'
commit
exit

DNS forwarding の設定

ルータを DNS フォワーダとして動作させる。

set service dns forwarding cache-size 5000
set service dns forwarding options listen-address=192.168.1.1
set service dns forwarding listen-on eth1
set service dns forwarding listen-on eth2
set service dns forwarding listen-on eth3
set service dns forwarding listen-on eth4
set service dns forwarding listen-on lo

DHCP の設定

DHCP で配布する DNS サーバの IP は、上記で設定した 192.168.1.1 (自分自身)にする。

set service dhcp-server disabled false
set service dhcp-server hostfile-update disable
set service dhcp-server shared-network-name HOME authoritative enable
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 default-router 192.168.1.1
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 dns-server 192.168.1.1
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 lease 86400
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 domain-name home
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 start 192.168.1.64 stop 192.168.1.254

eth1 - eth4 の設定

とくに VLAN を分けたりはしないので、 eth1 - eth4 を同じブリッジ br0 に接続する。 EdgeOS で bridge を使うとハードウェアにオフロードされない(オフロードされるのは switch )が、EdgeRouter 6P には switch chip が搭載されておらず、 bridge で接続するしかない。

delete interfaces ethernet eth0 address 192.168.1.1/24
set interfaces bridge br0 address 192.168.1.1/24
set interfaces ethernet eth1 bridge-group bridge br0
set interfaces ethernet eth2 bridge-group bridge br0
set interfaces ethernet eth3 bridge-group bridge br0
set interfaces ethernet eth4 bridge-group bridge br0

全設定

ファイアウォールの設定は省略)

configure
set interfaces ethernet eth0 address ****:****:****:****:****:****:****:****/64
set interfaces ipv6-tunnel v6tun0 encapsulation ipip6
set interfaces ipv6-tunnel v6tun0 local-ip ****:****:****:****:****:****:****:****
set interfaces ipv6-tunnel v6tun0 remote-ip 2404:8e01::feed:100
set interfaces ipv6-tunnel v6tun0 mtu 1500
set interfaces ipv6-tunnel v6tun0 multicast disable
set protocols static interface-route 0.0.0.0/0 next-hop-interface v6tun0
set protocols static route6 ::/0 next-hop fe80::212:e2ff:fe86:e24c interface eth0

set system name-server 2001:4860:4860::8888
set system name-server 2001:4860:4860::8844

set system time-zone 'Asia/Tokyo'

delete system ntp server
set system ntp server 'ntp.nict.jp'

set service dns forwarding cache-size 5000
set service dns forwarding options listen-address=192.168.1.1
set service dns forwarding listen-on eth1
set service dns forwarding listen-on eth2
set service dns forwarding listen-on eth3
set service dns forwarding listen-on eth4
set service dns forwarding listen-on lo

set service dhcp-server disabled false
set service dhcp-server hostfile-update disable
set service dhcp-server shared-network-name HOME authoritative enable
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 default-router 192.168.1.1
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 dns-server 192.168.1.1
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 lease 86400
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 domain-name home
set service dhcp-server shared-network-name HOME subnet 192.168.1.0/24 start 192.168.1.64 stop 192.168.1.254

delete interfaces ethernet eth0 address 192.168.1.1/24
set interfaces bridge br0 address 192.168.1.1/24
set interfaces ethernet eth1 bridge-group bridge br0
set interfaces ethernet eth2 bridge-group bridge br0
set interfaces ethernet eth3 bridge-group bridge br0
set interfaces ethernet eth4 bridge-group bridge br0

commit
exit

ファームウェアのアップデート

ファームウェアのアップデートは、ルータがインターネットに繋がっていれば、イメージの URL を指定するだけで勝手にダウンロードしてくれてアップデートできるので簡単。

Ubiquiti Networks - Downloads から最新のファームウェアを探し、URL をコピーする(対象のファームウェアを選んだあと、 DOWNLOAD ボタンを押し、条項に同意すると URL が表示される)。

URL を指定してイメージを組み込む:

$ add system image https://dl.ubnt.com/firmwares/edgemax/v1.10.x/ER-e300.v1.10.7.5127989.tar

show system image でブートイメージが切り替わったのが確認できる:

ubnt@ubnt:~$ show system image
The system currently has the following image(s) installed:

v1.10.7.5127989.181001.1228    (default boot)
v1.9.8.5012183.170825.0258     (running image)

A reboot is needed to boot default image

reboot してからまた見てみると、 v1.10 で動いていることがわかる:

ubnt@ubnt:~$ show system image
The system currently has the following image(s) installed:

v1.10.7.5127989.181001.1228    (running image) (default boot)
v1.9.8.5012183.170825.0258

show version でも切り替わっていることが確認できる:

ubnt@ubnt:~$ show version
Version:      v1.10.7
Build ID:     5127989
Build on:     10/01/18 12:28
Copyright:    2012-2018 Ubiquiti Networks, Inc.
HW model:     EdgeRouter 6P
HW S/N:       ************
Uptime:       02:16:26 up 11 min,  1 user,  load average: 0.01, 0.10, 0.11

設定の参考にしたエントリ