network/982_cgnat_migration_safe.rsc
2026-05-08 17:47:42 -05:00

84 lines
No EOL
3.1 KiB
Text

# 982 Router CGNAT Migration Script - SAFE VERSION
# This version adds the new configuration alongside the old one
# Allows gradual migration without service interruption
#
# Migration: 100.64.32.0/22 -> 100.64.48.0/20
# Matches management subnet pattern (10.10.48.0/20)
# PREPARATION PHASE - Run these first
{
# Add new CGNAT pool with expanded range
/ip pool add name=cgnat-new ranges=100.64.48.1-100.64.63.199 comment="New /20 CGNAT pool"
# Add new IP address (keep old one for now)
/ip address add address=100.64.63.254/20 interface=982 comment="New CGNAT gateway /20"
# Create temporary PPP profile for migration
/ppp profile add name=982-migrate local-address=100.64.63.253 remote-address=cgnat-new comment="Migration profile"
# Print current state
:put "New CGNAT configuration added. Current state:"
/ip pool print where name~"cgnat"
/ip address print where interface=982
/ppp profile print where name~"982"
}
# TESTING PHASE - Test with one client
{
# Change one PPPoE client to test
# Replace 'testclient' with actual username
# /ppp secret set [find name="testclient"] profile=982-migrate
# Have client reconnect and verify they get IP from new range
# Check with: /ppp active print where name="testclient"
}
# MIGRATION PHASE - Run during maintenance window
{
# Update PPPoE server to use new profile for new connections
/interface pppoe-server server set [find name=982] default-profile=982-migrate
# Force all clients to reconnect (will cause brief outage)
# /ppp active remove [find]
# Or disconnect clients gradually:
# :foreach i in=[/ppp active find] do={
# /ppp active remove $i
# :delay 1s
# }
}
# VERIFICATION COMMANDS
{
# Check active connections
:put "Active PPPoE connections by IP range:"
:put "Old range (100.64.32.x): $([:len [/ppp active find where address~"100.64.32"]])"
:put "Old range (100.64.33.x): $([:len [/ppp active find where address~"100.64.33"]])"
:put "Old range (100.64.34.x): $([:len [/ppp active find where address~"100.64.34"]])"
:put "Old range (100.64.35.x): $([:len [/ppp active find where address~"100.64.35"]])"
:put "New range (100.64.48-63.x): $([:len [/ppp active find where address~"100.64.[45][0-9]"]])"
}
# CLEANUP PHASE - Only run after ALL clients migrated
{
# Remove old configuration
# /ip address remove [find address="100.64.35.254/22"]
# /ip pool remove [find name=cgnat]
# /ppp profile remove [find name=982]
# Rename new items to standard names
# /ip pool set [find name=cgnat-new] name=cgnat comment="982 CGNAT pool /20"
# /ppp profile set [find name=982-migrate] name=982 comment=""
# /ip address set [find address="100.64.63.254/20"] comment="982 CGNAT gateway"
}
# ROLLBACK COMMANDS - If something goes wrong
{
# Revert PPPoE server to old profile
# /interface pppoe-server server set [find name=982] default-profile=982
# Remove new configuration
# /ip address remove [find address="100.64.63.254/20"]
# /ip pool remove [find name=cgnat-new]
# /ppp profile remove [find name=982-migrate]
}