OpenWRTを導入するにあたっての注意点とか、設定周りを解説したいと思います。初回の投稿から1年以上たち、OpenWRTもバージョンアップされ、自分のスキルも上がってきたので全面刷新しました。
ルーターはとにかく設定が大変で、良くわからずに設定すると、全く通信できなかったり、セキュリティ的にまずい状態のまま放置されたりといった事が起こりがちです。
ということで、OpenWRTをメインルーターにした設定編を解説します。
まずは基本ということで、以下のようなネットワークを構成した場合の設定を解説します。
要件としては
1.IPv6/IPv4 で通信できる。
2.我が家は楽天ひかりを使っているので、PPPoE/DS-Lite両対応にする。
3.LAN側は、LAN/GUEST/IOT 3つのセグメントを持っている。
4.WIFIにもそれぞれLAN/GUEST/IOTのアクセスポイントを用意する。
楽天ひかりですが、ひかり電話無しで契約しています。ひかり電話ありだと、また設定が変わってきます。ひかり電話ありのパターンは実証できていないので解説できません。
3つのセグメントは
LAN:スマホ/PC/チューナーレスTVなど、メインで使うセグメント。
GUEST:訪問客用のゲストAP。
IOT:監視カメラ/ホームセキュリティなどのIT機器用。
ネットワーク図にすると、下記の感じになります。

プロトコルに関してですが、PPPoEは標準で入りますが、DS-Liteは標準では組み込まれないので、ビルド時のmake menuconfigで以下の項目にチェックします。
Network
ds-liteにチェックをしてビルドします。

Softwareからインストールする場合は以下を選択します。

ちなみに、OCN系はMAP-Eですが、その場合は以下の項目にチェックをしてビルドしてください。

Softwareからインストールする場合は以下を選択します。

今回はPBR(Policy Based Routing) を使って、DS-LiteとPPPoEを使い分ける設定をします。
DS-Liteは、速度は出るのですが、プロバイダ側で大規模NATが使われているため、IPv4のグローバルIPはもらえずインターネット側から接続することはできません。一方PPPoEは、速度は出ませんがIPv4のグローバルIPがもらえるので、インターネット側から接続することが可能です。この2つをうまい具合に使い分けるキモがPBR です。
make menuconfigでは以下の項目にチェックをしてビルドします。
Luci - Applications

Softwareから導入する場合は、以下のプラグインを導入します。

設定が完了したネットワークの全体はこんな感じです。
実際の環境のスクリーンショットではないので、wan側がエラーになっていますが気にしないでください

lanの設定は以下を参考に設定します。




DHCP-Options には、42,192.168.20.1を指定しておきます。この意味はNTPサーバー(192.168.20.1 このルーター自身)を配信するという意味になります。この42は、DHCPオプションコードというもので、ここに一覧がありますので参考にしてください。また、DHCPv4 NTPサーバーの指定はドメイン名では配信できません。必ずIPアドレスを指定してください。DHCPv6ではドメイン名で配信できるので混乱しますが注意して下さい。なお、DHCPオプションコードを配信したからと言ってそれを使うかはクライアント次第です。

IPv6のDHCPの設定はこんな感じで設定します。特に以下の項目が重要です。
RA-Service : relay mode
DHCPv6-Service : relay mode
NDP-Proxy : relay mode
全部relay modeで設定します。これは WAN6側のRA DHCPv6 NDPをLAN側に中継するという意味です。ISPからPDがない場合は、この設定にしないとGUAのプレフィックスがクライアントに伝わりません。ISPはULAの配布はしないので、ULAは貰えないと思ってください。
一方、ISPからPDがある場合はこの辺りの設定が変わってきますが、これについては実証できないので解説できません。ご了承ください。

iotの設定は以下を参考に設定します。




DHCP-Optionsは、6,8.8.8.8,8.8.4.4 42,216.239.35.4を指定します。
これの意味は、DNSはgoogleのパブリックDNS、NTPサーバーはgoogle.time.comを配信するという意味になります。

iotは、IPv6接続はできないようにしました。この辺は臨機応変に変更してください。

guestの設定はこんな感じです




DHCP-Optionsは、6,8.8.8.8,8.8.4.4 42,216.239.35.4を指定します。

guestでは、IPv6は使用しないこととしています。

Deviceの設定は以下です

LAN1,LAN2の口がLANに設定されます

LAN3の口がGUESTに設定されます

LAN4の口がIOTに設定されます

WAN側はこんな設定です。
dsliteの設定はこんな感じです



map-eは当方の環境では確認できないので載せていません。
この辺の設定を詳しく解説されているサイトがあるので、参考にしてください。
pppoeの設定はこんな感じです
username password は各自で設定してください

ポイントは、gateway metricに20を設定しているところです。こうすることによって、ルーティングの際DS-LiteのWANが優先されます。(数字が小さい方が優先される、DS-Liteは0)


wan6の設定はこんな感じです




ポイントは以下の3つの設定です
WANの設定の注意点として wan6,pppoe,dslite はNetworkでは別々ですが、物理的にはWANという1つのポートだということを忘れないでください。
RA-Service : relay-mode
DHCPv6-Service : relay-mode
NDP-Proxy : relay-mode
Designated masterはチェックしておきます

Firewall設定はこんな感じです
ポイントは、wanのMasqueradingのチェックは外して、wpppoeのチェックを付けることです。こうすることで、WAN側のDS-Liteは2重NATにはならず、PPPoEにはNATが効くようになります。

Firewall - Traffic Rulesに以下を追加します
追加したNetworkにはルールが設定されていないので、ここで設定します。

Wirelessの設定はこんな感じです

ポイントはアクセスポイントに対して、対応したNetworkを設定することです



PPPoE と DS-Lite の使い分けですが、192.168.20.1~192.168.20.239 は DS-Lite
192.168.20.241~192.168.20.254 はPPPoEにパケットが流れるように設定します。
そのため、PBR(Policy Based Routing) を使用します。
まずはPBRに対してwpppoeインターフェースを追加します。

そのあとPoliciesに以下を追加します。
ポイントは、Local addresses / devices に 192.168.20.240/28を設定して、PBRの対象となるIPアドレスを192.168.20.241~192.168.20.254に限定すること、Remote addresses / domain に !192.168.0.0/16 と!マークをつけて、LAN内のパケットを除くように設定します。こうすることで、192.168.20.241~192.168.20.254 までのIPアドレスに対して、PPPoEから接続してきたパケットは、PPPoEの口からパケットが出ていくようになります。そのためサーバーなど、インターネット側で受ける必要がある機器のIPアドレスは、192.168.20.241以降のIPアドレスに設定しておきます。

全体的な設定はこんな感じです。

続いてNTPの設定です。NTPは、ネットワーク機器の時刻を同期してくれるプロトコルです。外部のサーバーにアクセスしてもいいですが、OpenWRTにはNTPサーバーとクライアントの両方が備わっています。まずは、外部にアクセスして自身のルーターの時刻を合わせ、問い合わせが来たときには自身の時刻を通知します。
ポイントはProvide NTP serverにチェックを付けると、ルーターがNTPサーバーになります。

Windowsでは、以下の設定をしておくとルーターに対して時刻同期をするようになります。

これで一通りの設定は終わりました。
次回は、Dynamic-DNSを利用して、インターネットからLANにアクセスする方法を紹介します。