modified on 14 lip 2008 at 09:40 ••• 2 086 views

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.