ルーター買ってネットに繋ぐまで

YAMAHAルーター Advent Calendar 2017 - Adventar  - 1日目

みなさんYAMAHAルーター使っていますか。
もうすぐクリスマス、まだ持っていない方は自分のご褒美に是非購入しましょう。

さて、タイトルにあるように今回はそんな購入間もない方が「買ったら何すればいいの」を書いていこうと思います。
今回は手元にRTX1100(古っ)があって検証が楽なので、これを前提に進めていきます。

 はじめに

まず、ネットに繋ぐために必要なもの(物理)を考えます。

  • RTX1100
  • プロバイダからもらうアカウント情報(PPPoE)
  • LANケーブル

本当はコンソールケーブルなども欲しいですが、今回は「とりあえずルーター買ったぜヒャッハー!!」って人向けに行こうと思います。

ルーターにログインしてみよう

PCとRTX1100をLANケーブルでつなぎます。
そして、RTX1100を裏返すとそこにMACアドレスが書いてあるので、それを使ってリンクローカルなアドレスを作ります。

www.itbook.info

そしたら、telnetコマンド(windowsの場合は機能の有効化しないと使えないかも)を使って接続します。

telnet FE80:0000:0000:0000:AAAA:AAFF:FEAA:AAAA

Password:と出てきたら何も入力せずにエンター、その後なんかゴニョゴニョ出てくれば成功です。
※ちなみにRTX1200とかそれ以降は初期化すると192.168.100.1のアドレスが割り当てられているので、それでtelnet接続できます。

セットアップしてみよう

まず、ネットに繋ぐために必要なもの(機能)を考えます。

これらをセットアップしていきます。

まずは管理者ログイン こちらもパスワードは何も入力せずにエンター

> administrator

IPアドレスの割当

# ip route default gateway pp 1
# ip lan1 address 192.168.100.1/24

PPPoE

# pp select 1
# pp always-on on
# pppoe use lan3
# pp auth accept pap chap
# pp auth myname [プロバイダからもらったID] [プロバイダからもらったパスワード]
# ppp lcp mru on 1454
# ppp ipcp ipaddress on
# ppp ipcp msext on
# ppp ccp type none
# ip pp mtu 1454
# ip pp nat descriptor 1
# pp enable 1
# pp select none

NAT

# nat descriptor type 1 masquerade

DHCP

# dhcp service server
# dhcp server rfc2131 compliant except remain-silent
# dhcp scope 1 192.168.100.100-192.168.100.199/24

疎通確認

ここまで設定終わったら、LAN3とONUをつなぎます。
LAN1→PC
LAN3→ONU
の状態にして、PCからping 8.8.8.8ping google.comをやって帰ってきたら成功です。

追記

macアドレスからipv6アドレス作るの地味に面倒だったので、雑にコード書いてみた。
ブラウザのコンソールにコピペ&エンターして、generateAddress("XXXXXXXXXXXX")(カッコ内は文字列のMACアドレス)って叩けば多分アドレスになる。

const generateAddress = (mac) => {
    const t = mac
        .split("")
        .reduce((a, b) => a.concat(parseInt(b, 16).toString(2)), [])
        .map(e => ("0000" + e).slice(-4))generateAddress
        .map((e, i) => i === 1 ? e.replace(/(?:.{2})(.)+?/,Math.pow(e[2] - 1, 2)+"") : e)
        .map(e => parseInt(e,2).toString(16))
        .toString()
        .replace( /,/g,"");
    return `FE80:0000:0000:0000:${t.substring(0,4)}:${t.substring(4,6)}FF:FE${t.substring(6,8)}:${t.substring(8)}`.toLocaleUpperCase();
};