Kolejkowanie z Maskaradą i Wewnętrzną bramką Web-Proxy
Z MikroTik Wiki
Spis treści |
Wprowadzenie
W tym artykule wyjaśnione zostanie jak stworzyć drzewo kolejkowania w RouterOS, które będzie umożliwiało zastosowanie Web-Proxy oraz Maskarady.
W wersji 2.9.x nie możliwe jest dowiedzenie się jaki ruch pochodzi od HIT a jaki od MISS z web-proxy. Niektórzy ludzie chcą stworzyć konfigurację, która dostracza dane cache'u z maksymalną możliwą prędkością w proxy ( ruch HIT). Innymi słowy, jeżeli już mamy żądane dane, ten proces nie podlega kolejkowaniu.
W wersji 3.0 możemy to zrobić używając modyfikacji nagłówka TOS w web-proxy. Możemy ustawić dowolną wartość TOS dla ruchu HIT i użyć jej jako parametr podczas markowania pakietów.
Proste ustawienie
Na początku ustawmy coś prostego. Używam maszyny z dwoma interfejsami sieciowymi:
admin@instaler] > in pr # NAME TYPE RX-RATE TX-RATE MTU 0 R public ether 0 0 1500 1 R lan wlan 0 0 1500
Tu są adresy dla każdego z intefejsów:
[admin@instaler] > ip ad pr Flags: X - disabled, I - invalid, D - dynamic # ADDRESS NETWORK BROADCAST INTERFACE 0 192.168.0.217/24 192.168.0.0 192.168.0.255 public 1 172.21.1.1/24 172.21.1.0 172.21.1.255 lan
Nie zapomnijmy o ustawieniu prezroczystego web-proxy. Ustawmy cache-hit-dscp: 4.
[admin@instaler] > ip proxy pr
enabled: yes
src-address: 0.0.0.0
port: 3128
parent-proxy: 0.0.0.0
parent-proxy-port: 0
cache-drive: system
cache-administrator: "webmaster"
max-cache-size: none
cache-on-disk: yes
maximal-client-connections: 600
maximal-server-connections: 600
max-fresh-time: 3d
serialize-connections: yes
cache-hit-dscp: 4
Firewall NAT
Stwórzmy dwie reguły NAT: Jedną dla maskarady, drugą dla przekierowania przezroczystego proxy.
[admin@instaler] ip firewall nat> pr
Flags: X - disabled, I - invalid, D - dynamic
0 chain=srcnat out-interface=public
src-address=172.21.1.0/24 action=masquerade
1 chain=dstnat in-interface=lan src-address=172.21.1.0/24
protocol=tcp dst-port=80 action=redirect to-ports=3128
Ustawienie Markowania Pakietów
To jest najważniejsza część.
Jeżeli chcemy stworzyć kolejkę dla ruchu HIT pochodzącego z web proxy, musimy stworzyć dla niego markowanie pakietów. Umieść tę regułę na początku konfiguracji markowania.
[admin@instaler] > ip firewall mangle print
Flags: X - disabled, I - invalid, D - dynamic
0 ;;; HIT TRAFFIC FROM PROXY
chain=output out-interface=lan
dscp=4 action=mark-packet
new-packet-mark=proxy-hit passthrough=no
Po stworzeniu kolejki dla ruchu w góre/w dół, musimy stworzyć 2 markowania pakietów. W tym przypadku użyjemy "test-up" dla ruchu "w górę" i "test-down" dla ruchu "w dół". Da ruchu w górę jest to w miarę proste. Potrzebna jest tylko jedna reguła wykorzystująca parametry SRC-ADRESS i IN-INTERFACE oraz łańcuch PREROUTING. Reguła numer 1.
Musimy stworzyć kilka reguł dla ruchu w dół. Ponieważ używamy maskarady, potrzebujemy markowania połączeń o nazwie "test-conn". Reguła numer 2.
Potem musimy stworzyć jeszcze dwie reguły. Jedną dla połączeń innych niż HTTP oraz bezpośrednich. Użyjemy forwadowania łańcucha. Reguła numer 3.
Druga reguła służy dla ruchu od web-proxy do klienta (ruch MISS). Używamy łańcucha OUTPUT dla ruchu skierowanego z procesów wewnętrznych do routera. Reguła numer 4.
Obie reguły (#3 i #4) nazwiemy "test-down".
Bądź świadom, że uwżywamy 'passthrough' tylko dla markowania połączeń (reguła numer 2).
[admin@instaler] > ip firewall mangle print
Flags: X - disabled, I - invalid, D - dynamic
1 ;;; UP TRAFFIC
chain=prerouting in-interface=lan
src-address=172.21.1.0/24 action=mark-packet
new-packet-mark=test-up passthrough=no
2 ;;; CONN-MARK
chain=forward src-address=172.21.1.0/24
action=mark-connection
new-connection-mark=test-conn passthrough=yes
3 ;;; DOWN-DIRECT CONNECTION
chain=forward in-interface=public
connection-mark=test-conn action=mark-packet
new-packet-mark=test-down passthrough=no
4 ;;; DOWN-VIA PROXY
chain=output out-interface=lan
dst-address=172.21.1.0/24 action=mark-packet
new-packet-mark=test-down passthrough=no
Ustawienie Drzewa Kolejkowania
Teraz pola na ustawienie drzewa kolejkowania. Potrzebna jest jedna reguła dla ruchu w dół i jedna dla ruchu w górę. Bądź ostrożny, gdy ustawiasz interfejs dla ruchu w dół. W naszym przypadku jest to "lan" dla interfejsu sieci lokalnej. Dla ruchu w górę użyjemy nazwy interfejsu "global-in".
[admin@instaler] > queue tree pr
Flags: X - disabled, I - invalid
0 name="downstream" parent=lan packet-mark=test-down
limit-at=32000 queue=default priority=8
max-limit=32000 burst-limit=0
burst-threshold=0 burst-time=0s
1 name="upstream" parent=global-in
packet-mark=test-up limit-at=32000
queue=default priority=8
max-limit=32000 burst-limit=0
burst-threshold=0 burst-time=0s
Mozesz użyć tego przykładu markowania pakietów lub PCQ.
