# 2026-05-08 17:46:02 by RouterOS 7.21.4 # software id = UETF-WF31 # # model = CCR2004-16G-2S+ # serial number = HH90A5E8XJF /interface bridge add name=climax-bridge add name=mgmt /interface ethernet set [ find default-name=ether1 ] name=ether1-climaxtower set [ find default-name=ether2 ] l2mtu=9000 rx-flow-control=auto \ tx-flow-control=auto set [ find default-name=ether3 ] l2mtu=2024 name=ether3-culleoka-11ghz \ rx-flow-control=auto tx-flow-control=auto set [ find default-name=ether4 ] l2mtu=2024 name=ether4-380-airfiber24 \ rx-flow-control=auto tx-flow-control=auto set [ find default-name=ether5 ] l2mtu=1580 name=ether5-494 rx-flow-control=\ auto tx-flow-control=auto set [ find default-name=ether6 ] l2mtu=2024 name=ether6-verona-11ghz \ rx-flow-control=auto tx-flow-control=auto set [ find default-name=ether7 ] l2mtu=9000 name=ether7-switch \ rx-flow-control=auto tx-flow-control=auto set [ find default-name=ether8 ] l2mtu=9000 name=ether8-michael \ rx-flow-control=auto tx-flow-control=auto set [ find default-name=sfp-sfpplus1 ] auto-negotiation=no rx-flow-control=\ auto speed=1G-baseX tx-flow-control=auto /interface vlan add interface=ether7-switch name=vlan10_ether7 vlan-id=10 add interface=sfp-sfpplus1 name=vlan10_sfp-sfpplus1 vlan-id=10 /ip hotspot user profile set [ find default=yes ] add-mac-cookie=no on-logout="/ip hotspot host remove \ [find where address=\94\$address\94 and !authorized and !bypassed]" \ session-timeout=1h /ip ipsec proposal set [ find default=yes ] auth-algorithms=sha256 enc-algorithms=\ aes-256-cbc,aes-128-cbc pfs-group=modp2048 /ip pool add name=climaxtower ranges=10.0.102.1-10.0.102.253 add name=dhcp_pool1 ranges=10.100.16.1-10.100.30.254 add name=cgnat ranges=100.64.7.1-100.64.7.250 add name=public-temp ranges=204.110.190.1-204.110.190.99 add name=climax-mgmt ranges=10.10.16.1-10.10.30.254 /ip dhcp-server add address-pool=climaxtower interface=climax-bridge name=dhcp1 add address-pool=climax-mgmt interface=mgmt lease-script="{\ \n:local url \"https://xtjlpnubrg.execute-api.us-east-1.amazonaws.com/prod\ uction/on-start-workflow-execution/6f19a48f-04f7-40c1-a4e0-8cb66df99213/cd\ c24944-c947-4e01-9c54-07a1653d2e3e\"\ \n:local url2 \"https://iptrack.vntx.net/api/dhcp\"\ \n:local max 1\ \n\ \n:local attempts 0\ \n:local success1 0\ \n:local success2 0\ \n:do {\ \n :set attempts (\$attempts+1);\ \n :if (\$leaseBound = 0) do {\ \n # Try url2 (iptrack.vntx.net) - deassignment\ \n :do {\ \n /tool fetch duration=30s mode=https url=\"\$url2\" http-method=pos\ t http-header-field=\"Content-Type: application/json\" http-data=\"{\\\"bo\ und\\\":\\\"\$leaseBound\\\",\\\"mac\\\":\\\"\$leaseActMAC\\\",\\\"ip\\\":\ \\\"\$leaseActIP\\\",\\\"server\\\":\\\"\$leaseServerName\\\"}\"\ \n :set success1 1;\ \n :log info \"DHCP deassignment successfully sent to iptrack.vntx.ne\ t for \$leaseActMAC / \$leaseActIP\";\ \n } on-error={\ \n :log error \"DHCP FAILED to send deassignment to iptrack.vntx.net \ on attempt \$attempts/\$max for \$leaseActMAC / \$leaseActIP\";\ \n }\ \n\ \n # Try url (gaiia) - deassignment\ \n :do {\ \n /tool fetch duration=30s mode=https url=\"\$url\" http-method=post\ \_http-header-field=\"Content-Type: application/json\" http-data=\"{\\\"bo\ und\\\":\\\"\$leaseBound\\\",\\\"mac\\\":\\\"\$leaseActMAC\\\",\\\"ip\\\":\ \\\"\$leaseActIP\\\",\\\"server\\\":\\\"\$leaseServerName\\\",\\\"remoteId\ \\\":\\\"\\\"}\"\ \n :set success2 1;\ \n :log info \"DHCP deassignment successfully sent to gaiia AWS API f\ or \$leaseActMAC / \$leaseActIP\";\ \n } on-error={\ \n :log error \"DHCP FAILED to send deassignment to gaiia AWS API on \ attempt \$attempts/\$max for \$leaseActMAC / \$leaseActIP\";\ \n }\ \n\ \n :if (\$success1 != 1 || \$success2 != 1) do={\ \n :delay 3s;\ \n }\ \n } else {\ \n :delay 1s;\ \n :local remoteID [/ip dhcp-server lease get [find where address=\$lea\ seActIP] agent-remote-id];\ \n\ \n # Try url2 (iptrack.vntx.net) - assignment\ \n :do {\ \n /tool fetch duration=30s mode=https url=\"\$url2\" http-method=pos\ t http-header-field=\"Content-Type: application/json\" http-data=\"{\\\"bo\ und\\\":\\\"\$leaseBound\\\",\\\"mac\\\":\\\"\$leaseActMAC\\\",\\\"ip\\\":\ \\\"\$leaseActIP\\\",\\\"server\\\":\\\"\$leaseServerName\\\",\\\"remoteId\ \\\":\\\"\$remoteID\\\"}\"\ \n :set success1 1;\ \n :log info \"DHCP assignment successfully sent to iptrack.vntx.net \ for \$leaseActMAC / \$leaseActIP / \$remoteID\";\ \n } on-error={\ \n :log error \"DHCP FAILED to send assignment to iptrack.vntx.net on\ \_attempt \$attempts/\$max for \$leaseActMAC / \$leaseActIP / \$remoteID\"\ ;\ \n }\ \n\ \n # Try url (gaiia) - assignment\ \n :do {\ \n /tool fetch duration=30s mode=https url=\"\$url\" http-method=post\ \_http-header-field=\"Content-Type: application/json\" http-data=\"{\\\"bo\ und\\\":\\\"\$leaseBound\\\",\\\"mac\\\":\\\"\$leaseActMAC\\\",\\\"ip\\\":\ \\\"\$leaseActIP\\\",\\\"server\\\":\\\"\$leaseServerName\\\",\\\"remoteId\ \\\":\\\"\$remoteID\\\"}\"\ \n :set success2 1;\ \n :log info \"DHCP assignment successfully sent to gaiia AWS API for\ \_\$leaseActMAC / \$leaseActIP / \$remoteID\";\ \n } on-error={\ \n :log error \"DHCP FAILED to send assignment to gaiia AWS API on at\ tempt \$attempts/\$max for \$leaseActMAC / \$leaseActIP / \$remoteID\";\ \n }\ \n\ \n :if (\$success1 != 1 || \$success2 != 1) do={\ \n :delay 30s;\ \n }\ \n }\ \n :if (\$success1 = 1 && \$success2 = 1) do {\ \n :set attempts \$max;\ \n }\ \n} while ( \$attempts < \$max )\ \n}\ \n" name=climax-mgmt /ipv6 pool add name=climax-v6 prefix=2606:1c80:1:2000::/52 prefix-length=64 /ppp profile add bridge-learning=no change-tcp-mss=yes dns-server=\ 204.110.191.240,204.110.191.20 local-address=cgnat name=pppoe on-down="{\ \n:local url \"https://xtjlpnubrg.execute-api.us-east-1.amazonaws.com/prod\ uction/on-start-workflow-execution/6f19a48f-04f7-40c1-a4e0-8cb66df99213/0a\ 7f4443-fc8a-4fe0-807c-f535d2aa1865\"\ \n:local url2 \"https://iptrack.vntx.net/api/pppoe\"\ \n:local max 1\ \n\ \n:local localAddr \$\"local-address\"\ \n:local remoteAddr \$\"remote-address\"\ \n:local callerId \$\"caller-id\"\ \n:local calledId \$\"called-id\"\ \n:local interfaceName [/interface get \$interface name]\ \n\ \n:local attempts 0\ \n:local success1 0\ \n:local success2 0\ \n:do {\ \n :set attempts (\$attempts+1);\ \n\ \n # Try url2 (iptrack.vntx.net)\ \n :do {\ \n /tool fetch duration=30s mode=https url=\"\$url2\" http-method=post \ http-header-field=\"Content-Type: application/json\" http-data=\"{\\\"boun\ d\\\":\\\"0\\\",\\\"username\\\":\\\"\$user\\\",\\\"callingstationid\\\":\ \\\"\$callerId\\\",\\\"framedip\\\":\\\"\$remoteAddr\\\"}\"\ \n :set success1 1;\ \n :log info \"PPPoE deassignment successfully sent to iptrack.vntx.net\ \_for \$user / \$remoteAddr\";\ \n } on-error={\ \n :log error \"PPPoE FAILED to send deassignment to iptrack.vntx.net o\ n attempt \$attempts out of \$max for \$user / \$remoteAddr\";\ \n }\ \n\ \n # Try url (AWS API)\ \n :do {\ \n /tool fetch duration=30s mode=https url=\"\$url\" http-method=post h\ ttp-header-field=\"Content-Type: application/json\" http-data=\"{\\\"bound\ \\\":\\\"0\\\",\\\"username\\\":\\\"\$user\\\",\\\"callingstationid\\\":\\\ \"\$callerId\\\",\\\"framedip\\\":\\\"\$remoteAddr\\\"}\"\ \n :set success2 1;\ \n :log info \"PPPoE deassignment successfully sent to gaiia AWS API fo\ r \$user / \$remoteAddr\";\ \n } on-error={\ \n :log error \"PPPoPoE FAILED to send deassignment to gaiia AWS API on\ \_attempt \$attempts out of \$max for \$user / \$remoteAddr\";\ \n }\ \n\ \n :if (\$success1 = 1 && \$success2 = 1) do {\ \n :set attempts \$max;\ \n } else {\ \n :delay 3s;\ \n }\ \n} while ( \$attempts < \$max )\ \n}\ \n" on-up="{\ \n:local url \"https://xtjlpnubrg.execute-api.us-east-1.amazonaws.com/prod\ uction/on-start-workflow-execution/6f19a48f-04f7-40c1-a4e0-8cb66df99213/0a\ 7f4443-fc8a-4fe0-807c-f535d2aa1865\"\ \n:local url2 \"https://iptrack.vntx.net/api/pppoe\"\ \n:local max 5\ \n\ \n:local localAddr \$\"local-address\"\ \n:local remoteAddr \$\"remote-address\"\ \n:local callerId \$\"caller-id\"\ \n:local calledId \$\"called-id\"\ \n:local interfaceName [/interface get \$interface name]\ \n\ \n:local attempts 0\ \n:local success1 0\ \n:local success2 0\ \n:do {\ \n :set attempts (\$attempts+1);\ \n\ \n # Try url2 (iptrack.vntx.net)\ \n :do {\ \n /tool fetch duration=30s mode=https url=\"\$url2\" http-method=post \ http-header-field=\"Content-Type: application/json\" http-data=\"{\\\"boun\ d\\\":\\\"1\\\",\\\"username\\\":\\\"\$user\\\",\\\"callingstationid\\\":\ \\\"\$callerId\\\",\\\"framedip\\\":\\\"\$remoteAddr\\\"}\"\ \n :set success1 1;\ \n :log info \"PPPoE assignment successfully sent to iptrack.vntx.net f\ or \$user / \$remoteAddr\";\ \n } on-error={\ \n :log error \"PPPoE FAILED to send assignment to iptrack.vntx.net on \ attempt \$attempts out of \$max for \$user / \$remoteAddr\";\ \n }\ \n\ \n # Try url (gaiia)\ \n :do {\ \n /tool fetch duration=30s mode=https url=\"\$url\" http-method=post h\ ttp-header-field=\"Content-Type: application/json\" http-data=\"{\\\"bound\ \\\":\\\"1\\\",\\\"username\\\":\\\"\$user\\\",\\\"callingstationid\\\":\\\ \"\$callerId\\\",\\\"framedip\\\":\\\"\$remoteAddr\\\"}\"\ \n :set success2 1;\ \n :log info \"PPPoE assignment successfully sent to gaiia AWS API for \ \$user / \$remoteAddr\";\ \n } on-error={\ \n :log error \"PPPoE FAILED to send assignment to gaiia AWS API on att\ empt \$attempts out of \$max for \$user / \$remoteAddr\";\ \n }\ \n\ \n :if (\$success1 = 1 && \$success2 = 1) do {\ \n :set attempts \$max;\ \n } else {\ \n :delay 3s;\ \n }\ \n} while ( \$attempts < \$max )\ \n}\ \n" remote-address=cgnat use-compression=no use-encryption=no use-ipv6=no \ use-mpls=no use-upnp=no /queue type add kind=fq-codel name=fq-codel /queue interface set ether1-climaxtower queue=fq-codel set ether2 queue=fq-codel set ether3-culleoka-11ghz queue=fq-codel set ether4-380-airfiber24 queue=fq-codel set ether5-494 queue=fq-codel set ether6-verona-11ghz queue=fq-codel set ether7-switch queue=fq-codel set ether8-michael queue=fq-codel set ether9 queue=fq-codel set ether10 queue=fq-codel set ether11 queue=fq-codel set ether12 queue=fq-codel set ether13 queue=fq-codel set ether14 queue=fq-codel set ether15 queue=fq-codel set ether16 queue=fq-codel set sfp-sfpplus1 queue=fq-codel set sfp-sfpplus2 queue=fq-codel /routing id add disabled=no id=10.254.254.102 name=id-1 select-dynamic-id="" /routing ospf instance add disabled=no in-filter-chain=ospf-in name=default-v2 originate-default=\ never out-filter-chain=ospf-out redistribute=connected router-id=id-1 add disabled=no in-filter-chain=ospf-in name=default-v3 out-filter-chain=\ ospf-out redistribute=connected router-id=id-1 version=3 /routing ospf area add disabled=no instance=default-v2 name=backbone-v2 add disabled=no instance=default-v3 name=backbone-v3 /snmp community set [ find default=yes ] addresses=204.110.188.0/22,10.0.0.0/8 name=\ kdyyJrT0Mm /system logging action set 0 memory-lines=100 set 1 disk-lines-per-file=100 set 3 remote=204.110.191.251 src-address=10.254.254.102 add name=logs remote=204.110.191.229 src-address=10.254.254.102 target=remote /interface bridge port add bridge=climax-bridge ingress-filtering=no interface=ether7-switch \ internal-path-cost=10 path-cost=10 add bridge=climax-bridge ingress-filtering=no interface=ether8-michael \ internal-path-cost=10 path-cost=10 add bridge=climax-bridge ingress-filtering=no interface=ether2 \ internal-path-cost=10 multicast-router=disabled path-cost=10 add bridge=climax-bridge interface=sfp-sfpplus1 add bridge=mgmt interface=vlan10_ether7 add bridge=mgmt interface=vlan10_sfp-sfpplus1 /ip firewall connection tracking set enabled=yes icmp-timeout=30s tcp-close-wait-timeout=1m \ tcp-established-timeout=4h tcp-fin-wait-timeout=2m tcp-last-ack-timeout=\ 30s tcp-syn-received-timeout=1m tcp-syn-sent-timeout=2m \ tcp-time-wait-timeout=2m udp-stream-timeout=2m /ip neighbor discovery-settings set discover-interface-list=!dynamic /ip settings set max-neighbor-entries=8192 tcp-syncookies=yes /interface pppoe-server server add authentication=chap,mschap2 default-profile=pppoe disabled=no interface=\ climax-bridge max-mru=1492 max-mtu=1492 one-session-per-host=yes \ service-name=Climax /ip address add address=10.0.102.254/24 interface=ether1-climaxtower network=10.0.102.0 add address=10.254.254.102 interface=lo network=10.254.254.102 add address=204.110.188.62/27 interface=climax-bridge network=204.110.188.32 add address=100.64.7.254/22 interface=climax-bridge network=100.64.4.0 add address=10.250.1.14/29 interface=ether3-culleoka-11ghz network=10.250.1.8 add address=10.250.1.30/29 interface=ether6-verona-11ghz network=10.250.1.24 add address=10.250.1.70/29 interface=ether5-494 network=10.250.1.64 add address=10.250.1.94/29 interface=ether4-380-airfiber24 network=\ 10.250.1.88 add address=10.10.31.254/20 interface=mgmt network=10.10.16.0 /ip dhcp-server network add address=10.0.102.0/24 dns-server=9.9.9.9 gateway=10.0.102.254 add address=10.10.16.0/20 dns-server=204.110.191.240,204.110.191.20 domain=\ vntx.net gateway=10.10.31.254 ntp-server=204.110.191.19 add address=100.64.4.0/22 dns-server=204.110.191.240,204.110.191.20 domain=\ vntx.net gateway=100.64.7.254 ntp-server=204.110.191.19 add address=204.110.188.32/27 dns-server=204.110.191.240,204.110.191.20 \ domain=vntx.net gateway=204.110.188.62 ntp-server=204.110.191.19 /ip dns set servers=9.9.9.9,1.1.1.1 /ip firewall filter add action=accept chain=forward comment=\ "bypass fasttrack for MPLS spine (out)" out-interface=ether5-494 add action=accept chain=forward comment=\ "bypass fasttrack for MPLS spine (in)" in-interface=ether5-494 add action=accept chain=forward comment=\ "bypass fasttrack for MPLS spine (out)" out-interface=\ ether4-380-airfiber24 add action=accept chain=forward comment=\ "bypass fasttrack for MPLS spine (in)" in-interface=ether4-380-airfiber24 add action=accept chain=forward comment=\ "bypass fasttrack for MPLS spine (out)" out-interface=ether6-verona-11ghz add action=accept chain=forward comment=\ "bypass fasttrack for MPLS spine (in)" in-interface=ether6-verona-11ghz add action=passthrough chain=unused-hs-chain comment=\ "place hotspot rules here" disabled=yes add action=fasttrack-connection chain=forward comment=\ "fasttrack established/related" connection-state=established,related add action=accept chain=forward comment="accept established/related" \ connection-state=established,related /ip hotspot ip-binding add address=100.64.7.250 type=bypassed add address=204.110.188.62 type=bypassed add address=10.10.0.0/16 type=bypassed add address=204.110.188.0/24 add address=100.64.0.0/10 add address=204.110.188.32/27 add address=0.0.0.0/0 type=blocked /ip hotspot profile add dns-name=climax.vntx.net hotspot-address=10.100.31.254 login-by="" name=\ hsprof1 /ip ipsec policy set 0 dst-address=0.0.0.0/0 src-address=0.0.0.0/0 /ip ipsec profile set [ find default=yes ] dh-group=modp2048 dpd-interval=2m \ dpd-maximum-failures=5 enc-algorithm=aes-256,aes-128 hash-algorithm=\ sha256 /ip proxy set cache-path=web-proxy1 port=23435 /ip proxy access add src-address=100.64.0.0/10 add src-address=204.110.188.0/22 add src-address=10.0.0.0/8 add action=deny /ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=10.250.1.89 \ pref-src="" routing-table=main scope=30 target-scope=10 add dst-address=204.110.188.224/27 gateway=10.250.1.25 add dst-address=100.64.0.0/22 gateway=10.250.1.25 add dst-address=10.10.0.0/20 gateway=10.250.1.25 add dst-address=10.10.80.0/20 gateway=10.250.1.25 add dst-address=204.110.191.0/27 gateway=10.250.1.25 add dst-address=10.250.1.64/29 gateway=10.250.1.65 add dst-address=10.254.254.111/32 gateway=10.250.1.65 add dst-address=100.64.160.0/20 gateway=10.250.1.65 add dst-address=204.110.188.64/27 gateway=10.250.1.65 add disabled=no dst-address=10.254.254.101/32 gateway=10.250.1.25 \ routing-table=main /ip service set ftp address=204.110.188.0/22,10.0.0.0/8 disabled=yes set telnet address=204.110.188.0/22,10.0.0.0/8 disabled=yes set www address=204.110.188.0/22,10.0.0.0/8 disabled=yes port=81 set www-ssl address=204.110.188.0/22,10.0.0.0/8 set ssh address=204.110.188.0/22,10.0.0.0/8,100.64.0.0/10 port=1022 set winbox address=204.110.188.0/22,10.0.0.0/8 set api address=204.110.188.0/22,10.0.0.0/8,100.64.0.0/10 set api-ssl certificate=MyCA /ip ssh set host-key-type=ed25519 strong-crypto=yes /ipv6 address add address=2606:1c80:0:1010::1 interface=ether6-verona-11ghz /ipv6 dhcp-relay option set client_mac value="0x0001\$(CLIENT_MAC)" /ipv6 nd set [ find default=yes ] advertise-dns=yes /mpls interface add interface=ether6-verona-11ghz mpls-mtu=1508 add interface=ether4-380-airfiber24 mpls-mtu=1508 add interface=ether5-494 mpls-mtu=1508 /mpls ldp add disabled=no lsr-id=10.254.254.102 transport-addresses=10.254.254.102 vrf=\ main /mpls ldp interface add interface=ether6-verona-11ghz add interface=ether4-380-airfiber24 add interface=ether5-494 /ppp aaa set interim-update=1h use-radius=yes /radius add address=204.110.191.248 require-message-auth=no service=ppp,hotspot,dhcp \ src-address=204.110.188.62 timeout=2s add address=204.110.191.2 require-message-auth=no service=ppp,hotspot,dhcp \ src-address=204.110.188.62 timeout=2s /radius incoming set accept=yes /routing bfd configuration add disabled=no interfaces=all min-rx=200ms min-tx=200ms multiplier=5 vrf=\ main /routing filter rule add chain=ospf-in disabled=no rule=accept add chain=ospf-out disabled=no rule=accept /routing ospf interface-template add area=backbone-v3 cost=10 disabled=no use-bfd=no add area=backbone-v2 auth=sha512 auth-id=1 cost=10 disabled=no interfaces=\ ether6-verona-11ghz priority=1 type=ptp use-bfd=no add area=backbone-v2 auth=sha512 auth-id=1 cost=10 disabled=no interfaces=\ ether5-494 priority=1 type=ptp use-bfd=yes add area=backbone-v3 auth=sha512 auth-id=1 cost=10 disabled=no interfaces=\ ether3-culleoka-11ghz priority=1 type=ptp use-bfd=no add area=backbone-v2 auth=sha512 auth-id=1 cost=10 disabled=no interfaces=\ ether4-380-airfiber24 priority=1 type=ptp use-bfd=no /routing ospf static-neighbor add address=10.250.1.25%ether6-verona-11ghz area=backbone-v2 disabled=no \ poll-interval=10s add address=10.250.1.9%ether3-culleoka-11ghz area=backbone-v2 disabled=no \ poll-interval=10s /snmp set contact=graham@vntx.net enabled=yes location="33.187291, -96.448119" /system clock set time-zone-autodetect=no time-zone-name=CST6CDT /system identity set name=Climax /system ntp client set enabled=yes /system ntp client servers add address=ntp.vntx.net add address=0.us.pool.ntp.org /system package update set channel=long-term /system routerboard settings # Firmware upgraded successfully, please reboot for changes to take effect! set auto-upgrade=yes enter-setup-on=delete-key