Błąd iptables: nieznana opcja --dport

19

Komenda nie iptables rozpoznaje jeden z najczęściej używanych opcji przy określaniu zasad: --dport.

Otrzymuję ten błąd:

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

Komenda dodania reguły powyżej jest tylko przykładem włączenia połączeń Terraria.

Oto, co obecnie mam jako konfigurację iptables od podstaw ( listiptablesalias do iptables -L -v --line-numbers), i to oczywiste, że --dportdziałało w przeszłości:

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            

Próbuję również zdefiniować niestandardowy łańcuch (zainspirowany tym pytaniem ), aby akceptować połączenia TCP i Udp, aby nie musiałem definiować dwóch reguł dla wszystkiego, dla którego chcę włączyć TCP i UdP (np. Minecraft lub Serwer Terraria lub inna usługa całkowicie). Ale nawet to nie działa:

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

To staje się bardzo frustrujące, w uprzejmy sposób (ilość przekleństw związanych z tym sprawiłaby, że żeglarz kazałby mi oglądać moje usta). Moje Google-fu jest okropne, więc jeszcze nie znalazłem działającego rozwiązania. Korzystam z CentOS 6.5 na routerze. Każda pomoc i wskazówki, które możecie zaoferować, byłyby niesamowite.

EDYTOWAĆ:

Dodatkowe pytanie: planuję również skonfigurować przekierowanie portów. Czy nadal konieczne jest ustawienie reguł, aby akceptować połączenia przychodzące przez określone porty?

Calyo Delphi
źródło

Odpowiedzi:

27

Najpierw podaj -popcję -p tcplub -p udp.

Przykłady:

iptables -A WEJŚCIE -p tcp - port 22 -m stan - stan NOWY -j DROP

iptables -A WEJŚCIE -p udp --port 53 --sport 1024: 65535 -j AKCEPTUJ

Możesz także spróbować, -p allale nigdy tego nie zrobiłem i nie znajduję za dużo wsparcia w przykładach.

dmourati
źródło
1
Właśnie próbowałem tego -p alli dostałem dokładnie ten sam błąd. unknown option --dport. To działało, -p tcpale tak naprawdę nie pomoże mi w tym przypadku, ponieważ po prostu prowadzi do tego samego problemu: zdefiniowania indywidualnych reguł tcp / udp dla wszystkiego.
Calyo Delphi,
Z mojego doświadczenia wynika, że ​​używanie allnigdy nie działało przy określaniu portu. Jednak zamiast mieć wiele reguł dla różnych protokołów, możesz pomyśleć o regułach w innym kierunku. Utwórz reguły na podstawie protokołu, a następnie użyj multiportsopcji, aby zgrupować niektóre reguły razem.
canadmos,
Więc jeśli chcę włączyć połączenia Terraria i Minecraft, mogę użyć wielu portów, aby otworzyć 7777 i 25565, i utworzyć regułę TCP i UDP dla każdej pary portów?
Calyo Delphi,
3
Opcja -p musi być pojedynczym protokołem, który ma koncepcję portów ( -p ICMP --dport whateverz oczywistych powodów też nie działałby).
Falcon Momot,
9

Protokół (-p) jest wymagany, jeśli używasz --dport. Przykład:

-p tcp
Diego Woitasen
źródło
Dodatkowo musi określać protokół, który ma pojęcie portów, jak @FalconMomot wskazał w komentarzu wcześniej.
CVn
Masz rację, jeśli chodzi o ten szczegół :)
Diego Woitasen
3

@dmourati i @diegows już odpowiedziały na twoje pierwsze pytanie, więc odpowiem na twoje drugie pytanie. I dodatkowe pytanie. I wrzucę też bonusową wskazówkę;)

iptables -P akceptuje tylko łańcuchy BUILT-IN. W filtertabeli, która byłaby INPUT, OUTPUTi FORWARDłańcuchy.

Przekierowywanie portów nie jest obsługiwane przez INPUTłańcuch, więc nie musisz otwierać portu w INPUTłańcuchu. To ma uzyskać obsługiwane przez FORWARDłańcuch, choć. Uważaj na to.

Dodatkowa wskazówka: Podczas uczenia się i / lub rozwiązywania problemów iptables, wydajność iptables-savegłowic i ramion jest lepsza niż wydajność iptables -L -v --line-numbers. Spróbuj, a będziesz mile zaskoczony :)

pepoluan
źródło
+1 za dobrą odpowiedź, ale jestem nieco zaskoczony twoim ostatnim komentarzem. Ja nienawidzę diagnozowania iptablesproblemów z -savewyjściem; dlaczego uważasz to za lepsze niż iptables -L -n -v [--line-numbers]?
MadHatter obsługuje Monikę
@MadHatter prosty przykład: Możesz łatwo zobaczyć, że reguły z --dportopcjami faktycznie mają -p tcpprzed sobą. Możesz także zobaczyć, jak / kiedy przetwarzanie reguł przeskakuje z wbudowanego łańcucha (np. INPUT) do łańcucha niestandardowego (np. ACCEPT_TCP_UDP). Te dwie ważne informacje nie są widoczne w wynikach iptables -L -n.
pepoluan
3
Kolejna korzyść: mogę zrobić iptables-save > somefile, edytować somefileprzy użyciu vima, a następnie zrobić to, iptables-apply -t 600 somefileaby go przetestować. Jeśli niechcący się zablokuję, po 600 sekundach zasady zostaną przywrócone.
pepoluan
Dodatkowa wskazówka jest bardzo ceniona i jest już używana. Użyłem, iptables-saveaby pomóc sobie w nauce z surowego zrzutu konfiguracji, zanim zadałem to pytanie. Jednak nie spodziewałem się, że FORWARDłańcuch będzie tam, gdzie muszę zwracać uwagę na przekierowanie portów. Będę musiał o tym przeczytać.
Calyo Delphi
@ CalyoDelphi, jeśli wyszukujesz „diagram przepływu pakietów netfilter”, zobaczysz, gdzie ma zastosowanie każdy stół i łańcuch ;-)
pepoluan