How to force traffic from A to B via C

Hi. I have situation like this:

…A
C—D<
…B

C has the internet access. Right now, A wants to access http://www.google.com and C redirects it to B. Then A clicks “Go back” button on the page that will redirect it back to the internet. Doing so adds A’s IP do an address list on C to allow it normal access. But the thing is communication between A and B is not going through C. How can I force it?

My firewall entries on C:

/ip firewall mangle
add action=mark-connection chain=prerouting comment="1. Mark connection - show message" connection-state=new dst-port=80 new-connection-mark=komunikat protocol=tcp src-address-list=komunikat
add action=mark-connection chain=prerouting comment="2. Mark connection - didn't see the message yet" connection-mark=komunikat new-connection-mark=pokaz_komunikat src-address-list=!komunikat_odczytany



/ip firewall nat
add action=redirect chain=dstnat comment="3. Redirect" connection-mark=pokaz_komunikat disabled=yes dst-port=80 protocol=tcp to-ports=10499



/ip firewall filter
add action=add-src-to-address-list address-list=komunikat_odczytany address-list-timeout=6h chain=forward comment="4. Add for 6h - message read" dst-port=10500 protocol=tcp src-address-list=komunikat

I have web proxy enabled on port 10499, and 2 access rules:

add dst-address=192.168.1.3 local-port=10499
add action=deny local-port=10499 redirect-to=192.168.1.3

Above code works well if the B is outside local network(traffic goes via C)