OpenWRT: aturan iptables akan dihapus secara otomatis

3

Dalam contoh OpenWRT saya, saya telah menambahkan aturan iptables dalam tabel filter Input, tetapi masalahnya adalah ketika saya menghidupkan sistem saya, saya menemukan bahwa aturan dihapus. Apa yang bisa saya lakukan agar aturan tidak terhapus secara otomatis.

kaio
sumber
1
Distro apa yang Anda gunakan?
amccormack
mengapa Anda menambahkan ifconfig keluaran? Seharusnya itu tidak perlu untuk pertanyaan ini.
amccormack
Hubungi administrator sistem Anda dan minta mereka untuk membantu Anda alih-alih mengajukan pertanyaan yang sama dua kali. Jika Anda tidak tahu siapa yang memodifikasi file iptables Anda, kami tidak dapat membantu Anda. Anda juga bisa coba gunakan Google .
@amccormack Saya menambahkan ke firmware openwrt paket iptables-save dan iptables-store Bagaimana saya bisa membantu menambahkan aturan ke tabel. Terima kasih

Jawaban:

5

OpenWRT

Ada beberapa cara untuk mengedit iptables di OpenWRT.

Penggunaan iptables secara langsung

OpenWRT akan menjalankan konten /etc/firewall.user saat startup. Ini adalah skrip shell, jadi akan terlihat seperti ini:

root@OpenWrt:/etc# cat firewall.user 
# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 22 -j DNAT --to 10.1.1.1:2222
iptables -A FORWARD -p tcp -d 10.1.1.1 --dport 2222 -j ACCEPT

Pengujian /etc/firewall.user

Setelah mengedit /etc/firewall.user file, Anda mungkin ingin mengujinya. Ini karena Anda mungkin dapat melihat kesalahan jika Anda menjalankan skrip saat start up. Untuk menguji skrip:

  • Pertama, hapus semua aturan yang dipengaruhi oleh skrip. SEBUAH iptables -F akan berfungsi, tetapi mungkin menghapus aturan yang tidak perlu Anda uji.
  • Selanjutnya, jalankan bash /etc/firewall.user. Anda ingin melihat apakah ada kesalahan dalam skrip. Jika Anda mendapatkan pesan kembali, Anda mungkin salah ketik.
  • Selanjutnya, jalankan iptables -L dan memastikan aturan yang ingin Anda tambahkan ditambahkan dengan benar.
  • Akhirnya, hidupkan ulang perangkat. Pada titik ini Anda harus mengharapkan aturan akan ditambahkan seperti yang terakhir kali.

iptables-save dan iptables-restore

OpenWRT (bersama dengan distro lain), miliki a iptables-save perintah. Dengan berlari iptables-save > myrules, Anda akan memiliki file yang berisi semua yang diperlukan untuk mengembalikan aturan iptables Anda.

iptables-restore < myrules akan membaca file aturan iptables dan menerapkannya.

Jadi, Anda harus membuat myrules file, dan kemudian jalankan iptables-restore < myrules saat boot. Anda dapat menjalankan saat boot dengan mengedit /etc/rc.local mengajukan.

Informasi lebih lanjut tentang iptables-save dan iptables-restore dapat ditemukan sini .

Gunakan Sintaks Konfigurasi Firewall OpenWRTs

Itu /etc/config/firewall file dapat diedit juga. Firewall "menyediakan antarmuka konfigurasi yang abstrak dari sistem iptables untuk menyediakan model konfigurasi yang disederhanakan yang sesuai untuk sebagian besar keperluan reguler sembari memungkinkan pengguna untuk memasok aturan iptables yang dibutuhkan sendiri saat dibutuhkan."

Informasi lebih lanjut dapat ditemukan sini

Distro lainnya

Debian atau Ubuntu

Jika Anda menjalankan Debian atau Ubuntu, Anda dapat mencoba iptables-persistent paket.

sudo apt-get install iptables-persistent

Di atas akan menginstal layanan. Ini kemudian akan menyimpan aturan Anda /etc/iptables/rules.v4 dan /etc/iptables/rules.v6.

Anda bisa mendapatkan lebih banyak info untuk Ubuntu 12.04 sini , Ubuntu 14.04 sini .

CentOS

Jika Anda menjalankan CentOS, Anda dapat menyimpan aturan dengan menjalankan:

/sbin/service iptables save 

yang akan menyimpan konten iptables ke /etc/sysconfig/iptables. Konten sebelumnya /etc/sysconfig/iptables akan disimpan ke /etc/sysconfig/iptables.save.

Anda bisa mendapatkan info lebih lanjut sini .

amccormack
sumber
terima kasih @ amccormack tapi saya menggunakan disto adalah openwrt
terima kasih amccormack saya suka kata Anda tetapi ketika saya reboot saya menemukan bahwa aturan dihapus. dan saya mengubah eth0 dengan eth0.2.
Apakah Anda memasukkan aturan Anda di sana? Saya hanya menaruh beberapa aturan sampel di sana untuk menunjukkan ke mana mereka pergi. Saya akan menambahkan catatan tentang pengujian.
amccormack
@ amccormack Saya punya proyek aplikasi yaitu menambahkan aturan dari tabel di antarmuka web filter, jadi saya membuat skrip yang memungkinkan Anda menambahkan aturan di tabel filter seperti ini: coba: os.system ("iptables -D INPUT -m mac-source --mac "+ mac +" j DROP ") kecuali Pengecualian sebagai e: print e os.system (" iptables INPUT -m mac-source -mac "+ mac +" j DROP ") Saya lakukan tidak menambahkan aturan secara manual.
Selama Anda menggunakan os.system, mengapa tidak menggunakannya dua kali. Juga jalankan a os.system("echo iptables -D INPUT -m mac-source --mac" + mac + "j DROP") >> /etc/firewall.user. Juga, waspadalah terhadap risiko injeksi perintah yang mencolok di komputer Anda os.system penggunaan, pastikan karakter baik daftar putih.
amccormack