Kami telah menunjukkan kepada Anda cara memodulasi router rumah dengan firmware alternatif DD-WRT untuk kinerja yang sangat meningkat, dan hari ini kami akan menunjukkan kepada Anda bagaimana membawanya lebih jauh dengan DD-WRT Mod-Kit.
Jika Anda belum melakukannya, pastikan dan periksa dua artikel sebelumnya dalam seri:
Dengan asumsi Anda sudah familiar dengan topik tersebut, teruslah membaca. Perlu diingat bahwa panduan ini sedikit lebih teknis, dan pemula harus berhati-hati ketika memodifikasi router mereka.
Panduan ini akan memberikan langkah demi langkah rundown tentang cara membuat firmware DD-WRT Anda sendiri dengan modifikasi dan penambahan menggunakan "firmware modifikasi kit".
Modifikasi firmware kit memungkinkan seseorang melakukan modifikasi pada firmware tanpa mengompilasinya dari sumber. Membuat perubahan dengan cara ini, dengan bantuan skrip yang disediakan, menjadi masalah sederhana untuk mengunduh, mengganti dan menghapus beberapa file.
Alasan paling utama untuk menggunakan metode ini adalah karena dukungan DD-WRT akhir-akhir ini untuk paket IPKG Openwrt telah bergeser ke arah router yang memiliki hard drive (via USB), yang menjadikan mod-kit satu-satunya cara kerja yang konsisten untuk menginstal paket IPKG dengan sukses untuk kasus-kasus di mana HD tidak tersedia. Selain itu, metode ini memiliki keuntungan tambahan untuk membebaskan Anda dari ketergantungan JFFS untuk instalasi paket, yang untuk router dengan hanya 4 MB flash adalah masalah nyata.
Bayangkan menurut publikasi publik
Sementara instruksi untuk prosedur ini, diperinci pada wiki DD-WRT dan di situs pengembang, kami bertujuan untuk membuat panduan ini prosedur salin & tempel yang dapat digunakan siapa pun untuk mencapai tujuan berikut:
Setelah Anda mengikuti prosedur ini, harus mudah untuk menyesuaikannya dengan instalasi paket lainnya.
Peringatan: Tapak dengan ringan… ingatlah bahwa penggunaan yang salah dari perangkat modifikasi, dapat meninggalkan Anda dengan router yang perlu de-brick-ing (seperti pada gilirannya menjadi batu bata yang tidak berguna). Namun jika Anda seorang geek sejati Anda mungkin berlangganan ideologi itu, dia yang dapat menghancurkan sesuatu, mengendalikan sesuatu, dan hanya geeks yang melakukan itu
Memasang paket yang dibutuhkan
Paket modifikasi firmware memiliki beberapa dependensi untuk dikompilasi dan berfungsi. Untuk memasang / memperbaruinya sekaligus Melakukan perintah ini di terminal:
sudo aptitude install gcc g ++ binutils patch bzip2 flex bison membuat gettext unzip zlib1g-dev libc6 subversion
Unduh mod-kit
Buat sub-folder, dan dapatkan kit dari SVN resmi:
mkdir firmware_mod_kit
cd firmware_mod_kit
svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-read-only
cd firmware-mod-kit-read-only / trunk /
Unduh firmware untuk dikerjakan
Hal pertama yang harus dipertimbangkan adalah versi mana yang ingin Anda gunakan?
Aturan praktisnya adalah: ketika ragu menggunakan "mini". Ini karena selama router Anda mendukung setidaknya versi "mini", menggunakannya memberi Anda semua fitur yang paling umum digunakan tanpa bloatware apa pun. sehingga meninggalkan ruang untuk prosedur dan bahkan beberapa ruang JFFS untuk penggunaan lain dalam banyak kasus.
Setelah Anda memutuskan pada versi, disarankan untuk menggunakan revisi terbaru dari firmware yang tersedia, karena mereka cenderung memiliki banyak perbaikan bug dibandingkan dengan rekan-rekan "stabil" mereka.
Pada saat penulisan ini yang terbaru adalah "03-17-11-r16454" dan revisi ini digunakan dalam perintah yang mengikuti.
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
Agar lebih mudah melacak versi apa yang kami gunakan, ganti nama file yang diunduh untuk mewakili nomor versinya:
mv dd-wrt.v24_mini_generic.bin dd-wrt.v24_mini_generic-03-17-11-r16454.bin
Ini tentu saja opsional, tetapi perintah di bawah ini menganggap bahwa Anda telah mengganti nama file.
Mengekstrak firmware
Agar dapat mengubah file dalam firmware, kita perlu mengekstrak kontennya ke dalam direktori sementara.
Sintaks dari perintah ini adalah:
./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
Dalam kasus kami, ini akan diterjemahkan menjadi:
./extract_firmware.sh dd-wrt.v24_mini_generic-03-17-11-r16454.bin ./working_dir_mini1
Catatan: Saat pertama kali Anda menjalankan perintah ini, ini membangun alat mod-kit pada sistem Anda. ini hanya terjadi sekali dan mungkin perlu sedikit waktu ... jadi bersabarlah ...
Sekarang setelah firmware diekstraksi kita dapat menginstal paket-paketnya.
Secara umum, prosedurnya adalah mengunduh paket dan dependensinya dalam bentuk file ipk dari repositori openWRT. Setelah diunduh, instal ke dalam firmware yang diekstrak menggunakan skrip yang disediakan.
Petunjuk terperinci tentang cara mengonfigurasi dan menggunakan Knockd akan dirinci dalam artikel yang akan datang, jadi Anda dapat memilih untuk melewati langkah ini sekarang atau melakukannya sebagai persiapan untuk masa depan karena Knockd tidak mengambil banyak ruang.
Knockd adalah daemon yang mendengarkan peristiwa komunikasi di lapisan tautan untuk urutan kemudian bertindak terhadapnya.
Apa artinya ini, adalah bahwa Anda dapat memiliki perangkat yang menjalankan daemon bahkan tidak "mendengarkan" pada port (scan port tidak akan melihatnya sebagai terbuka) dan masih membuatnya melakukan sesuatu yang Anda butuhkan, dari satu perintah hingga ke atas ke skrip lengkap. Dengan menggunakan teknik ini, Anda dapat memicu server untuk melakukan operasi apa pun yang Anda perlukan dari jarak jauh (di seluruh internet) tanpa memaparkan jaringan rumah Anda.
Knockd hanya memiliki satu ketergantungan terdaftar, jadi unduh paket dan ketergantungannya dengan menerbitkan:
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
Instal "knock daemon" (knockd) ipk ke dalam firmware:
./ipkg_install.sh knockd_0.5-1_mipsel.ipk ./working_dir_mini1/
Instal "packet capture" (libpcap) ipk ke dalam firmware:
./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/
Seperti "ketukan" dapat dipanggil dengan file konfigurasi alternatif (bagaimana akan dijelaskan dalam artikel yang akan datang), tidak perlu melakukan operasi lain dan Anda dapat lompat ke bagian bangunan firmware, jika semua yang ingin Anda instal.
Paket SSMTP memungkinkan router Anda untuk mengirim pesan Email sama seperti yang kami tunjukkan di Panduan Konfigurasi Email Kami di Linux Menggunakan Gmail atau SMTP untuk server. Kami berjanji pada Anda bahwa kami akan menunjukkan cara mengonfigurasikan ini untuk DD-WRT dan sekarang akan kami sampaikan.
Ini terutama berguna jika Anda akan membuat skrip di router yang Anda ingin menerima umpan balik tentang operasi mereka melalui email.
Pengaturan paket ini sedikit lebih rumit daripada sistem Linux normal karena pembatasan yang diberlakukan oleh sistem tertanam, jadi tarik napas dalam-dalam ... siap? .... Ayo pergi… :)
Unduh paket:
wget http://downloads.openwrt.org/backports/rc5/ssmtp_2.61-1_mipsel.ipk
Instal ipk “ssmtp” ke dalam firmware:
./ipkg_install.sh ssmtp_2.61-1_mipsel.ipk ./working_dir_mini1/
Dukungan TLS (Opsional)
SSMTP tidak mencantumkan paket lain apa pun sebagai dependensinya, namun jika Anda ingin dapat menggunakan gerbang smtp yang memerlukan autentikasi TLS (mis. Gmail), Anda harus menginstal pakage openSSL juga.
Catatan: Ada yang BESAR kekurangan untuk melakukan hal ini dalam bentuk ruang yang jauh berkurang pada router untuk JFFS nanti. Yaitu, paket openSSL membutuhkan sekitar 500K ruang dari total Anda 4MB (untuk router pendukung non "mega" normal), digabungkan dengan overhead JFFS dan Anda akan menemukan bahwa kiri Anda dengan, tetapi beberapa berharga, blok dari ruang JFFS gratis (sekitar 60KB pada WRT54GL).
Karena masih ada TLS yang tidak memerlukan server smtp di luar sana (biasanya ISP Anda), saya sarankan untuk berpikir sejenak jika Anda benar-benar perlu menggunakan TLS yang membutuhkan gateway.
Jika Anda telah memutuskan untuk mengaktifkan dukungan TLS meskipun tidak diuntungkan, unduh paket openSSL:
wget http://downloads.openwrt.org/whiterussian/packages/libopenssl_0.9.8d-1_mipsel.ipk
Instal IPK “openSSL” (libopenssl) ke dalam firmware:
./ipkg_install.sh libopenssl_0.9.8d-1_mipsel.ipk ./working_dir_mini1/
Konfigurasi
Ada batasan dengan paket SSMTP, bahwa tidak mungkin untuk memohonnya dengan file konfigurasi alternatif.
Karena firmware hanya-baca ketika di router, itu berarti bahwa di luar kotak kita hanya dapat meng-hardcode konfigurasi ke dalam firmware.
Namun, bagaimana jika kita tidak ingin melalui semua langkah modifikasi firmware, hanya untuk mengubah pengaturan Email? (misalnya kata sandi berubah).
Untuk itu, baik Jeremy (pencipta mod-kit firmware) dan saya sendiri mencapai kesimpulan (secara mandiri jika saya dapat dengan rendah hati menambahkan) bahwa satu-satunya cara yang waras untuk melakukan ini adalah:
Untuk mencapai itu, beberapa langkah tambahan diperlukan ...
Symlink direktori konfigurasi ssmtp
Sebagaimana dijelaskan di atas, kita perlu membuat / etc / ssmtp lokasi di router, arahkan ke / tmp direktori sebagai satu-satunya tempat yang dapat ditulis yang kita miliki di router pada waktu berjalan. Untuk melakukan ini, hapus direktori ssmtp yang dibuat oleh pemasang ipk:
rm -rf ./working_dir_mini1/rootfs/etc/ssmtp/
Buat tautan simbolik baru yang menunjuk / etc / ssmtp pada sistem file root router, untuk menunjuk ke / tmp / etc / ssmtp sebagai jalur absolut:
ln -s / tmp / etc / ssmtp / ./working_dir_mini1/rootfs/etc/ssmtp
Catatan: Meskipun ini terlihat tidak masuk akal sekarang, karena kami menunjuk direktori konfigurasi paket ke lokasi di luar direktori kerja kit modifikasi firmware, saya yakinkan Anda bahwa ini terlihat benar-benar baik dari sudut pandang router pada waktu berjalan.
Skrip init
Meskipun sangat mungkin untuk tidak menyuntikkan skrip ini ke dalam firmware dan menjalankannya sebagai skrip startup nanti, saya merasa cocok untuk meletakkannya di sini jika hanya sebagai contoh untuk penggunaan di masa mendatang.
Awalnya Jeremy membuat skrip yang disesuaikan dengan permintaan seseorang, kemudian, saya menyesuaikan dan menambahkannya agar lebih kompatibel dengan pelaporan DD-WRT dan syslog.
Buat skrip init (startup) baru:
vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Catatan: Anda dapat menggunakan editor lain, saya menggunakan vi karena konsisten dengan apa yang tersedia di router ...
Jadikan ini isinya:
#! / bin / sh
#
# title: ssmtp_nvram.sh
# author: Jeremy Collake dan Aviad Raviv
# situs: http://www.bitsum.com, http://howtogeek.com
#
# script untuk membangun file konfigurasi dari nvram vars.
# akan berfungsi untuk file konfigurasi apa pun yang menggunakan
# var = pasangan tipe nilai.
#
# menggunakan awalan untuk variabel nvram.
#
# i.e.
# ssmtp_hostname = something
# diterjemahkan menjadi ssmtp.conf
# hostname = sesuatu
#
logger_func ()
logger -s -p local0.notice -t SSMTP_init $ 1
logger_func "########### Memulai SSMTP init run ###########"
logger_func "Membuat direktori dll di / tmp"
[! -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 "Menghasilkan $ CONFIG_FILE untuk paket $ PACKAGE_NAME"
#echo $ 0: menghasilkan $ CONFIG_FILE untuk paket $ PACKAGE_NAME
echo "#! / bin / sh"> $ CONFIG_FILE
echo "#" >> $ CONFIG_FILE
echo "# auto generated berdasarkan nvram oleh $ 0" >> $ CONFIG_FILE
echo "#" >> $ CONFIG_FILE
jika [-z "'nvram show | grep ssmtp'"]
kemudian
logger_func "Tampaknya Anda belum mengatur variabel NVRAM yang diperlukan untuk menghasilkan file conf"
logger_func "** Pertimbangkan ** menggunakan perintah ini di skrip startup Anda:"
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 = nama pengguna"
logger_func "nvram set ssmtp_AuthPass = kata sandi"
logger_func "nvram set ssmtp_FromLineOverride = YES"
logger_func "buat variabel NVRAM dan jalankan ulang skrip init atau reboot untuk pengaturan untuk mengambil pengaruh."
keluar 0
fi
###########################################################
#
# loop utama
#
SED_COMMAND = "s / $ NVRAM_PREFIX / /"
CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
untuk saya di $ CONFIG_VARS; melakukan
echo $ i >> $ CONFIG_FILE
selesai
###########################################################
#
# pemeriksaan kewarasan
#
jika [! -f "$ CONFIG_FILE"]; kemudian
# echo "$ 0: ERROR - tidak dapat membuat $ CONFIG_FILE. Mungkin tidak ada symink / etc / XXXX -> / tmp / etc / XXXX?"
logger_func "ERROR - tidak dapat membuat $ CONFIG_FILE. Mungkin tidak ada symink / etc / XXXX -> / tmp / etc / XXXX?"
fi
logger_func "########### Selesaikan SSMTP init run ###########"
Jadikan itu dapat dieksekusi:
chmod + x ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Catat variabel menunggu NVRAM di skrip, itu adalah tanggung jawab kami untuk memberi mereka sesuatu untuk dikerjakan setelah kami menginstal firmware kami yang dimodifikasi di router.
Setelah semuanya siap, sekarang saatnya untuk mengemas ulang firmware yang telah dimodifikasi menjadi biner terkompresi yang dapat kita flash ke router.
Sintaks skrip “build.sh” adalah:
./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY
Untuk melakukan ini, kami menggunakan skrip yang disediakan, jadi terbitkan:
./build_firmware.sh output_mini1 ./working_dir_mini1/
Setelah operasi "build" selesai, akan ada beberapa gambar firmware yang menunggu untuk digunakan di direktori "output".
Anda sekarang dapat mem-flash file bernama “custom_image_00001-generic.bin” ke router Anda seperti biasanya Anda menggunakan firmware DD-WRT.
Catatan: Jangan lupa mengembalikan ke "default pabrik" sebelum, selama dan tepat setelah flash firmware.
Posting langkah flash
Karena kami membuat paket SSMTP mencari variabel NVRAM untuk menghasilkan file konfigurasi ssmtp, kami sekarang harus menyediakannya dengan informasi yang hilang.
Kami akan mencapai ini dengan menggunakan fungsi "Jalankan perintah" web-GUI.
Buka web-GUI -> "administrasi" -> "perintah" -> tempelkan di kotak teks berikut:
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 = nama-gmail-pengguna-Anda (tanpa @ gmail.com)
nvram set ssmtp_AuthPass = Anda-gmail-kata sandi
nvram set ssmtp_FromLineOverride = YES
nvram berkomitmen
Ganti teks setelah tanda sama dengan (=), dengan informasi aktual Anda, Dan kemudian tekan "Jalankan perintah".
Catatan: jika Anda menggunakan regular, non TLS menggunakan, smtp server port untuk digunakan adalah 25 bukannya 587.
Setelah informasi SSMTP siap digunakan, Anda harus menjalankan skrip init. Jadi Anda dapat mereboot router, atau menempelkannya ke kotak teks “perintah”:
/etc/init.d/S80ssmtp
Kemudian tekan "Jalankan perintah" lagi.
Output dari perintah ini akan terlihat seperti:
Uji bahwa Anda dapat mengirim Email
Sekali lagi sisipkan ini ke dalam "perintah" text-box perintah berikut dengan alamat email Anda:
echo "menguji wadah email 123 qwe" | ssmtp -vvv [email protected]
Kemudian tekan "Jalankan perintah" lagi.
Karena kami menggunakan opsi -vvv untuk ekstra verbositas, output dari perintah ini akan terlihat seperti:
Jika semuanya berjalan lancar, Anda harus mendapatkan email tes dalam hitungan detik.
Kami berharap bahwa Anda dapat menggunakan informasi ini untuk mendorong batas router rumah Anda lebih jauh lagi maka Anda berpikir mungkin dan Anda sekarang benar-benar mengendalikan router rumah Anda, dan DD-WRT…
Linux memperpanjang umur, Linux memperluas kesadaran ... Linux sangat penting untuk perjalanan paket