122
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RTX1300が高いのでopenWRTで10Gbps用ルータを自作した

Last updated at Posted at 2025-03-01

image.png

はじめに

うちの地区にフレッツ光クロスがきてて、丁度Nuroが2年満期を迎えたので切り替えようといろいろ光クロス対応のルータを探してました。
やはり今使ってるルータもYAMAHAなのでRTX1300かなぁ?ってお値段が13万とすこぶるアタオカかかくなので、ソフトウェアルータを作ろうとしていろいろ調べてopenWRT(x86)に決定しました。

なんやかんや10Gbpsスイッチ買ったりしましたが、2万あればSFP2つついたルータは作成可能です。

回線は一般のご家庭らしくIPv4固定はしませんが、Cloudflare tunnelを使って内部を公開することもできますし、VPN代わりに使う事もできましたのでそっちも追記しました。
RTX1300でやりたいことできたね。

OpenWRTとは?

OpenWRTは、ルータや組み込みシステム向けのオープンソースのLinuxベースのファームウェアで、カスタマイズ可能で高性能なネットワーク機能を提供します。
当然ながら無料で利用できます。

注意

今回はNTT東日本のドコモ光を利用し、HGWなしONUだけ契約です。同様のNTT東日本のフレッツ光クロスのHGWなしONUだけが対象になると思います。HGWを使った場合はしりません
NTT西日本もHGW必須だった気がするので、ONU直結のみの話で進めます。
プロバイダがMAP-e対応してるので使えてるとおもうので(@nifty)よその場合はちょっとわかんないですね・・

構築に必要な知識

  • Linuxの基本設定、操作が不自由なくできる
  • パーティーション拡張等が理解できる
  • ある程度の機材は持っている(M.2 SSDをUSB変換できるとか設定端末があるとか)
  • すでに光クロスの回線がある状態(なければないで何かしらの手段でインターネットにでられること)
  • 日本語の理解度

ご用意するもの

今回用意した物は以下になります。(ルーター構築分だけのせてます)

1.Lenovo ThinkCentre M720q

※ヤフオクでなにも見ずにCPUメモリssd電源無しwifiなしの激安ジャンクを買い、足りないものは手持ちの物をつかった。

  • PentiumGold-G5400
  • M.2 nvme512GB
  • DDR4SODIMM 8GB

似たようなM920qでもいいかもしれません。

2.aliexpressのm720q用のpci express変換アダプタ

aliexpressのページ
lenovoのM720qやM920qは内部にPCIexpressが増設スロットがあるので、SataSSDを取り外してやればカードが乗ります。
image.png

3.intel X520-DA2

ヤフオクでSFP+2個つき、sfpケーブル付きで5000円くらい、やすい!
image.png

4.低発熱なsfp用10Gbase-Tモジュール

aliexpressの販売ページ
※80Mのものを買いましょう。(低発熱で有名)※Broadcom BCM84891がいいらしい。

5.SFPモジュール

amazon
ciscoやintelかいてますが、ベンダーロックが気になるならintelで、八丁スイッチは特に問題なく接続できます。
なお、SFPモジュールは活線挿抜が可能です

6.CAT6aのLANケーブル

いろいろやって速度が出なかったのはONU間のケーブルが原因でした・・新品をかえということ。

7.キーボード・マウス・モニタ

とりあえずないと始まらない。

8.M.2のSSDをUSBに変換できるアダプタ

OSを書き込まないとはじまりません

9.SSHでつなげるPC

詳細はSSHでやるので

10.ubuntuやGPartedの入ったUSBメモリとか

ventoyにisoイメージ等をおいてマルチブートさせてるなりお好きな方法で、
あるとベンダロック解除・M.2 SSDの領域拡張ができます。
持っておいて損はない
ventoy

X520のベンダロック外し

amazonでかったX502-DA2のSFPカードはintel以外のSFPモジュールを差し込むとエラーが出力されて認識されないので、定番のベンダロック解除を実施します。
前書いた記事
大雑把に書きますがubuntuをインストールしてサクッと実施してください。

OpenWRTのインストール

インストーラーが今どき存在していない(なんで・・)
のでPCから取り外して、USB変換等につなぎ作業PCで書き込みます。
書き込みはRufusを使って書き込んでください。
OpenWRT
ここからrcのつかない数字の大きいものを選び、targets>x86>64>generic-ext4-combined-efi.img.gz
をダウンロードします。

Rufus
入れ方は省きますが
generic-ext4-combined-efi.img.gzを書き込んでください。

M720qにM.2SSDを収める

特に説明が不要だと思いますが取り付けましょう
ケースを開けて底板外せば収められます

X520を取り付け、小改造

分かる人はやってみてください。おすすめ
秋月電子で売ってる5vのVDCファン
をX520から電源を取って取り付けます(LEDそばに3.3vくるのでそことGND繋げばよい)
両面テープでインダクタの上に貼り付けます。M720qのフロンド側の金属パーツを外せば
全部収まってしまいます。aliで買った付属のベゼルの隙間から出すと
SFPが2つ外に出ます。

image.png

改造せずに収める場合

aliでかった変換アダプタを使い、付属のベゼルの隙間から出すと
SFPが2つ外に出ます。

image.png

OpenWRTの起動

ここまでくれば電源は入るかなと
root、パスワードなしでコンソールに入れます。
ちゃんとパスワードつけましょう

passwd

OpenWRTのデバイスとインターフェイスの紐づけを実施

OpenWrtでネットワークはデバイス(物理NIC)をインターフェイス(論理NW)と紐づけることで利用できます。
これを修正しないとNICからの制御もなんもできないので、ここを修正します。

・M720qには有線LANが1つあります、X520-DA2を接続することでポートが増えて
eth0,eth1,eth2という物理NW(OpenWrtでいうデバイス)が存在することになります。
自分の場合はX520-DA2がeth0,eth1となり,内蔵がeth2となりました。
(自身の場合はip aを叩いてmacアドレスで確認)
X520-DA2の場合、macアドレスが連番になるのでわかりやすいかなと。

なので、eth0をWAN側、eth1,eth2をbr-lan(ブリッジ)側にまとめてそれをlanとして認識させます。
もちろん個別にしてもいいです(今回は割愛)
X520を刺さずにセットアップしていた場合、interfaceのWANおよびWAN6はつくられていない場合があります。そのときは項目ごと作ってください。

vi /etc/config/network

を実施し、以下の箇所を修正します。#の箇所を修正、実際には#以降は消すこと!
WAN側(WAN、WAN6)
※なければ作る

/etc/config/network
config interface 'wan'
        option device 'eth0' #ここの値を変更
        option proto 'dhcp'

config interface 'wan6'
        option device 'eth0' #ここの値を変更
        option proto 'dhcpv6'
        option reqaddress 'try'
        option reqprefix 'auto'
        option norelease '1'

LAN側

/etc/config/network
config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth1' #ここの値を変更
        list ports 'eth2' #この行を追加

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '10.0.0.1' #ここはお好きに設定してください。
        option netmask '255.255.255.0'
        option ip6assign '60'


再読み込みは以下で実施

/etc/init.d/network restart

これでインターフェイスの準備ができます。以後はLAN側にLANケーブルを指して、操作端末からwebやSSHで設定していきます。
ブラウザはhttp://10.0.0.1
SSHは10.0.0.1で接続を想定です

image.png

ディスクサイズの拡張

デフォルトでパーティションサイズが100MB程度しかないので、今後パッケージを数個いれるだけで満杯になるので
容量を拡張します。これは自分自身では実施できないので、用意しているGPartedディスク等に入っているGpartedを利用して
拡張を行います。やり方は割愛します。
参考

MAPの設定

WAN側にONUのケーブルを差込み、LAN側の操作端末から設定を進めます。(SSHでやります)
WAN6側でONUからDHCP6でIPv6アドレスが降ってくるので、設定は進められるはず。ここでWAN6が繋がらない場合は設定を見直しましょう

opkg update
opkg install map

インストール後、再起動を行ってください(reboot)
再起動後、webブラウザから設定したIP(今回は10.0.0.1)にアクセスして、
上のメニューのnetwork > interfaceを開き、WAN6の 「IPv6 PD: 240b:11:xxxx:xxxx::/56」をメモします。
image.png

これをmap-e計算ツール
のIPv6 プレフィックスアドレスを入力のところに先ほどの値を放り込み、計算結果をメモします。

option peeraddr 2404:XXXX:XXX:XXX::64
option ipaddr xxx.xx.0.0
option ip4prefixlen 15
option ip6prefix 240b:xx::
option ip6prefixlen 31
option ealen 25
option psidlen 8
option offset 4
export LEGACY=1

次にnetwork > interface > Add new interfaceを開き、

Name: 適当にWAN7とかなんでも
Protocol: MAP/LW4over6

でCreate interfaceをします。
image.png

Interfaceの詳細を入力する画面がでるので、以下を設定

■General Setting
BR / DMR / AFTR :option peeraddrの値
IPv4 prefix:option ipaddrの値
IPv4 prefix length:option ip4prefixlenの値
IPv6 prefix:option ip6prefixの値
IPv6 prefix length:option ip6prefixlen
EA-bits length:option ealenの値
PSID-bits length:option psidlenの値
PSID offset:option offsetの値

■Advanced settings
Tunnel Link:WAN6
Use legacy MAP:チェック

■Firewall Settings
Wanに追加

■DHCP Server
触らず

入力が終わりましたら再起動をしてください。
うまく動作すればinterfaceにWAN7とWAN7_みたいなインターフェイスができれば成功です。
image.png

テスト

テストサイト
にアクセスして、西日本以外がOKでればIPv6/IPv4疎通成功です。

残設定

日本語パッケージ,cloudflaredパッケージ導入 パッケージアップデート

公式ドキュメントにアップデートは一気にやらないでーとは書いてますが、sshで以下を実施

opkg update
opkg install cloudflared luci-i18n-cloudflared-ja luci-i18n-base-ja luci-i18n-firewall-ja luci-i18n-package-manager-ja
opkg list-upgradable |  cut  -f  1  -d  ' '  |  xargs opkg upgrade

あとはSystem-System-Language and Styleで変更して保存してください。

image.png

NATオフロードの設定

ネットワーク>firewall>一般設定のルーティングNATオフロードをハードウェアオフロードで設定、保存します。
image.png

Cloudflare tunnelの導入

IPoE接続ではIPv4固定オプションを別途契約、設定しない限り、IPv4は共有となってしまいます。(しかも月額結構するよね)

  • 家の中のサーバを外部に出したい
  • トンネルで家の中のネットワークにつなぎたい
    いろいろありますが、OpenWRTにCloudflaredを導入することで安全に解決できます。

Cloudflare tunnelとは?

Cloudflare Tunnelは、Cloudflareのネットワークを通じて自宅やオフィスのサーバーをインターネットに安全に公開するためのサービスです。これにより、固定IPがなくても外部から自宅のネットワークにアクセスできます。設定は簡単で、セキュリティも強化されます。

となっており、DDoS防いでくれたり暗号化してくれたりといろいろしてくれます。
OpenWRTのfirewallの設定もいじることすらありません

tunnelは無料で利用できます。(アプリケーション公開はドメイン必要ですが、そもそもCloudflareのドメイン価格がとにかくやすい)
トンネル方法は以下の2つが利用できます。

  • アプリケーション公開

    • ドメインの指定で内部ネットワークのホストIP:portを外部に見せることが可能。(複数指定可能)
      www.hogehuga.com > http://192.168.100.200:80
  • プライベートネットワーク

    • 内部のネットワークとCloudfraredが橋渡しを行い、クライアントソフト(WARP)でOpenWRTの内部の各システムへアクセス可能、特に設定を書かなくてよいのでおすすめ。まるでVPNで社内セグメントアクセスしてるようだ。

調べた感じ、アプリケーション公開しつつプライベートネットワークは使えないぽい。
Cloudflareのcommunity

Cloudflaredの設定

操作端末のブラウザでCloudflareを開きアカウントを作成、ログインする、

この段階でチームドメインの設定があるので、作ってください。
(後で使います)
image.png

ダッシュボードに以下の表示がされること
image.png

左のZeroTrustを開き、ネットワーク>Tunnelsをクリックします。
image.png
トンネルの作成をクリックし、Cloudflaredを選択します。
image.png
トンネル名を適当に設定し、トンネルを保存をクリックします。
image.png
コネクタをインストールするよう指示がでるので、
Tokenをメモにコピーします。
image.png
この中のcloudflared.exe service install ....の後ろの長いキーが必要になります。

ここでSSHでOpenWRTにログインして以下を実施、

cloudflared tunnel login

するとターミナルにURLが表示されるので、ブラウザでログイン、認証を終わらせて認証ウインドウを閉じてください。するとSSHの端末に

You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/root/.cloudflared/cert.pem

と出ますので、これをコピーします

cp /root/.cloudflared/cert.pem /etc/cloudflared/

次にブラウザでOpenWRTを開きVPN>CCloudflare Zero Trust Tunnelを開き、
以下の設定にします

Enable:チェックを入れる
Token:さっきのものを貼り付ける
Config file path:そのまま
Certificate of Origin:そのまま
Region:そのまま
Info:そのまま

これでSave &Applyをすることで、cloudflare側と接続されるので、ブラウザ側の操作を再開します。

image.png
ブラウザの設定の続きで、プライベートネットワークの以下の設定をします

CIDR:ここは自身のネットワーク(OpenWRT)のCIDR(例:10.0.0.0/24)
説明:適当に

トンネルの保存をすることで設定が完了します。

image.png

接続確認は
OpenWRT側は以下
image.png
Cloudflareでは
トンネル名のコネクタIDをクリックすることで、ホスト名が表示されれば成功です。
image.png

WARP(クライアント側の設定)

ポリシーの設定

クライアント側の設定を行います、ブラウザでcloudflareのzerotrust内の設定を開きWARPクライアントを開きます。
デバイスの登録を開き、accessポリシー「admin」の設定を開き、ルールにメールアドレスやCountryを設定します

spilit Tunnelsの設定

warpはデフォルトでにローカルアドレスは通さない設定なので外します。
設定>WARPクライアント>デバイスの設定>プロファイルの設定>でファルトの・・・を開き設定をクリックします。
image.png

下の方のスプリットトンネルを管理をクリック、
image.png
右欄から10.0.0.0/8を選択して削除します。

これでクライアントの設定が完了しました。

クライアントのダウンロード

以下より各OSのものをインストールして設定します。
ここ
詳細は省きますが、チームドメインを記載して、Cloudflareにログインすることで、接続するようになります。
別回線等からOpenWRTや他のサーバにローカルIPでつながれば、成功となります。

フレッツ光クロスでWAN6瞬断する場合がある件

自分はまだ経験がないのですが設定しておきました
OpenWrtとフレッツ光クロスでwan6の瞬断が発生する問題と解決

で、実際速いの?

SFPスイッチに繋いだ別の10Gbpsのマシンからベンチしたらこんな感じ。
https://www.speedtest.net/result/c/e95409e9-bdde-4992-8dcc-2bf7000a57af
image.png

その他

SFPモジュールの温度を知りたい

(dashbord用のパッケージないもんかね)
10Gbase-TのSFP、低発熱にしないとやけどします・・

command
opkg update
opkg install ethtool-full
root@OpenWrt:~# ethtool -m eth0 |grep "Module temperature"
        Module temperature                        : 43.62 degrees C / 110.52 degrees F
        Module temperature high alarm             : Off
        Module temperature low alarm              : Off
        Module temperature high warning           : Off
        Module temperature low warning            : Off
        Module temperature high alarm threshold   : 80.00 degrees C / 176.00 degrees F
        Module temperature low alarm threshold    : -10.00 degrees C / 14.00 degrees F
        Module temperature high warning threshold : 75.00 degrees C / 167.00 degrees F
        Module temperature low warning threshold  : -5.00 degrees C / 23.00 degrees F

あとやりたいこと

adblockerとか。アラートとか仕込んでおきたい。

引用元等

cloudflare tunnnelは以下を参考にさせていただきました。

openWRT公式ドキュメント

map-eの導入は以下を参考にさていただきました。

122
86
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
122
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?