External PPPoE dialup interfaces
/interface pppoe-client
add name=pppoe-out1 interface=ether1 user=isp1-user password=isp1-pass disabled=no add-default-route=no
add name=pppoe-out2 interface=ether2 user=isp2-user password=isp2-pass disabled=no add-default-route=no
===== 2. Address Pool Configuration =====
IPv4 address pool for LAN
/ip pool
add name=pool-dhcp-ipv4 ranges=192.168.1.2-192.168.1.254
IPv6 prefix pools for LAN
/ipv6 pool
add name=ipv6-dhcp-ra-pool prefix=fd00:1000::/48 prefix-length=64
add name=ipv6-dhcp-pd-pool prefix=fd00:2000::/48 prefix-length=60
===== 3. PCQ Configuration =====
PCQ for upload limiting
/queue type
add name=pcq-upload kind=pcq pcq-rate=10M pcq-limit=50 pcq-classifier=src-address pcq-total-limit=2000
PCQ for download limiting
/queue type
add name=pcq-download kind=pcq pcq-rate=10M pcq-limit=50 pcq-classifier=dst-address pcq-total-limit=2000
===== 4. LAN IP Configuration =====
Internal LAN address
/ip address
add address=192.168.1.1/24 interface=ether3 comment="LAN Gateway"
IPv6 address for LAN
/ipv6 address
add address=fd00:1000::1/64 interface=ether3 advertise=yes comment="LAN IPv6"
===== 5. DHCP Configuration =====
IPv4 DHCP server for ether3
/ip dhcp-server network
add address=192.168.1.0/24 gateway=192.168.1.1 dns-server=8.8.8.8,1.1.1.1
/ip dhcp-server
add name=dhcp-server interface=ether3 address-pool=pool-dhcp-ipv4 lease-time=1d disabled=no
===== 6. IPv6 Configuration =====
Enable IPv6
/ipv6 settings
set accept-router-advertisements=yes accept-redirects=yes forward=yes
IPv6 DHCP client on PPPoE interfaces (get prefix from ISP)
/ipv6 dhcp-client
add interface=pppoe-out1 request=prefix add-default-route=yes
add interface=pppoe-out2 request=prefix add-default-route=no
IPv6 RA configuration for ether3 (LAN)
/ipv6 nd
add interface=ether3 ra-interval=20s-60s hop-limit=64 advertise-mac-address=yes managed-address-flag=yes other-config-flag=yes
IPv6 DHCPv6-PD server for ether3
/ipv6 dhcp-server
add name=dhcpv6-server interface=ether3 address-pool=ipv6-dhcp-pd-pool lease-time=1d
===== 7. Routing Table Configuration =====
Create routing tables for dual WAN
/routing table
add name=to-isp1 fib
add name=to-isp2 fib
add name=to-isp1-v6 fib
add name=to-isp2-v6 fib
===== 8. Mangle Rules Configuration =====
/ip firewall mangle
IPv4 PCC load balancing marking
add chain=prerouting src-address=192.168.1.2-192.168.1.254 per-connection-classifier=both-addresses-and-ports:2/0 action=mark-connection new-connection-mark=ISP1_conn passthrough=yes
add chain=prerouting src-address=192.168.1.2-192.168.1.254 per-connection-classifier=both-addresses-and-ports:2/1 action=mark-connection new-connection-mark=ISP2_conn passthrough=yes
IPv4 routing marking
add chain=prerouting src-address=192.168.1.2-192.168.1.254 connection-mark=ISP1_conn action=mark-routing new-routing-mark=to-isp1 passthrough=yes
add chain=prerouting src-address=192.168.1.2-192.168.1.254 connection-mark=ISP2_conn action=mark-routing new-routing-mark=to-isp2 passthrough=yes
IPv4 traffic marking for rate limiting
add chain=forward src-address=192.168.1.2-192.168.1.254 action=mark-packet new-packet-mark=up passthrough=no
add chain=forward dst-address=192.168.1.2-192.168.1.254 action=mark-packet new-packet-mark=down passthrough=no
IPv6 Mangle rules
/ipv6 firewall mangle
IPv6 PCC load balancing marking
add chain=prerouting src-address=fd00:1000::/48 per-connection-classifier=both-addresses-and-ports:2/0 action=mark-connection new-connection-mark=ISP1_conn_v6 passthrough=yes
add chain=prerouting src-address=fd00:1000::/48 per-connection-classifier=both-addresses-and-ports:2/1 action=mark-connection new-connection-mark=ISP2_conn_v6 passthrough=yes
add chain=prerouting src-address=fd00:2000::/48 per-connection-classifier=both-addresses-and-ports:2/0 action=mark-connection new-connection-mark=ISP1_conn_v6 passthrough=yes
add chain=prerouting src-address=fd00:2000::/48 per-connection-classifier=both-addresses-and-ports:2/1 action=mark-connection new-connection-mark=ISP2_conn_v6 passthrough=yes
IPv6 routing marking
add chain=prerouting src-address=fd00:1000::/48 connection-mark=ISP1_conn_v6 action=mark-routing new-routing-mark=to-isp1-v6 passthrough=yes
add chain=prerouting src-address=fd00:1000::/48 connection-mark=ISP2_conn_v6 action=mark-routing new-routing-mark=to-isp2-v6 passthrough=yes
add chain=prerouting src-address=fd00:2000::/48 connection-mark=ISP1_conn_v6 action=mark-routing new-routing-mark=to-isp1-v6 passthrough=yes
add chain=prerouting src-address=fd00:2000::/48 connection-mark=ISP2_conn_v6 action=mark-routing new-routing-mark=to-isp2-v6 passthrough=yes
IPv6 traffic marking for rate limiting (unified with IPv4)
add chain=forward src-address=fd00:1000::/48 action=mark-packet new-packet-mark=up passthrough=no
add chain=forward src-address=fd00:2000::/48 action=mark-packet new-packet-mark=up passthrough=no
add chain=forward dst-address=fd00:1000::/48 action=mark-packet new-packet-mark=down passthrough=no
add chain=forward dst-address=fd00:2000::/48 action=mark-packet new-packet-mark=down passthrough=no
===== 9. NAT Configuration =====
IPv4 NAT
/ip firewall nat
add chain=srcnat out-interface=pppoe-out1 action=masquerade
add chain=srcnat out-interface=pppoe-out2 action=masquerade
IPv6 NAT66 (usually not needed with PPPoE IPv6, but included for compatibility)
/ipv6 firewall nat
add chain=srcnat out-interface=pppoe-out1 action=masquerade
add chain=srcnat out-interface=pppoe-out2 action=masquerade
===== 10. Routing Configuration =====
IPv4 default routes
/ip route
add dst-address=0.0.0.0/0 gateway=pppoe-out1 routing-table=to-isp1 distance=1 check-gateway=ping comment="ISP1 Route"
add dst-address=0.0.0.0/0 gateway=pppoe-out2 routing-table=to-isp2 distance=1 check-gateway=ping comment="ISP2 Route"
IPv4 main routes (failover)
add dst-address=0.0.0.0/0 gateway=pppoe-out1 distance=1 check-gateway=ping comment="ISP1 Main"
add dst-address=0.0.0.0/0 gateway=pppoe-out2 distance=2 check-gateway=ping comment="ISP2 Backup"
IPv6 default routes
/ipv6 route
add dst-address=::/0 gateway=pppoe-out1 routing-table=to-isp1-v6 distance=1 check-gateway=ping comment="ISP1 IPv6 Route"
add dst-address=::/0 gateway=pppoe-out2 routing-table=to-isp2-v6 distance=1 check-gateway=ping comment="ISP2 IPv6 Route"
IPv6 main routes (failover)
add dst-address=::/0 gateway=pppoe-out1 distance=1 check-gateway=ping comment="ISP1 IPv6 Main"
add dst-address=::/0 gateway=pppoe-out2 distance=2 check-gateway=ping comment="ISP2 IPv6 Backup"
===== 11. Queue Tree Rate Limiting Configuration =====
/queue tree
Upload rate limiting (IPv4 + IPv6 unified)
add name=upload parent=global packet-mark=up queue=pcq-upload priority=8
Download rate limiting (IPv4 + IPv6 unified)
add name=download parent=global packet-mark=down queue=pcq-download priority=8