Linux как router (прозрачный proxy)

  • Вторая серия:


    8. Строим сквид.


    В squid.conf (в /etc/squid или где он там у тебя)
    ищем такие строчки и меняем (предварительно раскомментировав)
    на эти:



    http_port 3128
    cache_peer 192.168.0.1 parent 3128 3130 no-query
    acl dreamnet src 192.168.1.0/255.255.255.0
    http_access allow dreamnet
    http_access deny all


    httpd_accel_host virtual
    httpd_accel_port 80
    httpd_accel_with_proxy on
    httpd_accel_uses_host_header on


    На остальное можно забить и оставить по умолчанию.


    9. Запускаем:


    squid -Z (это только один раз для создания кэша)
    /etc/init.d/squid start


    проверяем как запустилось:
    ps -ax


    10. Заворачиваем http и ftp пакеты на сквид:


    #политика по умолчанию для таблицы filter
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT


    #политика по умолчанию для таблицы nat
    iptables -t nat -P PREROUTING ACCEPT
    iptables -t nat -P POSTROUTING ACCEPT
    iptables -t nat -P OUTPUT ACCEPT


    # очистка правил и цепочек (на всякий)
    iptables -t nat -F
    iptables -t nat -X


    # собственно редирект
    iptables -t nat -A PREROUTING -m tcp -p tcp -d ! 192.168.1.0/24 --dport 80 -j DNAT --to-destination 192.168.1.254:3128
    iptables -t nat -A PREROUTING -m tcp -p tcp -d ! 192.168.1.0/24 --dport 3128 -j DNAT --to-destination 192.168.1.254:3128
    iptables -t nat -A PREROUTING -m tcp -p tcp -d ! 192.168.1.0/24 --dport 8080 -j DNAT --to-destination 192.168.1.254:3128
    iptables -t nat -A PREROUTING -m tcp -p tcp -d ! 192.168.1.0/24 --dport 20 -j DNAT --to-destination 192.168.1.254:3128
    iptables -t nat -A PREROUTING -m tcp -p tcp -d ! 192.168.1.0/24 --dport 21 -j DNAT --to-destination 192.168.1.254:3128


    # для пущего:
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d ! 192.168.1.0/24 -j SNAT --to-source 192.168.0.5


    11. Пробуем как работает, ставим сквид в автозапуск,
    все что касается iptables - суем в скриптик и тоже в автозапуск.


    Вроде все.

  • brm
    спасибо за профессиональное и подробное описание


    ламерский вопрос - дриму для работы в режиме клиента ш@ры может
    понадобится доступ по tcp к серверу по портам c произвольным
    номером (скажем 3000) - можно его как-нибудь так же завернуть?


    и еще бывают ш@ры с udp..... а с udp как?


    и еще .... а что дриму в качестве адреса name-server предложите?
    может я не узрел и вы об этом говорили - тогда сорри....

    ламерское предложение : может на вдр какой нибудь днс-сервер
    заодно поднять ))))

  • Завернуть можно все что угодно, другое дело - сможет ли прокся это дело пробросить. Надо пробовать, курить доку на сквид на предмет метода CONNECT.
    UDP точно так же, правила аналогичные приведенным, вместо tcp указываем udp. По iptables в сети имеется великолепный труд "Iptables Tutorial", находится через любой поисковик.
    Для более тяжелых случаев - LARTC, Linux Advanced Routing and Traffic Control (лежало где-то на opennet.ru).


    По name-серверу, сорри, провтыкал. Логично было бы на VDR впихнуть.


    Ставим bind:
    apt-get install named


    и конфигуряем как простой кэширующий днс-сервер


    /etc/named.conf
    ----------------------------------------------------------------
    options {
    directory "/var/named";
    query-source address * port 53;
    // auth-nxdomain no;
    // recursion no;
    allow-query { any; };
    forward only;
    forwarders port 53 { X.X.X.X; Y.Y.Y.Y; Z.Z.Z.Z; A.A.A.A; };
    // ^^^^^^^^^ это IP желаемых серверов в мире, к которым перенаправляются запросы.
    };


    logging {
    category lame-servers {null;};
    };
    //
    // a caching only nameserver config
    //
    controls {
    inet 127.0.0.1 allow { localhost; } keys { rndckey; };
    };
    zone "." IN {
    type hint;
    file "named.ca";
    };


    zone "localhost" IN {
    type master;
    file "localhost.zone";
    allow-update { none; };
    };


    include "/etc/rndc.key";
    ------------------------------------------------------------


    /etc/init.d/named start


    где-то так....

  • совместными усилиями вы меня продвигаете к установке вдр ))))


    очередная бредовая идея от Куража:
    может спецы ответят еще на один специфичный вопрос - существует ли
    какая-то возможность сменить сетевому интерфейсу аппаратный адрес?


    поясню - имею кабельный инет с прописанным у прова аппаратным адресом
    подключенного к нему интерфейса - сетевой карты компа.....
    когда я поставил рутер - я в нем просто заменил аппаратный адрес на
    тот что прописан в договоре - благо рутеры д-линк позволяют
    делать такие фокусы.... так вот - если я задумаю вдр превратить в
    рутер - есть ли такие возможности - может есть такие сетевые карты
    которые позволяют менять mac адрес?

  • ifconfig ethX hw ether AA:BB:CC:_D:EE:FF

  • Исходный код
    # ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx


    спасиб free-x - не подозревал что это так просто .....

  • В связи с отключениями света вторая серия затянулась


    как DNS сервер пытался оставить 192.168.0.1
    дрим выдает чтото типа не определяется имя


    начал попытки установить DNS сервер
    он установился командой:
    apt-get install bind


    я так понял что в моем случае надо все расписать по двум файлам


    named.conf. и named.conf.options


    разобратся самому не получается

    Файлы

    • named.conf

      (1.09 kB, скачали 7 раз, последнее скачивание: )
  • Выше глянь, там готовый named.conf, только вместо Х.Х.Х.Х....... поставишь IP живых днс-серверов в мире (можно один, можно несколько). Больше ничего не надо.
    Как вариант: укажи дриму тот днс-сервер, на который смотрит винда (правда в этом случае днс-запросы будут идти по твоему "дорогому" каналу).

  • /etc/init.d/squid start


    проверяем как запустилось:
    ps -ax


    видим строку:
    /usr/sbin/squid -D -sYC


    уще раз:
    ps -ax


    /usr/sbin/squid -D -sYC строки нет


    так и должнобыть?

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем VladimirS ().

  • Цитата

    Со слов пользователя brm
    У меня был когда-то 7000, там все без вопросов.


    плиз, какой имидж был тогда у тебя ?
    вообще , есть мнение, что дрим не умеет ходить через прокси, и способ


    export http_proxy="адрес.прокси:порт"
    export ftp_proxy="адрес.прокси:порт"


    тоже не срабатывает. В памяти твоей подробностей не осталось ?

  • кстати я вспомнил , нейтрино на 5620 мог ходить через прокси ,
    только на http и ftp конечно , каждый раз перед скачкой надо было настраивать , настройки не запоминались

  • нет не должно, стало быть сдыхает сквид.
    смотри в /var/log/messages на предмет сквида.

  • 2 Goga777: неправильное мнение. Dream - это компьютер, на котором стоит вполне вменяемая ося. Может конечно случиться что в конкретном иммидже этой возможности не будет, но не более того. У меня иммиджей юзалось немеряно (на 7000), преимущественно рудримы. Ядра там собраны - будьте нате... я туда даже iptables всовывал.

  • всё зависит от дизайна ПО...Я очень часто вспоминаю историю как в LinVDR скрипт debtool не мог ходить через прокси. тов. Гришенков тогда привёл кое как ето в действие. Если ПО не отзывается на переменные окружения то можно хоть колом чесать .... Может в нейтрино заложено это, а в Енигме лежит это трупом, кто знает, кто знает...

  • Jan 20 14:27:45 arvdr squid[4154]: Squid Parent: child process 4156 started
    Jan 20 14:27:46 arvdr squid[4154]: Squid Parent: child process 4156 exited due to signal 6
    Jan 20 14:27:49 arvdr squid[4154]: Squid Parent: child process 4159 started
    Jan 20 14:27:50 arvdr squid[4154]: Squid Parent: child process 4159 exited due to signal 6
    Jan 20 14:27:53 arvdr squid[4154]: Squid Parent: child process 4161 started
    Jan 20 14:27:54 arvdr squid[4154]: Squid Parent: child process 4161 exited due to signal 6
    Jan 20 14:27:57 arvdr squid[4154]: Squid Parent: child process 4163 started
    Jan 20 14:28:01 arvdr squid[4154]: Squid Parent: child process 4163 exited due to signal 6
    Jan 20 14:28:04 arvdr squid[4154]: Squid Parent: child process 4165 started
    Jan 20 14:28:05 arvdr squid[4154]: Squid Parent: child process 4165 exited due to signal 6

  • ищем в squid.conf строчку # debug_options ALL,1
    меняем на:
    debug_options ALL,9
    запускаем, смотрим в лог


    можно ручками попробовать позапускать
    squid -D