Команда 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.
Вот что у меня сейчас есть в качестве базовой конфигурации 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.
Это становится очень раздражающим, если говорить вежливо (количество ругательств, связанных с этим, заставило бы моряка сказать мне, чтобы я следил за своим языком). Мой Google-fu ужасен, поэтому я пока не нашел работающего решения для всего этого. Я использую CentOS 6.5 на маршрутизаторе. Любая помощь и указания, которые вы, ребята, можете предложить, были бы потрясающими.
РЕДАКТИРОВАТЬ:
Бонусный вопрос: Я также планирую настроить переадресацию портов. Нужно ли все еще устанавливать правила для приема входящих соединений через определенные порты?
решение1
Сначала укажите -p
вариант типа -p tcp
или -p udp
.
Примеры:
iptables -A ВХОД -p tcp --dport 22 -m состояние --state НОВЫЙ -j ОТБРОС
iptables -A ВХОД -p udp --dport 53 --sport 1024:65535 -j ПРИНЯТЬ
Вы также можете попробовать -p all
, но я никогда этого не делал и не вижу в примерах особого подтверждения этому.
решение2
Другое возможное решение — вы забываете запустить как root. Я только что столкнулся с этим, когда использовал руководство Debian
$ iptables -t nat -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
iptables v1.8.2 (nf_tables): unknown option "--dport"
$ sudo iptables -t nat -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
# OK
решение3
Протокол (-p) требуется, если вы используете --dport. Пример:
-p tcp
решение4
@dmourati и @diegows уже ответили на ваш первый вопрос, так что я займусь вашим вторым вопросом. И бонусным вопросом. И я также добавлю бонусный совет ;)
iptables -P
толькопринимает ВСТРОЕННЫЕ цепи. В filter
таблице это будут цепи INPUT
, OUTPUT
, и .FORWARD
Переадресация портов не обрабатывается цепочкой INPUT
, поэтому вам не нужно открывать порт вINPUT
цепочке. ЭтоделаетНо пусть тебя обслужит FORWARD
цепь. Будь осторожен с этим.
Бонусный совет:При обучении и/или устранении неполадок iptables
вывод на iptables-save
голову лучше, чем вывод iptables -L -v --line-numbers
. Попробуйте, вы будете приятно удивлены :)