derliang wrote:
拜請gfx神人,最...(恕刪)
derliang大您要的生成VpnBanIP列表。需防火牆Rule搭配:
/ip firewall filter
add action=accept chain=input comment=friends src-address-list=friends
add action=accept chain=input comment=mobile src-address-list=mobile
add action=drop chain=input comment=Outlanders connection-state=invalid,new \
in-interface=pppoe-out1 src-address-list=!temp src-address-type=!local
/ip firewall mangle
add action=accept chain=input comment="Local area network" src-address=192.168.0.0/16
add action=accept chain=input comment=friends src-address-list=friends
add action=accept chain=input comment=mobile src-address-list=mobile
add action=jump chain=input comment="vpn point" connection-state=new dst-port=1723,443,1194 \
jump-target=vpn-point protocol=tcp src-address-list=!temp
add action=jump chain=input connection-state=new dst-port=1701,500,4500 \
jump-target=vpn-point protocol=udp src-address-list=!temp
add action=add-src-to-address-list address-list=temp address-list-timeout=16m chain=vpn-point \
src-address-list=!Scanners
/ip firewall raw
add action=accept chain=prerouting comment=friends src-address-list=friends
add action=drop chain=prerouting comment=Scanners src-address-list=Scanners
/ppp profile
:if ([/interface get $interface type]~"in") do={
:do {/ip firewall address-list add list=mobile address=$"caller-id" timeout=1d} on-error={}
:do {/ip firewall address-list remove [find list~"(temp|Scanners)" address=$"caller-id" dynamic]} on-error={}
}
/ppp secret

/system scheduler 新增:
:global vpn
:if ([:typeof $vpn]!="num") do={:set vpn 0}
:local total [/ip firewall mangle get [find chain=vpn-point action=add-src-to-address-list] byte]
:if ($vpn!=$total) do={:set vpn $total ; /system script run vpn-server}
/system script 新增:
:global vpn
:local connected [/ip firewall address-list find list=temp dynamic]
:local scanners 0
:foreach i in=$connected do={
:if ([/ip firewall address-list get $i timeout]<0:1:0) do={
/ip firewall address-list add list=Scanners address=[get $i address] timeout=14d
/ip firewall address-list remove $i ; :set scanners ($scanners+1)
}
}
:if ([:len $connected]>$scanners) do={:set vpn ($vpn-1)}