Because it doesn’t negate.
If all you have is this:
/ip firewall filter add action=accept chain=input comment="vista login for winbox" disabled=no \
dst-address=101.0.1.1 dst-port=8291,80 protocol=tcp src-address=!101.0.1.0/24
then because there is an implicit permit at the end it’s functionally equivalent to this:
/ip firewall filter
add action=accept chain=input comment="vista login for winbox" disabled=no \
dst-address=101.0.1.1 dst-port=8291,80 protocol=tcp src-address=!101.0.1.0/24
add action=accept chain=input
That second line is there, but you can’t see it.
When 101.1.0.1/24 sends a packet to 101.0.1.1 it doesn’t match the first rule, then matches the second rule, and gets accepted.
If all you have is this:
/ip firewall filter
add action=drop chain=input comment="vista login for winbox" disabled=no dst-address=101.0.1.1 dst-port=8291,80 protocol=tcp src-address=101.0.1.0/24
then because there is an implicit permit at the end it’s functionally equivalent to this:
/ip firewall filter
add action=drop chain=input comment="vista login for winbox" disabled=no dst-address=101.0.1.1 dst-port=8291,80 protocol=tcp src-address=101.0.1.0/24
add action=accept chain=input
When 101.1.0.1/24 sends a packet to 101.0.1.1 it matches the first rule, and gets dropped.
That make sense now?
ok your new rule works and i understand it, so how do i block access to gui’s on 10.1.70(wan connection for mikrotik) and the 10.0.1.1 gui on the main router?
If you’re still trying to block traffic from 101.0.1.0/24 you don’t have to block anything towards 10.0.1.70 because that’s also in the ‘input’ chain, because it’s a router IP. So the rule I wrote out already blocks that.
To block 101.0.1.0/24 from accessing 10.0.1.1 you need to add a filter in the ‘forward’ chain:
/ip firewall filter
add chain=forward src-address=101.0.1.0/24 dst-address=10.0.1.1 action=drop