Помилка iptables forward port - жодна ланцюг / ціль / збіг за цим ім'ям


11

Я намагаюся налаштувати iptables на своєму сервері Ubuntu 12.04 LTS для переадресації портів 443 на 8443.

Але коли я запускаю цю команду:

sudo iptables -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443

Я отримую таку помилку:

iptables: No chain/target/match by that name.

Поточна конфігурація iptables:

$ sudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
DROP       tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

Що я пропускаю чи роблю неправильно?

Відповіді:


18

Тому що PREROUTINGланцюг належить до NATстолу, а не до FILTERстолу. Якщо ви не згадуєте явно будь-яку таблицю за -tопцією, тоді FILTERпередбачається.

Отже, вам потрібно згадати тип таблиці з -t nat:

sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443

Зауважте, що MANGLEі RAWтаблиці також мають PREROUTINGланцюжок, але оскільки ви перенаправляєте лише порти, ви, ймовірно, шукаєте NATтаблицю.


Це все ще дає мені ту саму помилку. Чи справді ця відповідь справедлива?
пієпі

@piepi Так. Має бути дійсним. Можливо, вам слід детально задати нове питання зі своєю проблемою.
heemayl

Оголошення та, можливо, ви могли б відповісти на подібне: askubuntu.com/questions/1140644/…
WinEunuuchs2Unix

3

Ланцюжок ПЕРЕВОДУВАННЯ доступний лише для столів Nat, Mangle та raw.
iptables передбачає таблицю фільтрів, тому ви повинні вказати одну з них, наприклад.iptables -t nat ...


3

Я отримую подібну помилку, коли запускаю команду docker

docker run -d -p 8084:8080 knockdata/zeppelin-highcharts


d9c5d34f500d621585470b0e70b915395fcb6b3437859e0f610dbb58d51faf25
docker: Error response from daemon: driver failed programming external connectivity on endpoint elegant_jang  
(7ca0f5ad689f5443ce7533f66b4a86c34d2dbd9d076bac4812288dd3f6a76698):  
iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8084 -j DNAT --to-destination 172.17.0.2:8080 
! -i docker0: iptables: No chain/target/match by that name.
(exit status 1).

Мені вдалося виправити це за допомогою перевстановлення докер-двигуна

apt-get remove docker-engine
apt-get install docker-engine

0

Ви можете встановити (Налаштувати безпеку сервера та брандмауер) та скористатися такими налаштуваннями.

nano /etc/csf/csf.conf
SYNFLOOD = "" => SYNFLOOD = "1"
CONNLIMIT = "" => CONNLIMIT = "80;75,443;75,21;50”
PORTFLOOD = "" => PORTFLOOD = "80;tcp;5;250"
SYSLOG = “0” => SYSLOG = "1"
DOCKER = “0” => DOCKER = "1"

nano /etc/csf/csfpost.sh

#!/bin/sh

echo "[DOCKER] Setting up FW rules."

iptables -N DOCKER

iptables -t nat -N DOCKER

iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER

iptables -t nat -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER

# Masquerade outbound connections from containers
iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE

# Accept established connections to the docker containers
iptables -t filter -N DOCKER
iptables -t filter -A FORWARD -o docker0 -j DOCKER
iptables -t filter -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j 
ACCEPT

# Allow docker containers to communicate with themselves & outside world
iptables -t filter -A FORWARD -i docker0 ! -o docker0 -j ACCEPT
iptables -t filter -A FORWARD -i docker0 -o docker0 -j ACCEPT

echo "[DOCKER] Done."

Примітка. Цей конфігурація також запобігає базовій атаці DDOS.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.