NAT GRE (IP protocol 47) over Linux router
You forgot the -t nat
table switch in the PREROUTING/POSTROUTING instructions. Just add it at the front.
Late answer, but I came across the same need and the two following commands do the trick:
# iptables -t nat -A PREROUTING -i eth0 -p gre -j DNAT --to-destination 192.168.0.1
# modprobe nf_conntrack_proto_gre
No need for specifying real IP, simply PREROUTE
the gre
traffic to the private server and let the gre
connection tracker do its job.