Jika Anda belum melakukannya, pastikan dan periksa dua artikel sebelumnya dalam rangkaian:
- Ubah Router Home Anda Menjadi Router Super-Powered dengan DD-WRT
- Cara Meningkatkan Sinyal Jaringan Wi-Fi Anda dan Meningkatkan Rentang dengan DD-WRT
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.
Ikhtisar
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
Tujuan
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:
- Instal paket ketukan dan ketergantungannya.
-
Instal paket ssmtp dengan konfigurasi yang dibuat berbasis NVRAM.
Opsional dengan dukungan untuk TLS smtp (dukungan Gmail a.k.a).
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, siapa yang dapat menghancurkan sesuatu, mengendalikan sesuatu, dan hanya geeks yang melakukan itu
Prasyarat
- Menggunakan prosedur ini bisa bata router Anda, seperti dalam membuat router Anda tidak dapat digunakan, kami tidak bertanggung jawab atas segala kerusakan yang mungkin disebabkan secara langsung atau lainnya karena penggunaan prosedur di bawah ini.
- Prosedur ini dilakukan pada sistem berbasis Debian (Lenny, Squeeze and Mint) dan petunjuk di bawah ini menganggap Anda menggunakan salah satu juga.
- Prosedur ini hanya disarankan bagi orang yang memiliki pengalaman dengan mem-flash router mereka dengan DD-WRT, dengan semua prasyarat, peringatan dan batasan yang berlaku untuk pengaturan perangkat keras mereka. tempat yang baik untuk memulai adalah Turn Your Home Router menjadi Super-Powered Router dengan panduan DD-WRT.
- Router Anda harus mendukung setidaknya versi "mini" dari DD-WRT.
- Prosedur ini dibuat dan diuji pada router Linksys WRT54GS / L, jika Anda menggunakan router dari vendor lain, jarak tempuh Anda sangat mungkin.
Mempersiapkan
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 make 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 https://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 suatu versi, disarankan untuk menggunakan revisi terbaru dari firmware yang tersedia, karena mereka cenderung memiliki banyak perbaikan bug dibandingkan dengan rekan "stabil" mereka. Pada saat penulisan ini yang terbaru adalah "03-17-11-r16454" dan revisi ini digunakan dalam perintah yang mengikuti.
wget https://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 …
Memasang paket
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.
Paket ketukan
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 memakan 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 https://downloads.openwrt.org/backports/rc5/knockd_0.5-1_mipsel.ipk wget https://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
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 batasan yang diberlakukan oleh sistem tertanam, jadi tarik napas dalam-dalam … siap? …. Ayo pergi…:)
Unduh paket:
wget https://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 https://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:
- Buat lokasi file konfigurasi tempat paket ssmtp mengarah ke lokasi read-only di bawah dll, tunjuk ke direktori tmp yang dapat ditulis pada saat runtime.
- Buat skrip yang secara dinamis akan menghasilkan konfigurasi berdasarkan dari variabel NVRAM saat startup.
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 mengarahkan / etc / ssmtp pada root file sistem 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 logis saat ini, karena kami mengarahkan direktori konfigurasi paket ke lokasi di luar direktori kerja kit modifikasi firmware, saya jamin bahwa ini terlihat sangat baik dari sudut pandang router pada waktu proses.
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 and Aviad Raviv # site: https://www.bitsum.com, https://howtogeek.com # # script to build config file from nvram vars. # will work for any config file that uses # var=value type pairs. # # uses prefixes for nvram variables. # # i.e. # ssmtp_hostname=something # translates to ssmtp.conf # hostname=something # logger_func() { logger -s -p local0.notice -t SSMTP_init $1 }
logger_func '###########Started the SSMTP init run###########' logger_func 'Creating the etc directory in /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 'Generating $CONFIG_FILE for package $PACKAGE_NAME' #echo $0: generating $CONFIG_FILE for package $PACKAGE_NAME echo '#!/bin/sh' > $CONFIG_FILE echo '#' >> $CONFIG_FILE echo '# auto generated based on nvram by $0' >> $CONFIG_FILE echo '#' >> $CONFIG_FILE
if [ -z '`nvram show | grep ssmtp`' ] then logger_func 'It appears that you have not set the NVRAM variables required to generate the conf file' logger_func '**Consider** using these commands in you startup script:' 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 'create the NVRAM variables and re-run the init script or reboot for the settings to take affect.' exit 0 fi
########################################################### # # main loop # SED_COMMAND='s/$NVRAM_PREFIX/ /' CONFIG_VARS=`nvram show | grep $NVRAM_PREFIX | sed '$SED_COMMAND'` for i in $CONFIG_VARS; do echo $i >> $CONFIG_FILE done
########################################################### # # sanity check # if [ ! -f '$CONFIG_FILE' ]; then # echo '$0: ERROR - could not create $CONFIG_FILE. Perhaps there is no symink /etc/XXXX -> /tmp/etc/XXXX ?' logger_func 'ERROR - could not create $CONFIG_FILE. Perhaps there is no symink /etc/XXXX -> /tmp/etc/XXXX ?' fi logger_func '###########Finished the 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.
Bangun Firmware yang dimodifikasi
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=your-gmail-user-name(without the @gmail.com) nvram set ssmtp_AuthPass=you-gmail-password nvram set ssmtp_FromLineOverride=YES nvram commit
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:
echo 'testing crucible emailing 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:
Kami berharap 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