iptables forward port error - Tidak ada rantai / target / cocok dengan nama itu


11

Saya mencoba mengkonfigurasi iptables di server Ubuntu 12.04 LTS saya untuk meneruskan port 443 ke 8443.

Tetapi ketika saya menjalankan perintah ini:

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

Saya mendapatkan kesalahan berikut:

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

Konfigurasi iptables saya saat ini:

$ 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 

Apa yang saya lewatkan atau lakukan salah?

Jawaban:


18

Karena PREROUTINGrantai milik NATmeja, bukan FILTERmeja. Jika Anda tidak menyebutkan tabel apa pun secara eksplisit berdasarkan -topsi, maka FILTERdiasumsikan.

Jadi, Anda perlu menyebutkan jenis tabel dengan -t nat:

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

Perhatikan bahwa, MANGLEdan RAWtabel juga memiliki PREROUTINGrantai tetapi karena Anda hanya mengarahkan port saja, Anda mungkin mencari NATtabel tersebut.


Itu masih memberi saya kesalahan yang sama. Apakah jawaban ini masih valid?
piepi

@piepi Ya. Harus valid. Mungkin Anda harus mengajukan pertanyaan baru dengan masalah Anda secara detail.
heemayl

Mencemaskan dan mungkin Anda bisa menjawab yang serupa ini: askubuntu.com/questions/1140644/…
WinEunuuchs2Unix

3

PREROUTING chain hanya tersedia untuk tabel nat, mangle dan raw.
iptables mengasumsikan tabel filter, jadi Anda harus menentukan salah satunya, misalnya.iptables -t nat ...


3

Saya mendapatkan kesalahan serupa ketika saya menjalankan perintah buruh pelabuhan

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

Saya dapat memperbaikinya dengan menginstal ulang mesin docker

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

0

Anda dapat menginstal (Config Server Security & Firewall) dan menggunakan pengaturan berikut.

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

Catatan: Konfigurasi ini juga mencegah Anda dari serangan DDOS dasar.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.