iptables hatası: bilinmeyen seçenek --dport


19

Komut artık iptables en sık kullanılan seçeneklerden biri kurallarını tanımlayan tanır: --dport.

Bu hatayı alıyorum:

[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.

Yukarıdaki kural ekle komutu, Terraria bağlantılarını etkinleştirme örneğidir.

Şu anda bir barebones iptables yapılandırması olarak ne var ( listiptablestakma addır iptables -L -v --line-numbers), ve --dportgeçmişte çalıştı açıktır :

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            

Ayrıca tcp ve udp için etkinleştirmek istediğim her şey için iki kural tanımlamak zorunda kalmamak için ( bu sorudan esinlenerek) özel bir zincir tanımlamaya çalışıyorum (örneğin bir Minecraft veya Terraria sunucusu veya tamamen başka bir hizmet). Ama bu bile işe yaramıyor:

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

Bu kibarca çok sinir bozucu oluyor (bununla ilgili küfretme miktarı bir denizcinin ağzıma bakmamı söyler). Google-fu'm korkunç, bu yüzden henüz bunlardan herhangi biri için çalışan bir çözüm bulamadım. Yönelticide CentOS 6.5 kullanıyorum. Size sunabileceğiniz herhangi bir yardım ve işaretçiler harika olurdu.

DÜZENLE:

Bonus soru: Bağlantı noktası yönlendirmeyi de yapılandırmayı planlıyorum. Belirli bağlantı noktaları üzerinden gelen bağlantıları kabul etmek için kurallar ayarlamak hala gerekli mi?

Yanıtlar:


27

Önce veya -pgibi bir seçenek verin . -p tcp-p udp

Örnekler:

iptables -A INPUT -p tcp --port 22 -m durum - durum YENİ -j DAMLA

iptables -A GİRİŞ -p udp --port 53 - spor 1024: 65535 -j KABUL

Ayrıca deneyebilirsiniz -p allama bunu hiç yapmadım ve örneklerde çok fazla destek bulamadım.


1
Sadece bunu denedim -p allve aynı hatayı aldım. unknown option --dport. Bu işe yaradı -p tcpama bu aynı durumda bana gerçekten yardımcı olmayacak çünkü her şey için ayrı tcp / udp kurallarını tanımlamak.
Calyo Delphi

Benim tecrübelerime dayanarak, allhiç bir bağlantı noktası belirlemekle çalıştı. Ancak, farklı protokoller için birden çok kural yerine, kuralları farklı bir yönde düşünebilirsiniz. Protokole dayalı kurallar oluşturun ve ardından multiportsbazı kuralları birlikte gruplandırmak için bu seçeneği kullanın.
canadmos

Terraria ve Minecraft bağlantılarını etkinleştirmek istersem 7777 ve 25565'i açmak ve her bağlantı noktası çifti için bir TCP ve UDP kuralı oluşturmak için çoklu bağlantıları kullanabilir miyim?
Calyo Delphi

3
-P seçeneği, bağlantı noktası kavramına sahip tek bir protokol olmalıdır ( -p ICMP --dport whateverbariz nedenlerle de işe yaramaz).
Falcon Momot

9

--Dport kullanırsanız protokol (-p) gereklidir. Misal:

-p tcp

Ayrıca, @FalconMomot'un daha önce bir yorumda işaret ettiği gibi bağlantı noktaları kavramına sahip bir protokol belirtmesi gerekir.
CVn

Bu ayrıntı için haklısın :)
Diego Woitasen

3

@dmourati ve @diegows zaten ilk sorunuzu yanıtladı, bu yüzden ikinci sorunuzu ele alacağım. Ve bonus soru. Ve ayrıca bir bonus ipucu atarım;)

iptables -P sadece BUILT-IN zincirlerini kabul eder. Gelen filtertabloda, olurdu INPUT, OUTPUTve FORWARDzincirler.

Bağlantı INPUTnoktası iletme zinciri tarafından ele alınmaz , bu nedenle bağlantı noktasını INPUTzincirde açmanız gerekmez . Bu vermez tarafından ele almak FORWARDolsa da, zincirin. Buna dikkat et.

Bonus ipucu: Öğrenirken ve / veya sorun giderirken iptables, çıktıları iptables-savekafa ve omuzların çıktısından daha iyidir iptables -L -v --line-numbers. Deneyin, hoş bir sürpriz olacak :)


İyi bir cevap için +1, ancak son yorumunuz için biraz şaşırdım. Ben nefret teşhis iptablesgelen sorunlar -saveçıktı; neden daha iyi buluyorsun iptables -L -n -v [--line-numbers]?
MadHatter,

@MadHatter basit örnek: Bu kuralların --dportaslında -p tcpönündeki seçeneklerle kolayca görebilirsiniz . Kural işlemenin yerleşik bir zincirden (ör. INPUT) özel bir zincire (ör. ACCEPT_TCP_UDP) nasıl / ne zaman atladığını da görebilirsiniz. Bu iki önemli bilgilerdir değil çıkışında görünür iptables -L -n.
pepoluan

3
Başka bir avantajı: Yapabilirim iptables-save > somefile, somefilevim kullanarak düzenleyebilir , sonra iptables-apply -t 600 somefiletest etmek için yapabilirim. Yanlışlıkla kendimi engellersem, 600 saniye sonra kurallar geri döner.
pepoluan

Bonus ipucu çok takdir ediliyor ve zaten kullanılıyor. Ben kullanarak olmuştu iptables-saveben bu soruyu sordum önce kendimi çiğ yapılandırma dökümü öğrenmesine yardımcı olmak için. Bununla birlikte, FORWARDzincirin liman sevkiyatı için dikkat etmem gereken yerde olmasını beklemiyordum . Bunu okumam gerekecek.
Calyo Delphi

@CalyoDelphi "netfilter paket akış diyagramı" için bir arama yaparsanız, her tablonun ve zincirin nerede uygulandığını
göreceksiniz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.