Running WrapSix on a router

← Back

WrapSix on a Debian/Ubuntu router

Written by: DDRRE (Snir Hassidim), 2014

Example environment configuration:

        br0 (, fd10:ffff::1/16) is an internal bridge interface that holds all internal LAN ports.
        eth0 (, 2ab0:15bc:32af:0020:a752:a467::63/96) is the external interface. is the NAT64 external address.
        2ab0:15bc:32af:0020:6464:6464::/96 is the pre-allocated DNS64 prefix.

1. To configure WrapSix on an Ubuntu router, edit wrapper.c in the WrapSix "src" directory, and fill in the values for INTERFACE, PREFIX, IPV4_ADDR, HOST_IPV6_ADDR and HOST_IPV4_ADDR.

        INTERFACE: Set your internal interface here. Example: "br0"
        PREFIX: Set your DNS64 prefix here. Example: "2ab0:15bc:32af:0020:6464:6464::"
        IPV4_ADDR: Set the IPv4 address to be used for NAT64 external packets. Example: ""
        If you only have one external IP, you can try setting a private IP from your internal subnet (not fully tested).
        HOST_IPV6_ADDR: Type your router's external IPv6 address. Example: "2ab0:15bc:32af:0020:a752:a467::63"
        HOST_IPV4_ADDR: Type your router's external IPv4 address. Example: ""

        Note: DO NOT create an interface that uses the NAT64 address from IPV4_ADDR.

2. Compile and install wrapsix (make && make install).
3. Add it to your local startup scripts.
4. If you used a public IPv4 address in IPV4_ADDR, skip this step.
        Create a NAT rule for WrapSix (add it before other rules):
        iptables -t nat -I POSTROUTING 1 -s <IPv4_ADDR goes here> -j SNAT --to <IPV4_ADDR goes here>
5. Done!

Notes by xHire

This is a very userful howto, thank you DDRRE! Ad private (NATted) IPv4: it's possible to use it, there shouldn't be any problem with it (I tested it, although not on a router).

Last updated: 2023-03-13