Kesalahan iptables: opsi tidak dikenal --port

19

Perintah iptables tidak lagi mengakui salah satu pilihan yang paling umum digunakan ketika mendefinisikan aturan: --dport.

Saya mendapatkan kesalahan ini:

[root@dragonweyr /home/calyodelphi]# iptables -A INPUT --dport 7777 -j ACCEPT_TCP_UDP
iptables v1.4.7: unknown option `--dport'
Try `iptables -h' or 'iptables --help' for more information.

Perintah add rule di atas hanyalah contoh untuk mengaktifkan koneksi Terraria.

Inilah yang saat ini saya miliki sebagai konfigurasi iptables barebones ( listiptablesalias iptables -L -v --line-numbers), dan sudah jelas yang --dporttelah bekerja di masa lalu:

root@dragonweyr /home/calyodelphi]# listiptables 
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1       39  4368 ACCEPT     all  --  lo     any     anywhere             anywhere            
2      114 10257 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
3        1    64 ACCEPT     tcp  --  eth1   any     anywhere             anywhere            tcp dpt:EtherNet/IP-1 
4       72 11610 ACCEPT     all  --  eth1   any     anywhere             anywhere            

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 91 packets, 10045 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain ACCEPT_TCP_UDP (0 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            

Saya juga mencoba mendefinisikan rantai kustom (terinspirasi oleh pertanyaan ini ) untuk menerima koneksi tcp & udp sehingga saya tidak perlu mendefinisikan dua aturan untuk semua yang saya ingin aktifkan tcp dan udp untuk (seperti Minecraft atau Server Terraria, atau layanan lain seluruhnya). Tetapi bahkan ini tidak berhasil:

[root@dragonweyr /home/calyodelphi]# iptables -P ACCEPT_TCP_UDP DROP
iptables: Bad built-in chain name.

Ini menjadi sangat frustasi, dalam hal sopan (jumlah makian yang terlibat dengan ini akan membuat seorang pelaut menyuruh saya untuk menjaga mulut saya). Google-fu saya sangat buruk, jadi saya belum menemukan solusi untuk semua ini. Saya menjalankan CentOS 6.5 pada router. Bantuan dan petunjuk apa pun yang dapat Anda tawarkan akan luar biasa.

EDIT:

Pertanyaan bonus: Saya juga berencana untuk mengkonfigurasi penerusan port juga. Apakah masih perlu menetapkan aturan untuk menerima koneksi masuk melalui port tertentu?

Calyo Delphi
sumber

Jawaban:

27

Pertama berikan -popsi seperti -p tcpatau -p udp.

Contoh:

iptables -A INPUT -p tcp --dport 22 -m state --state BARU -j DROP

iptables -A INPUT -p udp --port 53 --port 1024: 65535 -j MENERIMA

Anda juga dapat mencoba -p alltetapi saya belum pernah melakukannya dan tidak menemukan terlalu banyak dukungan untuk itu dalam contoh.

dmourati
sumber
1
Saya baru saja mencoba ini -p alldan saya mendapatkan kesalahan yang persis sama. unknown option --dport. Ini bekerja dengan baik -p tcptetapi itu tidak benar-benar akan membantu saya dalam kasus ini karena hanya mengarah ke masalah yang sama: mendefinisikan aturan tcp / udp individu untuk semuanya.
Calyo Delphi
Dari pengalaman saya, menggunakan alltidak pernah bekerja dengan menentukan port. Namun, alih-alih memiliki beberapa aturan untuk protokol yang berbeda, Anda bisa memikirkan aturan dalam arah yang berbeda. Buat aturan berdasarkan protokol dan kemudian gunakan multiportsopsi untuk mengelompokkan beberapa aturan bersama.
canadmos
Jadi, jika saya ingin mengaktifkan koneksi Terraria dan Minecraft, saya dapat menggunakan multiport untuk membuka 7777 dan 25565, dan membuat aturan TCP dan UDP untuk setiap pasangan port?
Calyo Delphi
3
Opsi untuk -p harus berupa protokol tunggal yang memiliki konsep port ( -p ICMP --dport whatevertidak akan berfungsi, karena alasan yang jelas).
Falcon Momot
9

Protokol (-p) diperlukan jika Anda menggunakan --dport. Contoh:

-p tcp
Diego Woitasen
sumber
Selain itu, ia harus menentukan protokol yang memiliki konsep port, seperti yang ditunjukkan @FalconMomot dalam komentar sebelumnya.
CVn
Anda benar, untuk detail itu :)
Diego Woitasen
3

@dmourati dan @diegows sudah menjawab pertanyaan pertama Anda, jadi saya akan menangani pertanyaan kedua Anda. Dan pertanyaan bonus. Dan saya juga akan memberikan tip bonus;)

iptables -P hanya menerima rantai BUILT-IN. Dalam filtertabel, yang akan INPUT, OUTPUTdan FORWARDrantai.

Port forwarding tidak ditangani oleh INPUTrantai, jadi Anda tidak perlu membuka port di INPUTrantai. Ini tidak bisa ditangani oleh FORWARDrantai, meskipun. Berhati-hatilah.

Kiat bonus: Saat mempelajari dan / atau mengatasi masalah iptables, output iptables-savekepala & pundak lebih baik daripada output iptables -L -v --line-numbers. Cobalah, Anda akan terkejut :)

pepoluan
sumber
Memberi +1 untuk jawaban yang bagus, tapi saya sedikit terkejut dengan komentar terakhir Anda. Saya benci mendiagnosis iptablesmasalah dari -saveoutput; mengapa Anda menemukannya lebih baik daripada iptables -L -n -v [--line-numbers]?
MadHatter mendukung Monica
@ MadHatter contoh sederhana: Anda dapat dengan mudah melihat aturan dengan --dportopsi yang sebenarnya ada -p tcpdi depan. Anda juga dapat melihat bagaimana / kapan pemrosesan aturan melompat dari rantai bawaan (mis., INPUT) ke rantai kustom (mis., ACCEPT_TCP_UDP). Kedua informasi penting ini tidak terlihat di output iptables -L -n.
pepoluan
3
Manfaat lain: Saya bisa lakukan iptables-save > somefile, edit somefilemenggunakan vim, kemudian lakukan iptables-apply -t 600 somefileuntuk mengujinya. Jika saya secara tidak sengaja memblokir diri saya, setelah 600 detik aturan kembali.
pepoluan
Tip bonus sangat dihargai, dan sudah digunakan. Saya telah menggunakan iptables-saveuntuk membantu diri saya belajar dari dump konfigurasi mentah sebelum saya mengajukan pertanyaan ini. Saya tidak berharap FORWARDrantai itu berada di tempat saya perlu memperhatikan port forwarding. Saya harus membaca tentang itu.
Calyo Delphi
@ CalyoDelphi jika Anda melakukan pencarian untuk "diagram aliran paket netfilter", Anda akan melihat di mana setiap tabel & rantai berlaku ;-)
pepoluan