O2 (Movistar) Spain + IPv6 WAN

Hi everyone,

According to my internet provider (O2 Spain) I've IPv6 enabled on my WAN (I'm seriously doubting about it!!!).
The point is I'm trying to config IPv6 WAN and I can't make it work, and don't know if O2/Movistar is pulling my leg or I'm doing something wrong.

Anyone is working with Movistar/O2 Spain with IPv6? Just to compare config's.

In fact, I don't need IPv6...it's just for testing it.

Thanks,

I share my config files:

root@ER605v2:/etc/config# cat network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd7f:7cbf:181c::/48'
        option packet_steering '2'
        option steering_flows '128'

config device
        option name 'br-lan'
        option type 'bridge'
        option ipv6 '0'
        list ports 'lan2'
        list ports 'lan3'
        list ports 'lan4'

config bridge-vlan
        option device 'br-lan'
        option vlan '10'
        list ports 'lan2:t'
        list ports 'lan4:u*'

config device
        option name 'lan2'
        option macaddr 'XX:XX:XX:XX:XX'

config device
        option name 'lan3'
        option macaddr 'XX:XX:XX:XX:XX'

config device
        option name 'lan4'
        option macaddr 'XX:XX:XX:XX:XX'

config device
        option name 'lan5'
        option macaddr 'XX:XX:XX:XX:XX'

config interface 'lan'
        option device 'br-lan.1'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option delegate '0'

config interface 'iots'
        option device 'br-lan.10'
        option proto 'static'
        option ipaddr '192.168.10.1'
        option netmask '255.255.255.0'
        option delegate '0'

config device
        option name 'wan1'
        option macaddr XX:XX:XX:XX:XX'

config device
        option ifname 'wan1'
        option vid '6'
        option name 'wan1.6'
        option ipv6 '1'

config interface 'WAN_IPV4'
        option proto 'pppoe'
        option device 'wan1.6'
        option username 'adslppp@*******'
        option password 'ad*******'
        option ipv6 '0'
        option mtu '1492'
        option delegate '0'
        option ip4table 'default'
        option ip6table 'default'
        option sourcefilter '0'

config device
        option name 'br-lan.10'
        option ifname 'br-lan'
        option vid '10'
        option ipv6 '1'

config bridge-vlan
        option device 'br-lan'
        option vlan '1'
        list ports 'lan2:t*'
        list ports 'lan3:u*'

config device
        option name 'br-lan.1'
        option ifname 'br-lan'
        option vid '1'
        option ipv6 '1'

config device
        option name 'pppoe-WAN_IPV4'

config interface 'WAN_IPV6'
        option proto 'dhcpv6'
        option device 'pppoe-WAN_IPV4'
        option reqaddress 'try'
        option reqprefix 'auto'
        option norelease '1'

root@ER605v2:/etc/config# cat firewall

config defaults
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option synflood_protect '1'
        option flow_offloading '1'
        option flow_offloading_hw '1'

config zone 'lan'
        option name 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list device 'tun+'
        list network 'lan'

config zone
        option name 'iots'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'iots'

config zone 'wan'
        option name 'wan'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'
        list network 'WAN_IPV4'
        list network 'WAN_IPV6'

config forwarding
        option src 'lan'
        option dest 'wan'

config forwarding
        option src 'iots'
        option dest 'wan'

config rule
        option name 'Allow-DHCP-Renew'
        option src 'wan'
        option proto 'udp'
        option dest_port '68'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option name 'Allow-Ping'
        option src 'wan'
        option proto 'icmp'
        option icmp_type 'echo-request'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-IGMP'
        option src 'wan'
        option proto 'igmp'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option target 'ACCEPT'
        option src 'wan'
        option proto 'udp'
        option dest_port '547'
        option name 'Allow DHCPv6 (546-to-547)'
        option family 'ipv6'
        option src_port '546'

config rule
        option target 'ACCEPT'
        option src 'wan'
        option proto 'udp'
        option dest_port '546'
        option name 'Allow DHCPv6 (547-to-546)'
        option family 'ipv6'
        option src_port '547'

config rule
        option name 'Allow-MLD'
        option src 'wan'
        option proto 'icmp'
        option src_ip 'fe80::/10'
        list icmp_type '130/0'
        list icmp_type '131/0'
        list icmp_type '132/0'
        list icmp_type '143/0'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Input'
        option src 'wan'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        list icmp_type 'router-solicitation'
        list icmp_type 'neighbour-solicitation'
        list icmp_type 'router-advertisement'
        list icmp_type 'neighbour-advertisement'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Forward'
        option src 'wan'
        option dest '*'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule 'ovpn'
        option name 'Allow-OpenVPN'
        option src 'wan'
        option dest_port '1194'
        option proto 'udp'
        option target 'ACCEPT'

config include 'bcp38'
        option type 'script'
        option path '/usr/lib/bcp38/run.sh'

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button:
grafik
Remember to redact passwords, VPN keys, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/dhcp

Here comes

root@ER605v2:~# ubus call system board
{
        "kernel": "6.6.104",
        "hostname": "ER605v2",
        "system": "MediaTek MT7621 ver:1 eco:3",
        "model": "TP-Link ER605 v2",
        "board_name": "tplink,er605-v2",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.3",
                "revision": "r28872-daca7c049b",
                "target": "ramips/mt7621",
                "description": "OpenWrt 24.10.3 r28872-daca7c049b",
                "builddate": "1758316778"
        }
}

root@ER605v2:~# cat /etc/config/dhcp

config dnsmasq
        option domainneeded '1'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan/'
        option domain 'lan'
        option expandhosts '1'
        option cachesize '1000'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option localservice '1'
        option ednspacket_max '1232'
        option noresolv '1'
        list server '127.0.0.1#5453'
        list server '0::1#5453'
        option localuse '0'
        list interface 'iots'
        list interface 'lan'

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv4 'server'

config odhcpd 'odhcpd'
        option maindhcp '0'
        option leasefile '/tmp/hosts/odhcpd'
        option leasetrigger '/usr/sbin/odhcpd-update'
        option loglevel '4'


root@ER605v2:~#

Error Log:

Fri Sep 26 15:58:04 2025 daemon.err odhcp6c[14447]: Failed to send RS (Network unreachable)
Fri Sep 26 15:58:06 2025 daemon.notice netifd: Interface 'WAN_IPV6' is now down
Fri Sep 26 15:58:06 2025 daemon.notice netifd: Interface 'WAN_IPV6' is setting up now
Fri Sep 26 15:58:06 2025 daemon.err odhcp6c[14777]: Failed to send RS (Network unreachable)
Fri Sep 26 15:58:07 2025 daemon.err odhcp6c[14777]: Failed to send SOLICIT message to ff02::1:2 (Network unreachable)
Fri Sep 26 15:58:08 2025 daemon.err odhcp6c[14777]: Failed to send SOLICIT message to ff02::1:2 (Network unreachable)
Fri Sep 26 15:58:10 2025 daemon.err odhcp6c[14777]: Failed to send SOLICIT message to ff02::1:2 (Network unreachable)
Fri Sep 26 15:58:10 2025 daemon.err odhcp6c[14777]: Failed to send RS (Network unreachable)
Fri Sep 26 15:58:14 2025 daemon.err odhcp6c[14777]: Failed to send SOLICIT message to ff02::1:2 (Network unreachable)
Fri Sep 26 15:58:14 2025 daemon.err odhcp6c[14777]: Failed to send RS (Network unreachable)
Fri Sep 26 15:58:18 2025 daemon.err odhcp6c[14777]: Failed to send RS (Network unreachable)
Fri Sep 26 15:58:23 2025 daemon.err odhcp6c[14777]: Failed to send SOLICIT message to ff02::1:2 (Network unreachable)
Fri Sep 26 15:58:41 2025 daemon.err odhcp6c[14777]: Failed to send SOLICIT message to ff02::1:2 (Network unreachable)

Check this

This is for mobiles (not fiber connections) :grinning_face:

1 Like

Usually you need to bind wan6 to @wan esp if it re-maps default wan interface.

Remove “WAN_IPV6” and enable IPv6 on “WAN_IPV4”, then watch the logs.

Thanks @eduperez for your help.

Done, but no IPv6 on WAN only IPv4

Sat Sep 27 12:00:31 2025 daemon.notice netifd: Interface 'WAN_IPV4' is now down
Sat Sep 27 12:00:31 2025 daemon.notice netifd: Interface 'WAN_IPV4' is setting up now
Sat Sep 27 12:00:31 2025 daemon.info pppd[11962]: Plugin pppoe.so loaded.
Sat Sep 27 12:00:31 2025 daemon.info pppd[11962]: PPPoE plugin from pppd 2.5.1
Sat Sep 27 12:00:31 2025 daemon.notice pppd[11962]: pppd 2.5.1 started by root, uid 0
Sat Sep 27 12:00:31 2025 daemon.info pppd[11962]: PPP session is 1
Sat Sep 27 12:00:31 2025 daemon.warn pppd[11962]: Connected to xx:xx:xx:xx:xx:xx via interface wan1.6
Sat Sep 27 12:00:31 2025 daemon.info pppd[11962]: Using interface pppoe-WAN_IPV4
Sat Sep 27 12:00:31 2025 daemon.notice pppd[11962]: Connect: pppoe-WAN_IPV4 <--> wan1.6
Sat Sep 27 12:00:34 2025 daemon.info pppd[11962]: CHAP authentication succeeded: CHAP authentication success
Sat Sep 27 12:00:34 2025 daemon.notice pppd[11962]: CHAP authentication succeeded
Sat Sep 27 12:00:34 2025 daemon.notice pppd[11962]: peer from calling number xx:xx:xx:xx:xx:xx authorized
Sat Sep 27 12:00:34 2025 daemon.notice pppd[11962]: local  IP address xx.xx.xx.xx
Sat Sep 27 12:00:34 2025 daemon.notice pppd[11962]: remote IP address 192.168.144.1
Sat Sep 27 12:00:34 2025 daemon.notice pppd[11962]: primary   DNS address 80.58.61.250
Sat Sep 27 12:00:34 2025 daemon.notice pppd[11962]: secondary DNS address 80.58.61.254
Sat Sep 27 12:00:34 2025 daemon.notice netifd: Network device 'pppoe-WAN_IPV4' link is up
Sat Sep 27 12:00:34 2025 daemon.notice netifd: Interface 'WAN_IPV4' is now up
Sat Sep 27 12:00:35 2025 user.notice firewall: Reloading firewall due to ifup of WAN_IPV4 (pppoe-WAN_IPV4)
Sat Sep 27 12:01:04 2025 daemon.warn pppd[11962]: IPV6CP: timeout sending Config-Requests

Do I have to change something in advanced?

Config looks good… does it work with the ISP router?

No idea :sweat_smile: ... ISP router is lost in some home drawer, one day, I'll do some archaeology works at home trying to recover it and test it.

According to O2, I have IPv6 service enabled by their side, but don't think so.

Anyway, thanks @eduperez and @brada4 for your time and help.

Have they told you any details about their IPv6 deployment? Are they using DHCPv6-PD? What prefix size?

No info about, I've been "googleing" up and down... trying to find some info about, but it's a mess, nothing clear.... I think O2/Movistar are just starting with IPv6 in fiber connections (my personal opinion).

Yes, that's certainly possible. You could try asking on Reddit in /r/IPv6.

1 Like

I would try to remove “WAN_IPV6” completely and set option ipv6 'auto' on “WAN_IPV4”.

That is probably not needed:

1 Like

I agree, is useless, removed from config.

Thanks @AndrewZ

My ISP is O2 Spain and I have IPv6 working. First of all, I don't know if O2 (Movistar) is already assigning IPv6 addresses by default. At the time, I signed up as an IPv6 beta tester.

I am using a Turris Omnia router to which I connect the fiber cable directly via an ONT SFP (ODI DFP-34X-2C2).

/etc/config/network

config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fdxx:xxxx:xxxx::/48'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan0'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'lan3'
	list ports 'lan4'

config device
	option name 'br-ont'
	option type 'bridge'
	list ports 'eth2'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config interface 'ont'
	option device 'br-ont'
	option proto 'static'
	option ipaddr '192.168.2.1'
	option netmask '255.255.255.252'

config interface 'voip'
	option device 'eth2.3'
	option proto 'dhcp'
	option defaultroute '0'
	option peerdns '0'

config interface 'wan'
	option device 'eth2.6'
	option proto 'pppoe'
	option username 'adslppp@telefonicanetpa'
	option password 'adslppp'
	option ipv6 '1'
	option peerdns '0'
	list dns '86.54.11.13'
	list dns '86.54.11.213'

config interface 'wan6'
	option device '@wan'
	option proto 'dhcpv6'
	option peerdns '0'
	list dns '2a13:1001::86:54:11:13'
	list dns '2a13:1001::86:54:11:213'

config interface 'vpn'
	option proto 'wireguard'
	option private_key 'xxx'
	option public_key 'xxx'
	option listen_port '51820'
	list addresses '192.168.3.1/24'

config wireguard_vpn
	option description 'mobile'
	option private_key 'xxx'
	option public_key 'xxx'
	option preshared_key 'xxx'
	option persistent_keepalive '25'
	list allowed_ips '192.168.3.2/32'

config wireguard_vpn
	option description 'tablet'
	option private_key 'xxx'
	option public_key 'xxx'
	option preshared_key 'xxx'
	option persistent_keepalive '25'
	list allowed_ips '192.168.3.3/32'

/etc/config/firewall

config defaults
	option input 'DROP'
	option output 'DROP'
	option forward 'DROP'
	option drop_invalid '1'
	option synflood_protect '1'
	option flow_offloading '1'

config zone
	option name 'lan'
	list network 'lan'
	list network 'vpn'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'

config zone
	option name 'ont'
	list network 'ont'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'

config zone
	option name 'voip'
	list network 'voip'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option mtu_fix '1'
	option masq '1'

config zone
	option name 'wan'
	list network 'wan'
	list network 'wan6'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option mtu_fix '1'
	option masq '1'

config forwarding
	option src 'lan'
	option dest 'ont'

config forwarding
	option src 'lan'
	option dest 'voip'

config forwarding
	option src 'lan'
	option dest 'wan'

config rule
	option name 'voip-input-dhcp'
	option family 'ipv4'
	option proto 'udp'
	option src 'voip'
	option dest_port '68'
	option target 'ACCEPT'
	option enabled '1'

config rule
	option name 'voip-input-icmp'
	option family 'ipv4'
	option proto 'icmp'
	list icmp_type 'echo-request'
	option src 'voip'
	option target 'ACCEPT'
	option enabled '1'

config rule
	option name 'voip-input-rip'
	option family 'ipv4'
	option proto 'udp'
	option src 'voip'
	option dest_port '520'
	option target 'ACCEPT'
	option enabled '1'

config rule
	option name 'wan-input-dhcp'
	option family 'ipv4'
	option proto 'udp'
	option src 'wan'
	option dest_port '68'
	option target 'ACCEPT'
	option enabled '0'

config rule
	option name 'wan-input-dhcpv6'
	option family 'ipv6'
	option proto 'udp'
	option src 'wan'
	option dest_port '546'
	option target 'ACCEPT'
	option enabled '1'

config rule
	option name 'wan-input-icmp'
	option family 'ipv4'
	option proto 'icmp'
	list icmp_type 'echo-request'
	option src 'wan'
	option target 'ACCEPT'
	option enabled '1'

config rule
	option name 'wan-input-icmpv6'
	option family 'ipv6'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option src 'wan'
	option limit '1000/sec'
	option target 'ACCEPT'
	option enabled '1'

config rule
	option name 'wan-input-igmp'
	option family 'ipv4'
	option proto 'igmp'
	option src 'wan'
	option target 'ACCEPT'
	option enabled '0'

config rule
	option name 'wan-input-mld'
	option family 'ipv6'
	option proto 'icmp'
	list icmp_type 'multicast-listener-query'
	list icmp_type 'multicast-listener-report'
	list icmp_type 'multicast-listener-done'
	list icmp_type 'v2-multicast-listener-report'
	option src 'wan'
	option src_ip 'fe80::/10'
	option target 'ACCEPT'
	option enabled '1'

config rule
	option name 'wan-input-wireguard'
	option family 'any'
	option proto 'udp'
	option src 'wan'
	option dest_port '51820'
	option target 'ACCEPT'
	option enabled '1'

config rule
	option name 'wan-forward-icmpv6'
	option family 'ipv6'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option src 'wan'
	option dest '*'
	option limit '1000/sec'
	option target 'ACCEPT'
	option enabled '1'

/etc/config/dhcp

config dnsmasq
	option domainneeded '1'
	option boguspriv '1'
	option filterwin2k '0'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option nonegcache '0'
	option cachesize '1000'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option nonwildcard '0'
	option localservice '1'
	option ednspacket_max '1232'
	option filter_aaaa '0'
	option filter_a '0'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'
	option piofolder '/tmp/odhcpd-piofolder'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option dhcpv6 'server'
	option ra 'server'
	option ra_slaac '1'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'

config dhcp 'ont'
	option interface 'ont'
	option ignore '1'

config dhcp 'voip'
	option interface 'voip'
	option ignore '1'

config dhcp 'wan'
	option interface 'wan'
	option ignore '1'

config dhcp 'wan6'
	option interface 'wan6'
	option ignore '1'

config dhcp 'vpn'
	option interface 'vpn'
	option ignore '1'

And although it's unrelated, in case you're interested, this is my bird2 configuration for VoIP, even though I'm not using the telephony feature.

/etc/bird.conf

router id 192.168.2.1;

protocol device {
	scan time 10;
}

protocol kernel {
	scan time 20;
	ipv4 {
		import all;
		export all;
	};
}

protocol kernel {
	scan time 20;
	ipv6 {
		import all;
		export all;
	};
}

protocol rip {
	interface "eth2.3" {
		passive yes;
	};
	ipv4 {
		import where net ~ 10.0.0.0/8;
		export where net ~ 10.0.0.0/8;
	};
}
2 Likes

Hi! Do you managed to fix this?
I'm a Movistar user with IPv6 (as part of the beta testing program), and I have a similar issue as yours.

The ISP router don't have problems negotiating the IPv6 adresses. However, the OpenWRT one only receives the IPv4 public address. This router is a Linksys WRT1900ACS v2.

One thing I noticed in the logs is this error related to the ppp daemon. Is this expected?

pppd[3935]: IPV6CP: timeout sending Config-Requests

They use rip for voip? What?

Yes, to get the route. It's possible to define it statically, but if they change it in the future... That's how the ISP router configures it.

1 Like