Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a server bound to localhost:7060. It is using ipv6 socket instead of ipv4. Below is netstat outout.

# netstat -an
Proto Recv-Q Send-Q Local Address          Foreign Address        State
 tcp       0      0*              LISTEN
 tcp       0      0 *              LISTEN
 tcp       0      0 *              LISTEN
 tcp       0      0        ESTABLISHED
 tcp       0      0     ESTABLISHED
tcp6       0      0 :::5060                :::*                   LISTEN
tcp6       0      0 ::ffff:  :::*                   LISTEN
tcp6       0      0 :::23                  :::*                   LISTEN
tcp6       0      0 ::ffff: ::ffff: ESTABLISHED
tcp6       0      0 ::ffff: ::ffff:  ESTABLISHED
tcp6       0      0 ::ffff: ::ffff: ESTABLISHED
udp6       0      0 :::5060                :::*                   CLOSE

I want to setup a port forwarding rule that accepts connections on port 24 (on all interfaces loopback as well as eth0) and forward the data to localhost:7060.

This is how I am setting up the iptables rule:

iptables -t nat -A PREROUTING -p tcp --dport 24 -j DNAT --to**

It is not working. When I telnet from different box, I see the following

$telnet 24

If I change the server to bind to *:7060 and set the following rule, it seems to work fine.

iptables -t nat -A PREROUTING -p tcp --dport 24 -j REDIRECT --to-port 7060

But that will make my server available on WAN interface which I don't like.

I feel it had something to do with ipv6 socket (tcp6 line in netstat output). This whole thing is done on an Android device with custom built Android platform image.

How do I get this working?

share|improve this question
If your socket is IPv6, you need to do IPv6 filtering. Further, I am of the understanding that ip6tables does not yet support NAT for things like masquerading or port forwarding (your case). Try making the socket an IPv4 one instead and see if your rule works. – Garrett Nov 30 '11 at 17:05

I think you must use --sport 24 instead of --dport 24, because de traffic is incoming, not outgoing. Although, as Garret said, probably you must use ip6tables...

share|improve this answer
wrong, the incoming connection has the destination port 24 thus --dport should be used. Usually the source port(from the connecting client) is assigned randomly for every. – hultqvist Apr 12 '13 at 8:37

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.