Mikrotik Ppp Profile Script -

| Variable | Description | |----------|-------------| | $user | PPP username | | $caller-id | Remote endpoint address (for PPTP/L2TP, often client’s public IP) | | $interface | Interface name (e.g., <pppoe-out1> , <l2tp-in2> ) | | $local-address | Local IP assigned to the tunnel | | $remote-address | Remote IP assigned to the client | | $pool-name | IP pool used (if any) | Example 1: Auto Bandwidth Limiting for PPPoE Users Apply different bandwidth limits based on username pattern.

/queue simple remove [find name="queue-$user"] Add a route to client’s LAN behind a PPP client (useful for site-to-site VPN).

:if ([:find $user "vip"] = 0) do= /queue simple add name="queue-$user" target=$interface max-limit=100M/100M else= /queue simple add name="queue-$user" target=$interface max-limit=20M/5M mikrotik ppp profile script

:log info "PPP DOWN: $user disconnected from $interface" You can call external systems (e.g., RADIUS, webhook, billing server) using /tool fetch .

/ip firewall address-list remove [find list="ppp-active" address=$remote-address] Log user connections with timestamps. billing server) using /tool fetch .

/ip route remove [find comment="VPN route for $user"] Add the remote IP to an address list for firewall rules (e.g., allow only authenticated users).

/ip firewall address-list add address=$remote-address list="ppp-active" timeout=1d comment=$user mikrotik ppp profile script

:log info "PPP UP: $user logged in from $caller-id on $interface, remote IP $remote-address"

/ip route add dst-address=192.168.100.0/24 gateway=$remote-address comment="VPN route for $user"