Multiple IPV6 Tunnels

  • I have set up three IPV6 Tunnels one for each of my WAN interfaces with HE  Followed the pfsense guide.

    WAN one gateway comes up with no issues.  WAN1 and WAN2 gateways will not come online.  I have deleted my tunnels with tunnel broker a few times and tried to set them up again.  I have set up a bind server with IPv6 working on my pfsense 2.1 router.  I can do a nslookup on my all three of my tunnel IPv6 addresses on any client or on the router and it resolves them to my account.

    I do have ther fire wall rules set for each WAN interface to allow ICMP to the IP uses.
    I also set up dynamic DNS for and it does update my IP address for each WAN interface.

    The DHCPv6 server is handing out IPv6 address to all clients just fine.  I do have to manually set the IPv6 address for the gateway and DNS pointing them to my pfsense router.

    Another issue I have is the client manchines can ping the IPv6 gateway of Tunnel WAN but when I do the IPv6 test it says I don't have an IPv6 address.  So I can't load any IPv6 websites. So any ideas on how to resolve this issue too.

    I have done the the latest gitsync too.    Thanks for all your help!!!! – Test Summery:

    Your IPv4 address on the public Internet appears to be
    No IPv6 address detected [more info]
    The World IPv6 Launch day is June 6th, 2012. Good news! Your current browser, on this computer and at this location, are expected to keep working after the Launch. [more info]
    When a publisher offers both IPv4 and IPv6, your browser appears to be happy to take the IPv4 site without delay.
    Connections to IPv6-only sites are timing out. Any web site that is IPv6 only, will appear to be down to you.
    Your DNS server (possibly run by your ISP) appears to have IPv6 Internet access.

  • A may be able to respond correctly to part of your question.  Your pfSense box (router) should be configured to send router advertisements to the clients on the link.  This is how they get the router's link-local address and know to use DHCPv6 to get an address for themselves.  The addresses of DNS servers can be supplied with DHCPv6 or the RA.  The RA includes the non-link-local address of the router in a recursive DNS server option (it does for me anyway), but my clients seem to be ignoring it.  DNS is configurable through DHCPv6 in pfSense on the DHCPv6 Server page.  The configuration setting for RAs is at the top of the same page.  Incidentally, my pfSense box sends accurate router advertisements (including the mentioned DNS option) even when the RA is disabled–can someone explain this?  If you want your clients to use a non-link-local address of the router, you do have to manually configure them.

    Also, (and I apologize for hijacking this thread slightly) would you mind being explicit about how you configured Dynamic DNS for  I've been bashing my head against a wall for about a week now trying to get that to work.  Any help would be much appreciated.


  • I thought I had read in one of the IPv6 Forum threads where they have GATEWAY and DNS address being handed out from the DHCPv6 server disabled right now?  If that is not so what RA mode are you using?  I have Router Advertisements set to Assisted and also tried Managed setting.  I do have my DNS server IPv6 address listed in one of the two input fields.

    My client machines (Windows 7) are receiving an IPv6 address in the address range I set up on the DHCPv6 Server page but they are not getting the DNS or GATEWAY addresses handed to them I can see.  So I manually set them.  It looks like it is getting the link-local gatway address handed to it but it's not exact:

    Client states gateway: fe80::aac9:adff:XXXX:dfb%10
    Pfsese states:             fe80::aac9:adff:XXXX:dfb%bridge0

    Could this be the issue for clients not seeing IPv6 URLs?  I set up the DHCPv6 server on bridge interface becase that is where I have my DHCP server set too also.  Pfsense could not ping6 the %10 address but could the %bridge0 and the client could not ping the %bridge0 and could the %10 address.

    On the DHCPv6 Server page what do you put in the Prefix Delegation Range, if anything???

    What about on the System: General Setup page:
    Do you need to list the DNS Servers IPv6 address there too?  If so should you point it to one of the WAN IPv6 Tunnel Gateways?

    As for setting up the Dynamic DNS for Tunnel:

    Service type:    Tunnel Broker
    Interface to monitor:   WAN
    Hostname:                 Tunnel ID: 123456 which is the the six digit number found on your IPv6 Tunnel
                                  page at the top on
    Username:                 Username you log into with
    Password:                 Password you log into with
    Description:      WAN IP Update

    Those settings above I have setup for WAN, WAN1 and WAN2 since I have three tunnels set up.

    Still issues with WAN1 and WAN2 IPv6 Tunnel Gateways saying offline.  Thanks for your help.

  • You may be right about these the gateway and DNS options being nonfunctional.  I'm using a different machine as a DHCPv6 server; pfSense is firewall/router only.  To my knowledge DHCPv6 does not presently allow for providing the gateway address, so the field you mention must be an artifact.  I'm using 2.1 and I don't see a gateway field on the DHCPv6 Server page.

    Here is a Wireshark capture of a router advertisement being sent by my pfSense box:

    No.     Time        Source                Destination           Protocol Length Info
       110 51.158149   fe80::203:47ff:fe72:33fc ff02::1               ICMPv6   142    Router Advertisement from 00:03:47:72:33:fc

    Frame 110: 142 bytes on wire (1136 bits), 142 bytes captured (1136 bits)
    Ethernet II, Src: Intel_72:33:fc (00:03:47:72:33:fc), Dst: IPv6mcast_00:00:00:01 (33:33:00:00:00:01)
    Internet Protocol Version 6, Src: fe80::203:47ff:fe72:33fc (fe80::203:47ff:fe72:33fc), Dst: ff02::1 (ff02::1)
    Internet Control Message Protocol v6
       Type: Router Advertisement (134)
       Code: 0
       Checksum: 0x42d3 [correct]
       Cur hop limit: 64
       Flags: 0xc0
           1… .... = Managed address configuration: Set
           .1.. .... = Other configuration: Set
           ..0. .... = Home Agent: Not set
           ...0 0... = Prf (Default Router Preference): Medium (0)
           .... .0.. = Proxy: Not set
           .... ..0. = Reserved: 0
       Router lifetime (s): 3600
       Reachable time (ms): 0
       Retrans timer (ms): 0
       ICMPv6 Option (Source link-layer address : 00:03:47:72:33:fc)
           Type: Source link-layer address (1)
           Length: 1 (8 bytes)
           Link-layer address: Intel_72:33:fc (00:03:47:72:33:fc)
       ICMPv6 Option (MTU : 1280)
           Type: MTU (5)
           Length: 1 (8 bytes)
           MTU: 1280
       ICMPv6 Option (Prefix information : fd00:ac10::/120)
           Type: Prefix information (3)
           Length: 4 (32 bytes)
           Prefix Length: 120
           Flag: 0xc0
           Valid Lifetime: 360000
           Preferred Lifetime: 360000
           Prefix: fd00:ac10:: (fd00:ac10::)
       ICMPv6 Option (Recursive DNS Server fd00:ac10::66)
           Type: Recursive DNS Server (25)
           Length: 3 (24 bytes)
           Lifetime: 900
           Recursive DNS Servers: fd00:ac10::66 (fd00:ac10::66)

    As you can see, it provides the unique-local address of the router in the Recursive DNS Server option--which would work for you if you're running DNS Forwarding on the pfSense machine if the clients were using the option.  My clients appear to ignore it.  As I said, I have RAs disabled on all my LAN interfaces and pfSense is still happily sending RAs like the one shown.  I don't know what's going down there.  Notice also that the Managed and Other flags are set which means that clients that receive this advertisement will expect to get both their addresses and DNS server addresses through DHCPv6.

    I'm not sure why you're bridging or why you would need to.  The zone ID is going to vary from host to host I think, so I'd expect it to be different.  I just tried pinging the link-local address of pfSense without specifying the zone ID and it worked fine (I had to add a new firewall rule to allow it through, though, so don't forget that).

    Don't put anything in the prefix delegation fields unless you have another router downstream (which would indeed be a complex setup).

    The DNS Servers on the General Setup are used like forwarders.  If you have DNS Forwarding enabled and pfSense hasn't already cached the address, pfSense passes DNS requests it receives on to these servers.  Since you're using HE, put 2001:470:20::2 in one of these fields.  I don't know if the (# = 1-5) servers do recursion.  If not, they wouldn't be useful here.

    Hope this helps!  Thanks for the Dynamic DNS info.  I'm going to try that now.

  • Here is what the DHCPv6 Server page generates:


    option domain-name "localdomain";
    option ldap-server code 95 = text;
    option domain-search-list code 119 = text;

    default-lease-time 7200;
    max-lease-time 86400;
    log-facility local7;
    ddns-update-style none;
    one-lease-per-client true;
    deny duplicates;
    ping-check true;
    subnet6 2001:470:XXXX:2::/64 {
                   option 2001:470:XXXX:2::1;
           range6 2001:470:XXXX:2::1000 2001:470:XXXX:2::FFFF;
           # Not supported in IPv6; option dhcp6.routers 2001:470:XXXX:2::1;
           option domain-name "pfSense.localdomain";
           option domain-search-list "";
           option 2001:470:XXXX:2::1;

    As you can see the dhcp6.routers is commented out and see it does list DNS server IPv6 address (which I stated before I installed the package Bind97 and set it up on my pfSense router).

    Thanks for your help. So what would you suggest for settings then.

    Why I have a bridge0 set up is because I have a multiport LAN card and 2 USB wifi in the router.  I followed a guide on setting it up because I had issues with my cleints not seeing one another on the bridge.  I have another thread talking about the isses.  Maybe you can look at that thread and see what you think of my last UPDATE: post about issues with FTP. :),42811.msg237237.html#msg237237

    Thanks again…

  • I'm going to read your other thread before going any further to try to understand the bridge issue.  Each of my pfSense boxes has five interfaces in it so, naturally, having multiple interfaces doesn't by itself necessitate bridging.  So, I need to see why you're doing it to reply coherently.  In the meantime, have you captured any packets between the boxes to see exactly what pfSense is sending in its Router Advertisements, DHCPv6 Advertisements, and DHCPv6 Replies?

  • OK.  I see what you're doing now.  I'm not sure that bridging would interfere with your problems in this thread, so the only thing I would suggest is getting one working flawlessly before proceeding to the next.  That's one advantage to having more than one machine providing these services–much easier to troubleshoot.

    I thought you'd said you were running DNS on this box, but when I went back to make sure (albeit quickly), I couldn't find it.  At any rate, I guess you won't be needing DNS Forwarder, and I'm not sure what, if anything, Bind97 will do with the DNS Server fields in General Setup; I'm not familiar with Bind97 in particular.  It can't hurt to populate the fields though.  I've got mine set to 2001:470:20::2 and using the WAN_IPv6 gateway now, but it also worked before I selected a GW.  Since you've got more than one GW, pfSense may not default to this behavior, so it's probably best to use one of them.

    The dhcpdv6.conf looks right to me.  The next thing I would do is capture a DHCPv6 _Advertise_ment and see if it has the DNS server option included.  It wouldn't hurt to get a _Solicit_ation too and make sure the clients are requesting it.  Windows clients request DNS by default, but you never know.  If you're right about the DNS option being disabled in pfSense for now, the fact that pfSense is generating a correct config file doesn't necessarily equate to advertising it on the link.  The Request and Reply messages also contain the DNS Server option, if you want to check those too.  You should be able to see where this is breaking down.  Wireshark has been the quintessential troubleshooting tool for me.

  • Here's something else I'd try.  Run something like this on a Windows client and reply with your results:

    PS C:\Windows\system32> netsh interface ipv6 show int

    Idx    Met        MTU          State                Name
    –-  ----------  ----------  ------------  ---------------------------
      1          50  4294967295  connected    Loopback Pseudo-Interface 1
    16          10        1280  connected    Local Area Connection
    11          50        1280  disconnected  IP6Tunnel
    13          50        1280  disconnected
    18          10        1280  connected    Local Area Connection 2

    PS C:\Windows\system32> netsh interface ipv6 show int 18

    Interface Local Area Connection 2 Parameters

    IfLuid                            : ethernet_9
    IfIndex                            : 18
    State                              : connected
    Metric                            : 10
    Link MTU                          : 1280 bytes
    Reachable Time                    : 34500 ms
    Base Reachable Time                : 30000 ms
    Retransmission Interval            : 1000 ms
    DAD Transmits                      : 1
    Site Prefix Length                : 64
    Site Id                            : 1
    Forwarding                        : disabled
    Advertising                        : disabled
    Neighbor Discovery                : enabled
    Neighbor Unreachability Detection  : enabled
    Router Discovery                  : enabled
    Managed Address Configuration      : enabled
    Other Stateful Configuration      : enabled
    Weak Host Sends                    : disabled
    Weak Host Receives                : disabled
    Use Automatic Metric              : enabled
    Ignore Default Routes              : enabled
    Advertised Router Lifetime        : 1800 seconds
    Advertise Default Route            : disabled
    Current Hop Limit                  : 64
    Force ARPND Wake up patterns      : disabled
    Directed MAC Wake up patterns      : disabled

    PS C:\Windows\system32>

  • I am I am running BIND97 package Name Server/DNS.  So far it will resolve any IPv6 address and Name using nslookup.  Even the local IPv6 address: www6.pfsense.localdoamin or ipv6.pfsense.localdomain.  What I put in my zone records.

    C:\Windows\system32> netsh interface ipv6 show int

    Idx     Met         MTU          State                Name
    –-  ----------  ----------  ------------  ---------------------------
     1          50  4294967295  connected     Loopback Pseudo-Interface 1
    13          64        1500  connected     Wireless Network Connection
    14          50        1280  disconnected  isatap.local
    15           5        1500  disconnected  Wireless Network Connection 2
    12          50        1280  connected     Teredo Tunneling Pseudo-Interface
    17          50        1280  disconnected  isatap.{17833B82-C5E9-4494-B44F-48984733BA06}
    19          50        1280  disconnected  isatap.{063A2798-F022-487E-A745-DD0A1BDE0E62}

    C:\Windows\system32> netsh interface ipv6 show int 13

    Interface Wireless Network Connection Parameters

    IfLuid                             : wireless_0
    IfIndex                            : 13
    State                              : connected
    Metric                             : 64
    Link MTU                           : 1500 bytes
    Reachable Time                     : 20000 ms
    Base Reachable Time                : 30000 ms
    Retransmission Interval            : 1000 ms
    DAD Transmits                      : 1
    Site Prefix Length                 : 64
    Site Id                            : 1
    Forwarding                         : disabled
    Advertising                        : disabled
    Neighbor Discovery                 : enabled
    Neighbor Unreachability Detection  : enabled
    Router Discovery                   : enabled
    Managed Address Configuration      : enabled
    Other Stateful Configuration       : enabled
    Weak Host Sends                    : enabled
    Weak Host Receives                 : disabled
    Use Automatic Metric               : disabled
    Ignore Default Routes              : disabled
    Advertised Router Lifetime         : 1800 seconds
    Advertise Default Route            : disabled
    Current Hop Limit                  : 64
    Force ARPND Wake up patterns       : disabled
    Directed MAC Wake up patterns      : disabled

  • Wire Shark Capture:

    12 0.699003 fe80::aac9:adff:fe39:dfb ff02::1 ICMPv6 166 Router Advertisement from aa:c9:ad:39:0d:fb

    Frame 12: 166 bytes on wire (1328 bits), 166 bytes captured (1328 bits)
    Ethernet II, Src: aa:c9:ad:39:0d:fb (aa:c9:ad:39:0d:fb), Dst: IPv6mcast_00:00:00:01 (33:33:00:00:00:01)
    Internet Protocol Version 6, Src: fe80::aac9:adff:fe39:dfb (fe80::aac9:adff:fe39:dfb), Dst: ff02::1 (ff02::1)
    Internet Control Message Protocol v6
      Type: Router Advertisement (134)
      Code: 0
      Checksum: 0xec6d [correct]
      Cur hop limit: 64
      Flags: 0xc0
        1… .... = Managed address configuration: Set
        .1.. .... = Other configuration: Set
        ..0. .... = Home Agent: Not set
        ...0 0... = Prf (Default Router Preference): Medium (0)
        .... .0.. = Proxy: Not set
        .... ..0. = Reserved: 0
      Router lifetime (s): 1800
      Reachable time (ms): 0
      Retrans timer (ms): 0
      ICMPv6 Option (Source link-layer address : aa:c9:ad:39:0d:fb)
        Type: Source link-layer address (1)
        Length: 1 (8 bytes)
        Link-layer address: aa:c9:ad:39:0d:fb (aa:c9:ad:39:0d:fb)
      ICMPv6 Option (Prefix information : 2001:470:2d8f:2::/64)
        Type: Prefix information (3)
        Length: 4 (32 bytes)
        Prefix Length: 64
        Flag: 0xc0
          1... .... = On-link flag(L): Set
          .1.. .... = Autonomous address-configuration flag(A): Set
          ..0. .... = Router address flag(R): Not set
          ...0 0000 = Reserved: 0
        Valid Lifetime: 2592000
        Preferred Lifetime: 604800
        Prefix: 2001:470:2d8f:2:: (2001:470:2d8f:2::)
      ICMPv6 Option (Recursive DNS Server 2001:470:2d8f:2::1)
        Type: Recursive DNS Server (25)
        Length: 3 (24 bytes)
        Lifetime: 900
        Recursive DNS Servers: 2001:470:2d8f:2::1 (2001:470:2d8f:2::1)
      ICMPv6 Option (DNS Search List Option pfSense.localdomain)
        Type: DNS Search List Option (31)
        Length: 4 (32 bytes)
        Lifetime: 900
        Domain Names: pfSense.localdomain

  • These seem correct at first glance.  Have you captured any of the DHCPv6 messages?

  • What kind of messages do you want?  What are you wanting me to capture with WireShark?

    Thanks again…

  • Start with a DHCPv6 Solicit and its accompanying DHCPv6 Advertisement.  That's probably enough to see what's happening (or not).

  • On a Windows client type ipconfig /release6 in a Powershell (or command prompt) window.  The start Wireshark capturing on an interface that will request an IPv6 address from pfSense.  Return to Powershell and type ipconfig /renew6.  Stop capture and examine the DHCPv6 messages between machines.  Post here if you like or send me the capture file.

  • Are you positive that the client is getting the IPv6 address from the server?  The client you ran ipconfig on should have an address ending in :ebcf provided you haven't released it since running Wireshark.  Here is what I'm not seeing: DHCPv6 Request and DHCPv6 Reply.  The fact that an Advertise message appears in response to each Solicit proves that your server is hearing your client.  The client is then supposed to respond to the Advertise with a Request and, finally, the server answers with a Reply.  The absence of the Request indicates to me that your client isn't responding (or responding properly) to the server.  But if the client is getting an IPv6 address from the server, then we have a more complicated scenario because it's responding to the Advertise only in part.  I'll have to do some digging to see at what point in the message/response sequence the client commits to the address.  There is enough information in the Advertise for the client to extract the offered address, but there is also enough for it to get the DNS server address, so why one and not the other?  No matter what, though, the client should be sending a Request and it isn't.

  • This is happening to all clients on the network even on LAN.  The Wireshark output I sent you was on WLAN.

    Thanks again for looking at the Wireshark data.

    -Joe Cowboy

  • Get the client in an identical state to what it was in immediately after the Wireshark capture you sent me (the corrected one).  Then run ipconfig /all and netsh interface ipv6 show int where <int#>is the interface that just obtained the IPv6 address from pfSense.  You can post the results here, obfuscate addresses if desired, or e-mail them to me.  The second Wireshark capture looks like this should be working.</int#>

  • Thank you for all your extensive help mdpugh.  Figured out the major foobar from you help….  I had for the interface Bridge the wrong IPv6 address: I didn't have the proper Routed IPv6 Prefixes range of address.  So that issue is fixed now. I can get to IPv6 websites now.  So the DHCPv6 now hands out the correct Routed IPv6 Prefixes range and also the DNS server IPv6 address but still not the GATWAY IPv6 address.  That is still a work on progress from the pfSense team getting that to work.

    However the other issue is still happening with the other two tunnels I have set up.  The Gateways still show Offline.

    -Joe Cowboy

  • As I understand it, the current specification dictates that the router hand out only its link-local address in the RA (not counting a link-local CARP address, I suppose  ;D) and that DHCPv6 not distribute any gateway address.  I don't know if providing additional functionality violates the specification per se, but the spec doesn't call for it, and it shouldn't be counted upon.  Is that correct?  Or would it be outright nonconformance?

  • Has anybody tried setting up two or more tunnels on their pfSense router with multiple WAN interfaces?  Where each WAN has it's own tunnel?  If so does your TUNNNEL GATEWAY that is not associated with the main WAN interface show Oneline.  Why I say that WAN1 and WAN2 Tunnels show offline.  I have deleted the tunnels multiple times and recreating them.

    Another thought if you group them aka loadbalance these tunnels would you have to manually add  a IPv6 address to the interface the DHCPv6 server sits on "Routed /64" subnet from tunnel.  Then also statically add an IPv6  address on your client machines from each of the "Routed /64" subnet tunnels?

    Thanks for your help.

  • What are your pfSense configurations for all three tunnel interfaces?  Show IPv6 address, IPv6 gateway, IPv4 endpoints, etc.

  • Me too. I have setup Second ipv6 tunnel via Second WAN, but it is show offline.  :(

  • I find once creat second ipv6 tunnel in interface,then all ipv6 tunnel link will offline.

  • Rebel Alliance Developer Netgate

    I've got two tunnels, one on each WAN. Both are online, and thanks to NPt and some gateway groups, I have working IPv6 multi-wan. Not sure why others might be having issues, but the same things apply as usual.

    1. Make sure you have a distinct tunnel endpoint for each tunnel. For example, one to Chicago, one to Dallas, one to NY, etc. Don't use the same endpoint for more than one.
    2. Make sure all your WANs allow ICMP from the endpoints
    3. Perhaps add a static route to the remote endpoint node to make sure they use the proper WAN

  • @jimp:

    I've got two tunnels, one on each WAN. Both are online, and thanks to NPt and some gateway groups, I have working IPv6 multi-wan. Not sure why others might be having issues, but the same things apply as usual.

    1. Make sure you have a distinct tunnel endpoint for each tunnel. For example, one to Chicago, one to Dallas, one to NY, etc. Don't use the same endpoint for more than one.
    2. Make sure all your WANs allow ICMP from the endpoints
    3. Perhaps add a static route to the remote endpoint node to make sure they use the proper WAN

    I have check its like you said.

    1. I am sure. and success creat tunnel in

    2. I think should had do allow ICMP from the endpoints. because endpoint has update.

    3. whats add route ?

  • Rebel Alliance Developer Netgate

    System > Routing, Routes tab. Add a route for the endpoint IP, pick the WAN you have it attached to, save/apply, repeat for the other endpoints.

  • @jimp:

    System > Routing, Routes tab. Add a route for the endpoint IP, pick the WAN you have it attached to, save/apply, repeat for the other endpoints.

    thank you jimp .  :-*  now it seem is online.

    it is should write in your wiki doc. I have no find about this.

    then How I do will second ipv6 subnet address add in LAN?  LAN only can an ipv6 address ?

  • Rebel Alliance Developer Netgate

    You don't use both at once on LAN. You just use one on LAN and setup NPt (sort of like 1:1 NAT) for the WAN routed /64's.

    See my other doc here:

  • @jimp:

    You don't use both at once on LAN. You just use one on LAN and setup NPt (sort of like 1:1 NAT) for the WAN routed /64's.

    See my other doc here:

    OK.  I have done. How I know Whether this success ?

  • Rebel Alliance Developer Netgate

    Just an FYI- databeestje committed some code to automatically add static routes for the gif tunnel endpoints so this should be much easier now.

    And there have been other routing/gateway improvements as well that will make things work smoother.

    Recently I had an outage that let me test mine more thoroughly from home and it worked rather well. When my primary WAN+Tunnel were down, I was able to get out over my secondary WAN+Tunnel and when I checked, it was using the prefix I specified in NPt. I'd call it a success.

  • Still need to shore up the input validation on the NPt page, maybe reword some of the text.

    It also needs a single prefix size drop down. The filter rules don't allow specifying differing sizes which causes filter rules.

    Should be easy, but lacking a dual wan to test. I need to investigate what the cheapest DSL I can get is.

  • now I have setup Multi-ipv6 tunnels in adsl.  using config the Static Routes and NTP show all ipv6 tunnels online.

    but only out visit work, the second ipv6 can't visit from internet. I want to setup multi-ipv6 network, when one ipv6 slow then change use the second ipv6 for my web server etc.

    I think should allow setup multi ipv6 network address for the same LAN?

    I can offer login my router account. if your need it.

Log in to reply