DD-WRT Mod-Kitであなたのホームルーターからさらに力を引き出す
パフォーマンスを大幅に向上させるためにホームルーターをDD-WRT代替ファームウェアで変更する方法をすでに説明しました。今日は、DD-WRT Mod-Kitを使用してさらにそれを強化する方法を説明します。.
まだ読んでいないのであれば、このシリーズの前の2つの記事を必ず確認してください。
- あなたのホームルーターをDD-WRTでスーパーパワードルーターに変える
- DD-WRTを使ってWi-Fiネットワーク信号を増強し、通信範囲を拡大する方法
あなたがそれらのトピックに精通していると仮定して、読んでください。このガイドはもう少し技術的なので、初心者はルーターを改造するときに注意する必要があります。.
概要
このガイドでは、「ファームウェア変更キット」を使用して変更と追加を加えて独自のDD-WRTファームウェアを作成する方法を段階的に説明します。.
ファームウェア修正キットは、ソースからそれをコンパイルすることなくファームウェアを修正することを可能にする。提供されているスクリプトを使用してこのように変更を加えると、ファイルのダウンロード、置き換え、削除が簡単になります。.
この方法を使用する最も主な理由は、最近Openwrt IPKGパッケージに対するDD-WRTのサポートが(USB経由で)ハードドライブを持つルーターに移行したため、mod-kitがIPKGパッケージを正常にインストールする唯一の方法です。 HDが利用できない場合。さらに、この方法には、パッケージのインストールに関するJFFSの依存関係から解放されるという追加の利点があります。これは、わずか4 MBのフラッシュを持つルーターにとっては実際の問題です。.
publicenergyによる写真
目標
この手順の手順はDD-WRTのwikiと開発者のサイトで詳しく説明されていますが、このガイドを誰でも使用できるコピー&ペーストの手順にすることを目指しています。
- knockdパッケージとその依存関係をインストールする.
- NVRAMベースの生成構成を使用してssmtpパッケージをインストールする.
- TLS smtp(別名Gmailサポート)のサポートあり.
この手順に従うと、他のパッケージのインストールに適応させるのはかなり簡単なはずです。.
警告: 軽く踏みます…モディファイキットを誤って使用すると、(使用できないブリックになるように)取り外しが必要なルーターが残ることがあります。しかし、あなたが本当のオタクなら、おそらくあなたは物事を破壊することができ、物事を支配し、そして本当のオタクだけがそれをするというイデオロギーを購読するでしょう。
前提条件
- この手順を使用して れんが ルーターを作るのと同じように、ルーター 使えない, 下記の手順を使用することにより直接またはその他の方法で生じた損害について、当社は一切責任を負いません。.
- この手順はDebianベースのシステム(Lenny、Squeeze、Mint)で実行されました。以下の手順はあなたも同じものを使っていると仮定します.
- この手順は、ハードウェア設定に適用されるすべての前提条件、注意事項、および制限事項を考慮して、ルータをDD-WRTでフラッシュすることを経験したことがある人にだけ推奨されます。開始するのに良い場所は、DD-WRTガイド付きのスーパーパワードルーターにあなたのホームルーターを向けることでしょう.
- ルーターは少なくとも「ミニ」バージョンのDD-WRTをサポートしている必要があります。.
- この手順はLinksys WRT54GS / Lルータで作成され、テストされました、他のベンダーからのルータを使用している場合、あなたの走行距離は非常に長くなるかもしれません.
セットアップ
必要なパッケージをインストールする
ファームウェア変更キットには、コンパイルと動作にいくつかの依存関係があります。それらを一度にインストール/アップデートするには端末で次のコマンドを発行します。
sudo aptitudeインストールgcc g ++ binutilsパッチbzip2 flex bison make gettext解凍zlib1g-dev libc6 subversion
mod-kitをダウンロードする
サブフォルダを作成し、公式のSVNからキットを入手してください。
mkdir firmware_mod_kit
cd firmware_mod_kit
svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-read-only
cdファームウェアモジュールキット読み取り専用/ trunk /
作業するファームウェアをダウンロードする
考慮すべき最初の事はあなたが使いたいバージョンです?
経験則は、疑わしいときは「mini」を使用することです。これは、お使いのルータが少なくとも「ミニ」バージョンをサポートしている限り、それを使用することで、ブルートウェアを使用せずに最も一般的に使用されるすべての機能が得られるためです。したがって、ほとんどの場合、プロシージャ用のスペースと他の用途用のJFFSスペースさえも残っています。.
バージョンを決めたら、最新のファームウェアのバージョンを使用することをお勧めします。「安定した」ものと比較して多くのバグ修正が行われている傾向があるためです。.
これを書いている時点で最新のものは“ 03-17-11-r16454”であり、この改訂は続くコマンドで使われています.
http://www.dd-wrt.com/dd-wrtv2/downloads/others/eko/BrainSlayer-V24-preSP2/2011/03-17-11-r16454/broadcom/dd-wrt.v24_mini_generic.bin
使用しているバージョンを追跡しやすくするために、ダウンロードしたファイルの名前をバージョン番号を表すように変更します。
mv dd-wrt.v24_mini_generic.bin dd-wrt.v24_mini_generic-03-17-11-r16454.bin
これはもちろんオプションですが、以下のコマンドはあなたがファイルの名前を変更したと仮定します.
ファームウェアの抽出
ファームウェア内でファイルを変更できるようにするには、その内容を一時ディレクトリに抽出する必要があります。.
このコマンドの構文は次のとおりです。
./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
私たちの場合、これは次のようになります。
./extract_firmware.sh dd-wrt.v24_mini_generic-03-17-11-r16454.bin ./working_dir_mini1
注:このコマンドを最初に実行したときには、システム上にmod-kitツールが構築されています。これは一度だけ起こり、少し時間がかかるかもしれません…だから辛抱してください…
パッケージをインストールする
ファームウェアが抽出されたので、パッケージをインストールすることができます。.
一般に、この手順は、openWRTリポジトリからipkファイルの形式でパッケージとその依存関係をダウンロードすることです。ダウンロードしたら、提供されているスクリプトを使用して、抽出したファームウェアにそれらをインストールします。.
ノックパッケージ
Knockdの設定方法と使用方法の詳細な説明は将来の記事で詳しく説明されています。そのため、Knockdはとにかく多くのスペースを取らないので、今のところこのステップをスキップするか将来の準備として実行することを選択できます。.
Knockdはリンク層でシーケンスを求めて通信イベントを監視し、それからそれらに作用するデーモンです。.
つまり、デーモンを実行しているデバイスでポートを「リスン」しないで(ポートスキャンでポートが開いていると認識されない)、必要な処理を1つのコマンドから実行できるようにすることができます。フルスクリプトに。このテクニックを使うと、あなたのホームネットワークを公開することなくあなたがそれを必要とするあらゆる種類の操作をリモートで(インターネットを介して)実行するためにサーバーを誘発することができます.
Knockdには依存関係のリストが1つしかないので、次のコマンドを発行してパッケージとその依存関係をダウンロードします。
http://downloads.openwrt.org/backports/rc5/knockd_0.5-1_mipsel.ipk
wget http://downloads.openwrt.org/whiterussian/packages/libpcap_0.9.4-1_mipsel.ipk
ファームウェアに「knock daemon」(knockd)ipkをインストールします。
./ipkg_install.sh knockd_0.5-1_mipsel.ipk ./working_dir_mini1/
ファームウェアに「パケットキャプチャ」(libpcap)ipkをインストールします。
./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/
“ knockd”は別の設定ファイルで呼び出すことができるので(今後の記事で説明する方法です)、他の操作を実行する必要はなく、インストールしたい場合はファームウェア構築のセクションに進んでもかまいません。.
SSMTPパッケージ
SSMTPパッケージを使用すると、サーバーでGmailまたはSMTPを使用してLinuxで電子メールアラートを設定する方法で示したのと同じように、ルーターから電子メールメッセージを送信できます。私たちはあなたにDD-WRTのためにこれをどのように設定するかを示すつもりであるとあなたに約束しました.
あなたが電子メールでそれらの操作に関するフィードバックを受け取りたいと思うあなたがルータ上でスクリプトを作成しようとしているなら、これは主に役に立ちます。.
このパッケージの設定は、組み込みシステムによる制限のために、通常のLinuxシステムよりも少し複雑です。行こう… :)
パッケージをダウンロードしてください。
wget http://downloads.openwrt.org/backports/rc5/ssmtp_2.61-1_mipsel.ipk
ファームウェアに「ssmtp」ipkをインストールします。
./ipkg_install.sh ssmtp_2.61-1_mipsel.ipk ./working_dir_mini1/
TLSサポート(オプション)
ただし、TLS認証を必要とするSMTPゲートウェイを使用できるようにする場合は、SSMTPは他のパッケージをその依存関係として表示しません。. Gmail)、openSSLパッケージもインストールする必要があります。.
注意:巨大です 欠点 後でJFFS用にルータ上のスペースを大幅に減らすという形でこれを行うこと。つまり、openSSLパッケージは合計4MBから約500Kのスペースを必要とし(通常の「メガ」をサポートしていないルータの場合)、JFFSのオーバーヘッドをさらに増大させます。空きJFFSスペース(WRT54GLでは約60KB).
まだTLSを必要としないsmtpサーバー(通常あなたのISPのもの)があるので、私はあなたが本当にTLSを必要とするゲートウェイを使用する必要があるかどうかを考えるために少し時間をかけることを勧めます。.
それでも問題があるにも関わらずTLSサポートを有効にすることにした場合は、openSSLパッケージをダウンロードしてください。
wget http://downloads.openwrt.org/whiterussian/packages/libopenssl_0.9.8d-1_mipsel.ipk
ファームウェアに「openSSL」(libopenssl)ipkをインストールします。
./ipkg_install.sh libopenssl_0.9.8d-1_mipsel.ipk ./working_dir_mini1/
設定
SSMTPパッケージには制限があります。別の設定ファイルを使って呼び出すことはできません。.
ファームウェアは読み取り専用なので、ファームウェアは読み取り専用なので、そのままでは構成をファームウェアにハードコーディングすることしかできません。.
しかし、Eメールの設定を変更するためだけに、ファームウェアの変更手順をすべて実行したくない場合はどうすればよいですか。 (例えばパスワード変更).
そのために、Jeremy(ファームウェアのmod-kit作成者)と私自身(これを謙虚に付け加えても構いません)の唯一の正しい方法は次のようになるという結論に達しました。
- ssmtpパッケージが指す構成ファイルの場所をetcの下の読み取り専用の場所に、実行時に書き込み可能なtmpディレクトリを指すようにします。.
- 起動時にNVRAM変数に基づいて動的に構成を生成するスクリプトを作成します。.
それを達成するために、いくつかの追加のステップが必要です…
ssmtp設定ディレクトリへのシンボリックリンク
上で説明したように、我々は / etc / ssmtp ルータ上の場所 / tmp 実行時にルータ上にある唯一の書き込み可能な場所としてのディレクトリ。これを行うには、ipkインストーラーによって作成されたssmtpディレクトリーを削除します。
rm -rf ./working_dir_mini1/rootfs/etc/ssmtp/
絶対パスとして/ tmp / etc / ssmtpを指すように、ルーターのルートファイルシステム上の/ etc / ssmtpを指す新しいシンボリックリンクを作成します。
ln -s / tmp / etc / ssmtp / ./working_dir_mini1/rootfs/etc/ssmtp
注意これは今のところ論理的ではないように見えますが、パッケージの設定ディレクトリをファームウェア変更キットの作業ディレクトリの外側の場所に指定しているので、実行時にはルータの観点からはまったく問題ないようです。.
initスクリプト
このスクリプトをファームウェアに挿入しないで後で起動スクリプトとして実行することは完全に可能ですが、将来の使用のための例としてだけ使用するのであれば、ここに置くのが適切だと思います.
もともとJeremyは誰かの要求に合わせたスクリプトを作成しました。後で、DD-WRTやsyslogレポートとより互換性があるように調整して拡張しました。.
新しいinit(起動)スクリプトを作成します。
vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
注:あなたは他のエディタを使うかもしれません、私はviを使います、それはルータで利用可能なものと一致しているからです…
これを内容にします。
#!/ bin / sh
#
#title:ssmtp_nvram.sh
#著者:Jeremy CollakeとAviad Raviv
#site:http://www.bitsum.com、http://howtogeek.com
#
#nvram varsから設定ファイルを構築するスクリプト.
#を使用する設定ファイルでは動作します
#var =値型ペア.
#
#はnvram変数にプレフィックスを使用します.
#
#すなわち.
#ssmtp_hostname = something
#ssmtp.confに変換されます。
#hostname = something
#
logger_func()
ロガー-s -p local0.notice -t SSMTP_init $ 1
logger_func "########### SSMTP initの実行を開始############"
logger_func "/ tmpにetcディレクトリを作成する"
[! -d / etc / ssmtp /] && mkdir -p / tmp / etc / ssmtp /
CONFIG_FILE = / etc / ssmtp / ssmtp.conf
NVRAM_PREFIX = ssmtp_
PACKAGE_NAME = "echo $ NVRAM_PREFIX | sed" s / _ / / "
logger_func "パッケージ$ PACKAGE_NAMEに対する$ CONFIG_FILEの生成"
#echo $ 0:パッケージ$ PACKAGE_NAMEの$ CONFIG_FILEを生成しています
echo "#!/ bin / sh"> $ CONFIG_FILE
echo "#" >> $ CONFIG_FILE
echo "#$ 0によるnvramに基づいて自動生成" >> $ CONFIG_FILE
echo "#" >> $ CONFIG_FILE
if [-z "'nvram show | grep ssmtp'"]
それから
logger_func "confファイルを生成するのに必要なNVRAM変数を設定していないようです"
logger_func "**スタートアップスクリプトでこれらのコマンドを使用することを検討してください**:"
logger_func "nvram set [email protected]"
logger_func "nvram set ssmtp_mailhub = smtp.gmail.com:587"
logger_func "nvram set [email protected]"
logger_func "nvram set ssmtp_UseSTARTTLS = YES"
logger_func "nvram set ssmtp_AuthUser = username"
logger_func "nvram set ssmtp_AuthPass = password"
logger_func "nvram set ssmtp_FromLineOverride = YES"
logger_func "設定を有効にするためにNVRAM変数を作成し、initスクリプトを再実行するか再起動します。"
0番出口
fi
################################################## #########
#
#メインループ
#
SED_COMMAND = "s / $ NVRAM_PREFIX / /"
CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
$ CONFIG_VARS内のiの場合。行う
echo $ i >> $ CONFIG_FILE
終わった
################################################## #########
#
# サニティーチェック
#
もし[! -f "$ CONFIG_FILE"];それから
#echo "$ 0:エラー - $ CONFIG_FILEを作成できませんでした。おそらく/ etc / XXXX /> / tmp / etc / XXXXというシンミンクがありませんか?"
logger_func "エラー - $ CONFIG_FILEを作成できませんでした。おそらく、symink / etc / XXXX - > / tmp / etc / XXXXがありません?"
fi
logger_func "########### SSMTP initの実行が完了しました############"
実行可能にします。
chmod + x ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
スクリプト内のNVRAM待機変数に注意してください。変更したファームウェアをルーターにインストールした後で、それらに動作する何かを与えるのは私たちの責任です。.
変更したファームウェアをビルドする
これですべてが整いました。次に、変更したファームウェアを圧縮バイナリに再パッケージして、ルータにフラッシュします。.
“ build.sh”スクリプトの構文は次のとおりです。
./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY
これを行うには、提供されているスクリプトを使用します。
./build_firmware.sh output_mini1 ./working_dir_mini1/
「ビルド」操作が完了すると、「output」ディレクトリで使用されるのを待っているいくつかのファームウェアイメージがあります。.
通常はDD-WRTファームウェアと同じように、「custom_image_00001-generic.bin」というファイルをルーターにフラッシュすることができます。.
注意:ファームウェアフラッシュの前、間、直後に「工場出荷時のデフォルト」に復元することを忘れないでください.
ポストフラッシュステップ
SSMTPパッケージがssmtp設定ファイルを生成するためにNVRAM変数を探すようにしたので、不足している情報を指定する必要があります。.
これを実現するために、Web GUIの「Run commands」機能を使用します。.
Web GUIに移動します - > "administration" - > "commands" - >テキストボックスに次のように貼り付けます:
nvram set [email protected]
nvram set ssmtp_mailhub = smtp.gmail.com:587
nvram set [email protected]
nvram set ssmtp_UseSTARTTLS = YES
nvram set ssmtp_AuthUser =あなたのgmailユーザ名(@ gmail.comなし)
nvram set ssmtp_AuthPass = you-gmail-password
nvram set ssmtp_FromLineOverride = YES
NVRAMコミット
等号(=)の後のテキストを実際の情報に置き換えます。その後、「Run commands」を押します。.
注意:通常の、TLSを使用しない、SMTPサーバーを使用している場合、使用するポートは587ではなく25です。.
SSMTP情報が使用可能になったので、initスクリプトを呼び出す必要があります。そのため、ルータを再起動するか、これを「コマンド」テキストボックスに貼り付けることができます。
/etc/init.d/S80ssmtp
次に「Run commands」をもう一度押します。.
このコマンドの出力は次のようになります。
あなたがEメールを送信できることをテストする
これを「コマンド」テキストボックスに次のコマンドとあなたのEメールアドレスで貼り付けます。
echo "123 QWEへのテスト用ルツボの電子メール送信" ssmtp -vvv [email protected]
次に「Run commands」をもう一度押します。.
冗長性を高めるために-vvvオプションを使用したため、このコマンドの出力は次のようになります。
すべてがうまくいったら、数秒以内にテストEメールを受け取るはずです。.
この情報を利用してホームルーターの限界をさらに引き上げることができ、それから可能だと考え、そして今あなたは本当にあなたのホームルーターをコントロールし、そしてDD-WRT…
Linuxは寿命を延ばし、Linuxは意識を拡大します…Linuxはパケット移動に不可欠です