Перенаправление трафика :http/s на SQUID

Discussion in 'Linux, Freebsd, *nix' started by demontager, 6 Jan 2011.

  1. demontager

    demontager New Member

    Joined:
    23 Jul 2009
    Messages:
    62
    Likes Received:
    2
    Reputations:
    0
    Мне очень нужно экономить трафик, так как стоит дорого (100$ за 5 GB). Поэтому пришла мысль попробывать часть используемого трафика пропускать через SQUID и как можно больше там его кешировать.
    Основное ограничение трафика уже настроено средствами IPTABLES и модуля QUOTA, при достижении лимита трафика, включается политика DROP и пакеты отбрасываются.
    Сеть такая: Инет идёт через 3G Router(192.168.1.1)- это wlan0, на нём запущен DHCP и DNS сервер. На целевой машине, т.е. этой, которая будет являтся роутером и ограничителем трафика, wlan0 имеет адресс 192.168.1.110(прописан статически, dns/gw 192.168.1.1). Второй интерфейс, это wlan1, который Инет не имеет(беспроводной, но это не столь важно), вот к нему, подсоединено несколько компьютеров, которым нужно ограничить трафик. Адресс wlan1 целевой машины(роутера)- 172.16.1.110 (dns и шлюз не прописаны). Далее, в качестве свитча в wlan1, выступает беспроводной роутер, который уже разветляет сеть и к которому подключены машины, которым надо ограничить Инет: 172.16.0.101 172.16.0.102 172.16.0.103..... ит.д.
    Code:
    #!/bin/bash
    #wlan0 has internet and wlan1 not
    #wlan0 192.168.1.0
    #wlan1 172.16.0.0
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -t nat -F POSTROUTING
    iptables -t nat -F PREROUTING
    iptables -t nat -F OUTPUT
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT
    
    # allow local loopback connections
    iptables -A INPUT -i lo -j ACCEPT
    
    # drop INVALID connections
    iptables -A INPUT   -m state --state INVALID -j DROP
    iptables -A OUTPUT  -m state --state INVALID -j DROP
    iptables -A FORWARD -m state --state INVALID -j DROP
    
    # allow all established and related
    iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    #allow pings
    iptables -A INPUT -p icmp -j ACCEPT
    #iptables -A FORWARD -p icmp -j ACCEPT
    
    #QUOTA for iPs in wlan1
    iptables -A FORWARD -s 172.16.1.101 -m quota --quota 3146000 -j ACCEPT
    iptables -A FORWARD -d 172.16.1.101 -m quota --quota 13636000 -j ACCEPT
    iptables -A FORWARD -s 172.16.1.102 -m quota --quota 3146000 -j ACCEPT
    iptables -A FORWARD -d 172.16.1.102 -m quota --quota 13636000 -j ACCEPT
    iptables -A FORWARD -s 172.16.1.103 -m quota --quota 3146000 -j ACCEPT
    iptables -A FORWARD -d 172.16.1.103 -m quota --quota 13636000 -j ACCEPT
    iptables -A FORWARD -s 172.16.1.104 -m quota --quota 3146000 -j ACCEPT
    iptables -A FORWARD -d 172.16.1.104 -m quota --quota 13636000 -j ACCEPT
    iptables -A FORWARD -s 172.16.1.105 -m quota --quota 3146000 -j ACCEPT
    iptables -A FORWARD -d 172.16.1.105 -m quota --quota 13636000 -j ACCEPT
    iptables -A FORWARD -s 172.16.1.113 -m quota --quota 104857600 -j ACCEPT
    iptables -A FORWARD -d 172.16.1.113 -m quota --quota 104857600 -j ACCEPT
    
    # log all other attempted out going connections
    iptables -A OUTPUT -o wlan0 -j LOG
    iptables -A FORWARD -j LOG
    
    # default is to DROP out-going connections
    
    # set up IP forwarding and nat
    iptables -t nat -A POSTROUTING -o wlan0 -j SNAT --to 192.168.1.110
    
    Теперь нужно настроить IPTABLES так, чтобы он пускал трафик с сети 172.16.0.0 через SQUID, я так полагаю что есть смысл кешировать только вебстраницы, а трафик типо от skype и icq можно пускать напрямую.
    Да, и хотелось бы сделать это так, чтобы не пришлось вмешиваться в настройку компьютеров в сети 172.16.0.0

    Вооьщем бился со SQUID, оказывается, трафик FORWARD не проходит в него:
    [​IMG]

    Мне нужно переделывать Квоты, думаю что через REDIRECT, но как ?
     
    #1 demontager, 6 Jan 2011
    Last edited: 11 Jan 2011