パフォーマンスを大幅に向上させるために、DD-WRT代替ファームウェアを使用してホームルーターを変更する方法についてはすでに説明しました。本日は、DD-WRTMod-Kitを使用してさらに拡張する方法を説明します。
まだ読んでいない場合は、シリーズの前の2つの記事を確認してください。
あなたがそれらのトピックに精通していると仮定して、読み続けてください。このガイドはもう少し技術的であり、初心者はルーターを改造するときに注意する必要があることに注意してください。
概要概要
このガイドでは、「」を使用して変更や追加を行った独自のDD-WRTファームウェアを作成する方法を段階的に説明します。 ファームウェア変更キット “。
ファームウェア変更キットを使用すると、ソースからコンパイルせずにファームウェアを変更できます。提供されているスクリプトを使用してこのように変更を加えると、一部のファイルをダウンロード、置換、および削除するだけの簡単な作業になります。
この方法を使用する最も主な理由は、最近DD-WRTが Openwrt IPKGパッケージは(USB経由で)ハードドライブを備えたルーターにシフトしました。これにより、HDが利用できない場合にIPKGパッケージを正常にインストールするための唯一の一貫して機能する方法がmod-kitになります。さらに、この方法には、パッケージのインストールに関するJFFSの依存関係から解放されるという追加の利点があります。これは、フラッシュが4MBしかないルーターでは実際の問題です。
目標
この手順の説明は、 DD-WRT wiki と 開発者のサイト 、このガイドを、次の目標を達成するために誰でも使用できるコピー&ペースト手順にすることを目指しています。
- ノックされたパッケージとその依存関係をインストールします。
-
NVRAMベースの生成された構成でssmtpパッケージをインストールします。
- オプションでTLSsmtpのサポート付き(別名Gmailサポート)。
この手順を実行すると、他のパッケージのインストールに合わせて簡単に調整できるようになります。
警告
:
軽く踏みます…変更キットの誤った使用は、必要なルーターを残す可能性があることに注意してください
でーbりckーいんg
(順番にそれを
役に立たないレンガ
)。しかし、あなたが真のオタクなら、おそらくそのイデオロギーに同意しているでしょう。
物を破壊できる者、物を支配する者
、そして真のオタクだけがそれをします
前提条件
- この手順を使用すると、 レンガ あなたのルーターを作るようにあなたのルーター 使用できない、 以下の手順を使用したことにより、直接的またはその他の方法で生じたいかなる損害についても、当社は責任を負いません。
- この手順はDebianベースのシステム(Lenny、Squeeze、Mint)で実行され、以下の手順では、Debianベースのシステムも使用していることを前提としています。
- この手順は、DD-WRTでルーターをフラッシュした経験があり、ハードウェアのセットアップに適用されるすべての前提条件、警告、および制限がある場合にのみ推奨されます。始めるのに良い場所は私たちです ホームルーターをDD-WRTを備えたスーパーパワードルーターに変える ガイド。
- ルーターは、少なくとも「ミニ」バージョンのDD-WRTをサポートしている必要があります。
- この手順は、Linksys WRT54GS / Lルーターで作成およびテストされています。他のベンダーのルーターを使用している場合は、マイレージが非常に高くなる可能性があります。
セットアップ
必要なパッケージのインストール
ファームウェア変更キットには、コンパイルして機能させるためのいくつかの依存関係があります。それらをすべて一度にインストール/更新するには、ターミナルで次のコマンドを発行します。
sudo aptitude install gcc g ++ binutils patch bzip2 flex bison make gettext unzip zlib1g-dev libc6 subversion
mod-kitをダウンロードする
サブフォルダーを作成し、公式のSVNからキットを入手します。
mkdirfirmware_mod_kit
cdファームウェア_mod_kit
svnチェックアウトhttp://firmware-mod-kit.googlecode.com/svn/trunk/firmware-mod-kit-read-only
cdファームウェア-mod-kit-読み取り専用/トランク/
作業するファームウェアをダウンロードする
最初に考慮すべきことは、どのバージョンを使用するかです。
経験則は次のとおりです。疑わしい場合は「ミニ」を使用してください。これは、ルーターが少なくとも「ミニ」バージョンをサポートしている限り、ルーターを使用すると、ブロートウェアなしで最も一般的に使用されるすべての機能が提供されるためです。したがって、プロシージャ用のスペースと、JFFS用のスペースの両方を残します。
その他の使用法
ほとんどの場合。
バージョンを決定したら、利用可能なファームウェアの最新リビジョンを使用することをお勧めします。これは、「安定した」対応するファームウェアと比較して、多くのバグ修正が行われる傾向があるためです。
この記事の執筆時点では、最新のものは「03-17-11-r16454」であり、このリビジョンは次のコマンドで使用されます。
wget 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ツールがビルドされます。これは1回だけ発生し、少し時間がかかる場合があります…だからしばらくお待ちください…
パッケージのインストール
ファームウェアが抽出されたので、パッケージをファームウェアにインストールできます。
一般に、手順は、パッケージとその依存関係をipkファイルの形式でからダウンロードすることです。
openWRTリポジトリ
。ダウンロードしたら、提供されたスクリプトを使用して、抽出したファームウェアにインストールします。
ノックされたパッケージ
Knockdの構成と使用方法の詳細な手順については、今後の記事で詳しく説明します。Knockdはスペースをあまりとらないため、この手順を今はスキップするか、将来に備えて実行することを選択できます。
Knockdは、リンク層でシーケンスの通信イベントをリッスンし、それらに作用するデーモンです。
これが意味するのは、デーモンを実行しているデバイスがポートを「リッスン」することさえなく(ポートスキャンではポートが開いているとは見なされない)、1つのコマンドからすべての必要なことを実行できるということです。
方法
完全なスクリプトに。
この手法を使用する
ホームネットワークを公開せずに、サーバーをトリガーして、サーバーに必要なあらゆる種類の操作をリモートで(インターネット経由で)実行できます。
Knockdにはリストされている依存関係が1つしかないため、次を発行してパッケージとその依存関係をダウンロードします。
wget 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
「ノックデーモン」(knockd)ipkをファームウェアにインストールします。
./ipkg_install.shknockd_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サポート(オプション)
SSMTPは、依存関係として他のパッケージをリストしませんが、TLS認証を必要とするSMTPゲートウェイを使用できるようにする場合(つまり、
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パッケージには制限があり、代替構成ファイルを使用して呼び出すことはできません。
ファームウェアはルーター上にある場合は読み取り専用であるため、箱から出してすぐに構成をファームウェアにハードコーディングすることしかできません。
ただし、メール設定を変更するためだけに、ファームウェアの変更手順をすべて実行したくない場合はどうすればよいでしょうか。 (たとえば、パスワードの変更)。
そのために、Jeremy(ファームウェアmod-kitの作成者)と私は両方とも、これを行う唯一の正しい方法は次のようになるという結論に達しました(私が謙虚に追加する場合は独立して)。
- ssmtpパッケージが指す設定ファイルの場所をetcの下の読み取り専用の場所にし、実行時に書き込み可能なtmpディレクトリを指すようにします。
- 起動時にNVRAM変数に基づいて構成を動的に生成するスクリプトを作成します。
それを達成するには、いくつかの追加の手順が必要です…
ssmtp構成ディレクトリをシンボリックリンクします
上で説明したように、私たちは作る必要があります
/ etc / ssmtp
ルーター上の場所、ポイント
/ tmp
ディレクトリは、実行時にルーター上にある唯一の書き込み可能な場所です。これを行うには、ipkインストーラーによって作成されたssmtpディレクトリを削除します。
rm -rf ./working_dir_mini1/rootfs/etc/ssmtp/
ルーターのルートファイルシステム上の/ etc / ssmtpを指す新しいシンボリックリンクを作成し、絶対パスとして/ tmp / etc / ssmtpを指すようにします。
ln -s / tmp / etc / ssmtp / ./working_dir_mini1/rootfs/etc/ssmtp
注意 :これは今のところ非論理的に見えますが、パッケージの構成ディレクトリをファームウェア変更キットの作業ディレクトリの外の場所に向けているため、実行時のルーターの観点からはこれはまったく問題ないように見えます。
initスクリプト
このスクリプトをファームウェアに挿入せず、後で起動スクリプトとして実行することは完全に可能ですが、将来の使用例としてのみ、ここに配置するのが適切だと思います。
もともとジェレミーは誰かの要求に合わせてスクリプトを作成しましたが、後でDD-WRTおよびsyslogレポートとの互換性を高めるためにスクリプトを調整および拡張しました。
新しい初期化(起動)スクリプトを作成します。
vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
注:別のエディターを使用することもできます。ルーターで利用できるものと一致しているため、viを使用しています…
これをその内容にします:
#!/ bin / sh
#
#タイトル:ssmtp_nvram.sh
#作者:JeremyCollakeとAviadRaviv
#サイト:http://www.bitsum.com、http://howtogeek.com
#
#nvramvarsから設定ファイルを作成するスクリプト。
#を使用するすべての設定ファイルで機能します
#var = valueタイプのペア。
#
#nvram変数にプレフィックスを使用します。
#
# い。え。
#ssmtp hostname = something
#ssmtp.confに変換されます
#ホスト名=何か
#
logger_func()
{
ロガー-s-p local0.notice -t SSMTP_init $ 1
}
logger_func "########### SSMTP initrunを開始しました###########"
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
エコー "#" >> $ CONFIG_FILE
echo "#nvramに基づいて$ 0"で自動生成>> $ CONFIG_FILE
エコー "#" >> $ CONFIG_FILE
[ -z "`nvram show | grep ssmtp`" ]の場合
その後
logger_func "confファイルの生成に必要なNVRAM変数を設定していないようです"
logger_func "起動スクリプトで次のコマンドを使用することを**検討**してください:"
logger_func "nvram set ssmtp_root = [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
されます
###########################################################
#
#メインループ
#
SED_COMMAND = "s / $ NVRAM_PREFIX / /"
CONFIG_VARS = `nvram show | grep $ NVRAM_PREFIX | sed "$ SED_COMMAND" `
$ CONFIG_VARSのiの場合;行う
エコー$ i >> $ CONFIG_FILE
完了
###########################################################
#
# サニティーチェック
#
[ ! -f "$CONFIG_FILE" ]の場合;その後
#echo "$ 0:ERROR- $ CONFIG_FILEを作成できませんでした。おそらくsymink / etc / XXXX-> / tmp / etc / XXXXがありませんか?"
logger_func "エラー-$ CONFIG_FILEを作成できませんでした。おそらくsymink / etc / XXXX-> / tmp / etc / XXXXがありませんか?"
されます
logger_func "########### SSMTP initrunを終了しました###########"
実行可能にする:
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/
「ビルド」操作が完了すると、「出力」ディレクトリで使用されるのを待っているいくつかのファームウェアイメージがあります。
これで、「custom_image_00001-generic.bin」というファイルを次のようにルーターにフラッシュできます。 通常はDD-WRTファームウェアを使用します 。
注意 :ファームウェアフラッシュの前、最中、直後に「工場出荷時のデフォルト」に復元することを忘れないでください。
フラッシュ後の手順
ssmtp構成ファイルを生成するためにSSMTPパッケージにNVRAM変数を検索させたため、不足している情報をパッケージに提供する必要があります。
これは、WebGUIの「コマンドの実行」機能を使用して実行します。
Webに移動します-GUI->「管理」->「コマンド」->テキストボックスに次のように貼り付けます。
nvram set ssmtp_root = your-email @ gmail.com
nvram set ssmtp_mailhub = smtp.gmail.com:587
nvram set [email protected]
nvram set ssmtp_UseSTARTTLS = YES
nvram set ssmtp_AuthUser = your-gmail-user-name(@ gmail.comなし)
nvram set ssmtp_AuthPass = you-gmail-password
nvram set ssmtp_FromLineOverride = YES
nvramコミット
等号(=)の後のテキストを実際の情報に置き換えてから、[コマンドの実行]をクリックします。
注意
:通常の非TLS使用のSMTPサーバーを使用している場合、使用するポートは587ではなく25です。
SSMTP情報を使用する準備ができたので、initスクリプトを呼び出す必要があります。したがって、ルーターを再起動するか、これを「コマンド」テキストボックスに貼り付けることができます。
/えtc/いにt。d/S80っsmtp
次に、もう一度「コマンドの実行」を押します。
このコマンドの出力は次のようになります。
メールを送信できることをテストする
もう一度、これを「コマンド」テキストボックスに貼り付けて、次のコマンドをメールアドレスとともに入力します。
echo "るつぼのメール送信123qweのテスト" | ssmtp -vvv [email protected]
次に、もう一度「コマンドの実行」を押します。
冗長性を高めるために-vvvオプションを使用したため、このコマンドの出力は次のようになります。
すべてがうまくいけば、数秒以内にテストメールが届くはずです。
この情報を使用して、ホームルーターの制限をあなたが考えていた以上に押し上げることができることを願っています。 本当にあなたのホームルーターを制御し、DD-WRT …
Linuxは寿命を延ばし、Linuxは意識を拡大します…Linuxはパケット旅行に不可欠です