Назад | Перейти на главную страницу

Ошибка iptables: неизвестный параметр --dport

Команда iptables больше не распознает один из наиболее часто используемых параметров при определении правил: --dport.

Я получаю такую ​​ошибку:

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

Приведенная выше команда добавления правила - это просто пример включения соединений Terraria.

Вот то, что у меня сейчас есть как конфигурация barebones iptables (listiptables псевдоним iptables -L -v --line-numbers), и очевидно, что --dport работал в прошлом:

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            

Я также пытаюсь определить настраиваемую цепочку (вдохновленную этот вопрос), чтобы принимать соединения tcp и udp, чтобы мне не приходилось определять два правила для всего, для чего я хочу включить tcp и udp (например, для сервера Minecraft или Terraria или для другой службы целиком). Но даже это не работает:

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

В вежливых выражениях это становится очень неприятным (количество ругательств, связанных с этим, заставило бы моряка посоветовать мне следить за своим ртом). Мой гугл-фу ужасен, поэтому я еще не нашел рабочего решения для этого. Я использую CentOS 6.5 на роутере. Любая помощь и советы, которые вы, ребята, можете предложить, были бы потрясающими.

РЕДАКТИРОВАТЬ:

Бонусный вопрос: я также планирую настроить переадресацию портов. Все еще необходимо устанавливать правила для приема входящих подключений через определенные порты?

Сначала дайте -p вариант как -p tcp или -p udp.

Примеры:

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

iptables -A INPUT -p udp --dport 53 --sport 1024: 65535 -j ПРИНЯТЬ

Вы также можете попробовать -p all но я никогда этого не делал и не нахожу слишком большой поддержки в примерах.

Протокол (-p) требуется, если вы используете --dport. Пример:

-p tcp

@dmourati и @diegows уже ответили на ваш первый вопрос, поэтому я отвечу на ваш второй вопрос. И бонусный вопрос. И еще добавлю бонусную подсказку;)

iptables -P только принимает ВСТРОЕННЫЕ цепи. в filter стол, это было бы INPUT, OUTPUT, и FORWARD цепи.

Переадресация портов не обрабатывается INPUT цепочке, поэтому вам не нужно открывать порт в INPUT цепь. Это делает заниматься FORWARD цепь, правда. Будьте осторожны с этим.

Бонусный совет: При обучении и / или устранении неполадок iptables, выход iptables-save на голову лучше, чем результат iptables -L -v --line-numbers. Попробуйте, вы будете приятно удивлены :)

Если iptables сообщить, что он использует nftables, нужно использовать iptables-legacy вместо.

Например:
Использовать iptables-legacy -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
Вместо того iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP


Это старый вопрос, но он первый в результатах поиска.