wangzhi

wangzhi

狗骑吕步
github

小米4Aルーター(ギガ版)フラッシュ

背景#

~ 家にデスクトップ PC があるけど使わないので、リモートアクセスでファイルを共有したり、いくつかのプログラムを実行したりしたいと思った。実際の根本的な理由は、xray がクライアントを各スマホにインストールしなければならず、非常に面倒だからだ。そこで、デバイスを一台用意してその上でプロキシを実行し、他のクライアントが直接アドレスを設定できるようにし、config.json で一元管理できないかと考えた。最初はスマホアプリで LAN アクセスを許可していたが、スマホを常にオンにしておかなければならず、遅延も高いようだった。つまり、すべてのリクエストがスマホを経由し、スマホが分流するという大回りをしていた。その後、Openwrtを使えば直接プログラムを実行できることを知り、xray は golang で書かれているため、組み込み機器上で直接コンパイルして実行できることがわかった! 🐓 いいね!

準備材料#

操作手順#

まず openwrt ファームウェアを tmp にアップロードし、書き換えが完了したら再起動を待つだけです。

cd /tmp

mtd -e OS1 -r write openwrt-21.02.3-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin OS1

注意事項#

  • 必ず breed (不死鳥) をインストールしないでください。ここにあるパラメータは小米 4A ファームウェアと全く一致しません。breed をインストールすると、インストールしたファームウェアが無限に再起動します。直接 mtd コマンドでインストールしてください。公式のファームウェアに戻したい場合は、公式の復元ツールを使えば簡単に復元できます。
  • breed をインストールして無限再起動が発生した場合、起動時に reset ボタンを長押しすることで ssh 接続が可能になり、breed の下でも mtd を使って Openwrt ファームウェアをインストールできます。最初は知らず、壊れたと思ってピンポンで金色の ch341 プログラマーを買ってフラッシュに直接インストールしました。
  • ポートフォワーディングを有効にすると、多くの外国 IP がログインを試みます。私のは光モデムをブリッジ接続しているため、ルーターのダイヤル IP がパブリックネットワークに露出しています。非常に煩わしいので、関連する不要な設定をすべてオフにし、ポート制限を MAC アドレスまたは指定 IP に設定し、ルーターの設定でパスワードログインを無効にし、ssh キーによるログインを有効にすることで多くの攻撃を防ぐことができます。

パブリックアクセス#

ウェブサイトでよく使われる 443 と 80 ポートは全く使えません。この 2 つのポートは直接プロバイダーによってブロックされています。

  • パブリックアクセスをどう操作するか?

    一般的に普通の人には DDNS を推奨します。ルーターに内蔵されているものもあります。例えば、花生壳 DDNS ですが、この無料の DDNS ドメイン名は非常に長くて覚えにくいので、覚えやすいドメイン名を購入しました。

  • DDNS の大まかな原理

    ルーターでダイヤルするのは動的 IP のため、ルーターを再起動すると再度ダイヤルされ、この時新しい IP に変わります。ドメインがバインドされていると無効になります。DDNS は 10 分または 5 分ごとに現在の IP とドメイン解決の IP が一致しているかを確認し、一致しない場合は再解決を実行します。この原理を理解すれば簡単です。ルーター上でプログラムを実行し、起動時に自動起動を設定し、5 分ごとに確認し、異なる場合は解決インターフェースを呼び出してドメイン解決を更新します(Tencent Cloud で購入したドメインはサポートされています)。

  • 家のデバイスにアクセス

    ポートフォワーディングを通じて、例えば 192.168.1.1:22 が Raspberry Pi で、パブリックドメイン名 domain.com:2222 をバインドし、ルーターを通じて 192.168.1.1:22 に転送すれば、家のデバイスに直接アクセスできるようになります。デバイスはファイアウォールを有効にし、パスワードは難解に設定し、openwrt のファイアウォール転送設定でいくつかのセキュリティ制限を行い、攻撃を避けるようにします。

xray の実行#

~ 書き換えが完了したら、xray を実行する必要があります。結局、これが主な要求です。その後、openwrt の公式ソフトウェアをインストールしようとすると、常にメモリ不足の警告が出ます。非常に奇妙です。私のルーターの実行メモリは 128M で、ストレージは 16M しかありません。openwrt をインストールした後は 8M しか残っていません。xray は upx で圧縮しても約 9M あり、全く収まりません。
もう一点。ルーターの/tmpは実際にはメモリのマッピングです。ここにあるファイルはデバイスが再起動すると消去されます。ハードディスクが 16M しかないのに、tmp に 80M のファイルを置いても問題ありません。再起動後に失われるだけです。もちろん、メモリを節約するためにできるだけ小さくするのが理想です。
/overlayというディレクトリは永続ストレージで、ルーターが再起動しても失われません。ここに xray を置いて、起動時に自動起動を設定できます。

  • xray-core の簡略化 公式の 1.8.4 バージョンに基づいて、削除できるものはすべて削除し、基本機能だけを残しました。op でls -lhを使用して確認すると、わずか 4.2M です。これは upx 後のサイズです。

その後、スマホの Wi-Fi 内で手動プロキシを設定し、ルーターのアドレスと xray の対応するポート番号を入力すれば、YouTube にアクセスできるようになります。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。