iptables forward port error - No chain/target/match by that name

58,086

Solution 1

Because PREROUTING chain belongs to the NAT table, not the FILTER table. If you do not mention any table explicitly by -t option, then FILTER is assumed.

So, you need to mention the table type with -t nat:

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

Note that, MANGLE and RAW tables also have PREROUTING chain but as you are redirecting ports only, you are presumably looking for the NAT table.

Solution 2

PREROUTING chain only available for nat, mangle and raw tables.
iptables assumes filter table, so you must specify one of these, eg. iptables -t nat ...

Solution 3

I get similar error when I run a docker command

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

I was able to fix it by reinstall docker-engine

apt-get remove docker-engine
apt-get install docker-engine
Share:
58,086

Related videos on Youtube

Roy Hinkley
Author by

Roy Hinkley

Updated on September 18, 2022

Comments

  • Roy Hinkley
    Roy Hinkley over 1 year

    I am trying to configure iptables on my Ubuntu 12.04 LTS server to forward port 443 to 8443.

    But when I run this command:

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

    I get the following error:

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

    My iptables current configuration:

    $ 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 
    

    What am I missing or doing wrong?

  • piepi
    piepi about 6 years
    It is still giving me the same error. Is this answer still valid?
  • heemayl
    heemayl about 6 years
    @piepi Yeah. Should be valid. Perhaps you should ask a new question with your problem in details.
  • WinEunuuchs2Unix
    WinEunuuchs2Unix almost 5 years
    Upvoting and perhaps you could answer this similar one: askubuntu.com/questions/1140644/…
  • Infinity
    Infinity almost 4 years
    It is still giving me error iptables -t nat -A PREROUTING -p tcp -m geoip --src-cc DE -j DNAT --to-destination 192.168.10.35:2222 iptables: No chain/target/match by that name.