NURO 光がやってきたので RTX1210 でポリシーベースルーティングを実装する

Pocket
LINEで送る

この記事の所要時間: 748

野口です。
夏休みももう終わりですね。
宿題は終わりましたか?

ことのあらまし

弊社には既存の固定 IP の ISP 契約がありますが、社内からネットが遅いという意見をもらっていたので、 NURO 光にしました。
まあ諸説ありますがどうもフレッツ光ネクスト(NGN)の PPPoE サーバで混み合ってスループットが出ないようなのです。
加えて今契約している ISP のダウンロードが遅い。特に海外の経路は信じられないぐらい遅い。
コンテンツが置いてあるロケーションが国内であればいいですが、海外に ISO イメージが置いてあったり、 GitHub からのソースの clone はやばいぐらい遅いです。
DS-Lite やらキャリアグレードNAT(CGN) 等方法あるようですが、どうもそれらを試す前にいったん話題に上がっている NURO 光を試すことにしました。

てくろぐ: DS-LiteでIPv4してみませんか?

NURO 光がうちにもやってきた

今話題の NURO 光は NTT のダークファイバーを使った Sony 系列の So-net の提供するサービスです。
固定 IP もほしかったので NURO Biz にしたかったところですが、本社のある日立市は提供範囲外でした。
2 回の工事を経てようやく開通の運びとなりました。

パフォーマンス計測

まずはONU兼ルーターへPCを有線接続してパフォーマンス測定。
ダウンロード、アップロード共に速さは圧倒的です。
IPv4 以外にグローバル IPv6 プレフィックスも普通に降ってくるので今は IPv6 デュアルスタックインターネット接続環境が当たり前なのかなあと思いました。

Speedtest by Ookla – The Global Broadband Speed Test
Speedtest by Ookla – The Global Broadband Speed Test

課題: どうやって既存のネットワークに組み込むか?

さて、これからどうやって既存のネットワークに引き込むかが課題でした。
今のインフラで運用している社内ネットワーク以外に VLAN 切って複数のサブネットを運用しています。
既存の固定 IP 環境もすぐには切り捨てられない。

ここは簡単です。送信元アドレスが社内ネットワークからのものであれば NURO の ONU に接続したインターフェースに流すようにポリシーベースルーティング(PBR, Policy-Based Routing)を設定すれば良いのです。
YAMAHA ではフィルタ型ルーティングと呼ばれています。
これはフロー要素、つまり送信元IPアドレスやプロトコルによってルーティング先を変えることができる機能です。

フィルタ型ルーティング

理想としているのは ONU にはその名の通り光終端だけさせてイーサネットから先のルーティングは既存の RTX1210 にやらせたかった。
しかしうちに届いた ZXHN F660A という ONU はできることがあんまりなくて、 必ずルーターとしての機能もついてきてしまうようでした。
しかし静的ルートも追加できないので、このサブネット宛のパケットはこのルーターに流すみたいな設定ができない。
つまり RTX1210 での NAT が必須。

  • NAPT: PAT, IPマスカレード。ポート番号ベースで一つの IP アドレスに変換します。
  • NAT: 1対1のアドレス変換を行います。なので IP アドレスの節約にはなりません。

失敗: PBR + NAPT-NAPT 構成

設定は以下のようになります。
とりあえずインターネットブラウジングそのものはできるようになりましたが、Skype でのミーティングで音声届かない、聞こえないという問題が出たのでやめました。
なぜなら NAPT して NAPT すると(つまり 2 重の NAPT) IP 電話や Skype を始めとする P2P アプリケーションの通信が辛いことになるんです。
PBR 自体はひとまずできています。

# ONU 側インターフェースに IP アドレスを割り当てる
ip lan3 address 192.168.1.254/24

# NAT 
nat descriptor type 200 masquerade
nat descriptor address outer 200 192.168.1.254
nat descriptor address inner 200 172.16.10.1-172.16.10.254

ip filter 210010 pass 172.16.10.0/24 * * * *
ip lan3 nat descriptor 200

PBR の設定

ip filter で定義したフローにマッチしたパケットは 192.168.1.1 に流され、それ以外はゲートウェイに流します。

ip route default gateway 172.16.1.1
↓
ip route default gateway 192.168.1.1 filter 210010 gateway 172.16.1.1
# その他必要なルーティング
# イントラのサーバー等にアクセスしたい場合は別途ルートを追加する必要がある

失敗: PBR + ゲートウェイルーティング-NAPT 構成

NURO の ONU と接続する側のインターフェースを LAN3 としています。

そもそもこの構成は静的ルートが ONU に追加できない時点で失敗作です。
自身のサブネット内にあるので自分でアドレス解決できるはずとネクストホップへの ARP を試みずに、ONU 兼ルーターが直接宛先 IP アドレスを ARP しようとして、結果だれも返答しません。
よって通信が成立しません。
すぐにアカンってなって廃案になりました。

ip lan3 address 192.168.1.254/24
ip lan3 nat descriptor 200
ip route default gateway 192.168.1.1 filter 210010 gateway 172.16.1.1

↓次のように変える
NAT ディスクリプタの適用を外します。

ip lan3 address 172.16.11.253/23
no ip lan3 nat descriptor 200
ip route default gateway 172.16.11.254 filter 210010 gateway 172.16.1.1

成功?: PBR + NAT-NAPT 構成

NATディスクリプター機能 概要

RTX1210 では NAPT ではなく NAT 構成として 1 対 1 のアドレス変換をおこない、ポートアドレス変換 NAPT は NURO の ONU でやることにしました。
これなら NAPT は 1 回で済みます。
プライベートアドレスなのでいくら消費しても痛くも痒くもないです。

Skype の Echo / Sound Test Service と、実際に社内のスタッフと Skype 通話してみましたけど大丈夫だったのでこれで様子を見てみたいと思います。
だめでした。
すぐぶつ切れする問題はなくなりましたが時間が立つと接続が切れてしまいます。
動的 NAT の対応付けが時間が立つと変わってしまうんでしょうね。
NAT 越えは STUN サーバとやりとりしたり、とても根深いテーマです。
というかブリッジしたいという思いがつよい。

ip lan3 address 172.16.15.253/23
ip route default gateway 172.16.15.254 filter 210010 gateway 172.16.1.1
ip lan3 nat descriptor 300

# NAPT ではなく NAT を使う
nat descriptor type 300 nat
# 動的 NAT の IP アドレス対応付けをおこなう
nat descriptor address outer 300 172.16.14.1-172.16.14.254
nat descriptor address inner 300 172.16.10.1-172.16.10.254

最終的なトポロジを以下に示します。

まとめ

余裕が出てきたら小型 ONU とかにして NVR700W とかに差して動かしてみたいですね。
その他 SFP ポートとかに挿すとか。
ちなみにポリシーベースルーティングの話は CCNP R&S の ROUTE の科目で出てきます。

この間の勉強会のスライド

ユニキャスト本社のネットを支える技術 from Wataru Noguchi

投稿者紹介

Wataru Noguchi
* Bio: Software Engineer, Network and Server Engineer * Certification: IPA: FE, AP, Network Specialist Cisco: CCNA R&S, CCNP R&S LPI: LPIC Level1, Level2, LPIC-3 Specialty LPI-304 Virtualization &High Availability

人気の記事

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP

%d人のブロガーが「いいね」をつけました。