LinuxForum.Fans
Тема

СОНО через прокси squid

Автор: bigzom 40 сообщений 37588 просмотров
#329413
"pb13⇓" написал:
bigzom, показывай скрипт полностью.
полность скрипт
#!/bin/bash
# Тут в принципе может и не надо этого всего но не помеха вдруг какой модуль не подгружен или форвардинг не включен
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# Объявление переменных
export IPT="iptables"

# Интерфейс который смотрит в интернет
export WAN=eth0

# Локальная сеть
export LAN=eth1
export LAN_IP_RANGE=192.168.100.0/24

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено):
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN -o $LAN -j REJECT

# Маскарадинг
$IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE -j MASQUERADE

# Далее дано как пример открытие портов извне:
# **********************************************************************
# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT

# Открытие портов для торрентов (такие же указать в torrent-клиенте)
$IPT -A INPUT -i $WAN -p tcp -m multiport --ports 50100:51100 -j ACCEPT

# Открытие 443 порта
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT

# Открываем 80 порт для веб сайтов
$IPT -A INPUT -i $WAN -p all --dport 80 -j ACCEPT
# Открытие портов для игровых серверов
$IPT -A INPUT -i $WAN -p tcp --dport 27010:27030 -j ACCEPT
$IPT -A INPUT -i $WAN -p udp --dport 27010:27030 -j ACCEPT
# **********************************************************************
# Вывод информации о состоянии
$IPT -L
#329414

Открытие 443 порта, не хватает указания интерфейса.
и там где используется multiport нужно --dports, а не --ports

А вообще что-то я тут по правилам не догнал слегка...
Ну открыл ты порты на INPUT на $WAN и что дальше?
Зачем это делалось?

#329415
"pb13⇓" написал:
А вообще что-то я тут по правилам не догнал слегка...
Ну открыл ты порты на INPUT на $WAN и что дальше?
Зачем это делалось?

сам скрипт взят отсюда чуток подредактировал и поменял ppp0 на eth0

#329417

То ли у меня глаза замылены, то ли я туплю просто, но:

$IPT -A FORWARD -i $WAN -o $LAN -j REJECT
Форвардинг снаружи во внутрь запрещен,
а до этого идет правило разрешающее форвардинг NEW,ESTABLISHED,RELATED пакетов.
При этом не указано от куда куда форвардинг, т.е. по-умолчанию в обе стороны.

ИМХО, автор что-то перемудрил с написанием этого скрипта или мне просто надо отдохнуть.

Простейший маршрутизатор:
eth0 - Интернет
eth1 - 192.168.1.0/24

Показать

# Сбрасываем правила
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Всё, что не разрешено - запрещено
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Включаем маскарадинг
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Разрешим входящие соединения на маршрутизатор с внутренней сети (для управления)
iptables -A INPUT -i eth1 --source 192.168.1.0/24 --match state --state NEW,ESTABLISHED -j ACCEPT

# Разрешим маршрутизатору отвечать компьютерам во внутренней сети
iptables -A OUTPUT -o eth1 --destination 192.168.1.0/24 --match state --state NEW,ESTABLISHED -j ACCEPT

# Разрешим перенаправление пакетов из внутренней сети во внешнюю для установки соединений и установленных соединений
iptables -A FORWARD -i eth1 --source 192.168.1.0/24 --destination 0.0.0.0/0 --match state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Разрешим перенаправление пакетов из интернета во внутреннюю сеть только для установленных соединений:
iptables -A FORWARD -i eth0 --destination 192.168.1.0/24 --match state --state ESTABLISHED,RELATED -j ACCEPT
#329420

У тебя всего четыре строчки с опцией "--dport", а это значить проблему можно найти удалив все строчки с "--dport", и потом уже последовательно добавляя по одной строчке с опцией "--dport" и запуская скрипт /etc/firewall.sh можно определить какая строчка не нравится iptables.
Например вот твой кусок с этими опициями:
# **********************************************************************
# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
# Открытие портов для торрентов (такие же указать в torrent-клиенте)
$IPT -A INPUT -i $WAN -p tcp -m multiport --ports 50100:51100 -j ACCEPT
# Открытие 443 порта
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT
# Открываем 80 порт для веб сайтов
$IPT -A INPUT -i $WAN -p all --dport 80 -j ACCEPT
# Открытие портов для игровых серверов
$IPT -A INPUT -i $WAN -p tcp --dport 27010:27030 -j ACCEPT
$IPT -A INPUT -i $WAN -p udp --dport 27010:27030 -j ACCEPT
# **********************************************************************

Если хочешь, могу удаленно посмотреть твои настройки через TeamViewer, можно даже комп буха запустить и там уже СОНО проверить, как она выходит в Интернет.

#329519
"AlfaStriker⇓" написал:
У тебя всего четыре строчки с опцией "--dport", а это значить проблему можно найти удалив все строчки с "--dport", и потом уже последовательно добавляя по одной строчке с опцией "--dport"

так и сделал, все закоментил, потом по одной строчке подключал, жалоба на --dport появилась при открытии 80 порта,
скажите пожалуйста правильно я описал открытие портов для соно

#Открываем порты для СОНО
$IPT -A INPUT -i $WAN -p tcp -m multiport --dports 2809, 9100, 9401, 9402, 9403, 443, 9900, 9100:9110
#329520
"AlfaStriker⇓" написал:
У тебя всего четыре строчки с опцией "--dport", а это значить проблему можно найти удалив все строчки с "--dport", и потом уже последовательно добавляя по одной строчке с опцией "--dport"

так и сделал, все закоментил, потом по одной строчке подключал, жалоба на --dport появилась при открытии 80 порта,
скажите пожалуйста правильно я описал открытие портов для соно

#Открываем порты для СОНО
$IPT -A INPUT -i $WAN -p tcp -m multiport --dports 2809, 9100, 9401, 9402, 9403, 443, 9900, 9100:9110

извиняюсь, за дубль сообщения, инет подвис в итоге вышло 2 сообщения одинаковых, а кнопочки удалить сообщения что то не вижу

да и еще, лазил по гуглу, нашел такую ссылку так называемую генератор iptables, но как я уже говорил с английским очень туго у меня, искал подобный генератор на русском языке, но что то не могу найти - может кто знает где есть генератор на русском - буду очень благодарен. нашел еще руководство по iptables я конечно же буду его изучать,но это займет время, а скрипт мне нужен еще вчера, у меня работник сидит ждет пока я соно через наш прокси запущу

#329529

Если правило запустилось:

#Открываем порты для СОНО
$IPT -A INPUT -i $WAN -p tcp -m multiport --dports 2809, 9100, 9401, 9402, 9403, 443, 9900, 9100:9110 -j ACCEPT

И следовательно iptables не ругается, значить все в норме.

Но по моему ты не правильно описал правило, оно по идее должно быть таким:

$IPT -A FORWARD -i $LAN -o $WAN -s $LAN_IP_RANGE -p tcp -m multiport --dports 2809, 9100, 9401, 9402, 9403, 443, 9900, 9100:9110 -j ACCEPT

А верхнее твое правило открыло порты на самом сервере, то есть теперь на твоем сервере можно запустить СОНО и она будет работать ))).

У тебя оказывается вот такое правило есть:

$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

По идее СОНО, должно заработать через эту строчку в конфиге.

#329539
"AlfaStriker⇓" написал:
У тебя оказывается вот такое правило есть:

$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

По идее СОНО, должно заработать через эту строчку в конфиге.
я так понял, что благодаря этой строчке СОНО запуститься без открытия портов для нее. я закоментил в скрипте строчки где где открываются порты, запустил, скрипт запустился без ошибок, но СОНО все равно пишет что выхода в интернет нет, в настройках СОНО ничего не менял - кроме вкладки "прокси" там указал ip и порт своего сервера.

потом раскоментировал строчки

"AlfaStriker⇓" написал:
$IPT -A FORWARD -i $LAN -o $WAN -s $LAN_IP_RANGE -p tcp -m multiport --dports 2809, 9100, 9401, 9402, 9403, 443, 9900, 9100:9110
запускаю скрипт выдает

~# /etc/firewall.sh
iptables v1.4.8: invalid port/service `' specified
Try `iptables -h' or 'iptables --help' for more information.
#329541
"bigzom⇓" написал:
СОНО ничего не менял - кроме вкладки "прокси" там указал ip и порт своего сервера.

Какой порт ты там указал интересно?
У тебя же нет прокси-сервер... Это шлюз!
Все что тебе надо - это указать твой сервер, как основной шлюз в системе.
И ни какой настройки прокси тебе не нужно.

Срочно к прочтению: "Чем отличается прокси от шлюза."

#329548

Понял, в общем тебе надо так добавить правило:

text
$IPT -A FORWARD -i $LAN -o $WAN -s $LAN_IP_RANGE -p tcp -m multiport --dports 2809, 9100, 9401, 9402, 9403, 443, 9900, 9100:9110 -j ACCEPT

Это должно точно запустится.

#329559

"pb13⇓" написал:
Срочно к прочтению: "Чем отличается прокси от шлюза."
прочитал, осознал ошибку :)
шлюз указал. запускаю СОНО - Ошибка нет доступа в интернет.

"AlfaStriker⇓" написал:
$IPT -A FORWARD -i $LAN -o $WAN -s $LAN_IP_RANGE -p tcp -m multiport --dport 2809, 9100, 9401, 9402, 9403, 443, 9900, 9100:9110

Это должно точно запустится.
что то не хочет :'(
вот весь вывод после запуска скрипта
~# /etc/firewall.sh
iptables v1.4.8: invalid port/service `' specified
Try `iptables -h' or 'iptables --help' for more information.
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP all -- anywhere anywhere state INVALID
DROP tcp -- anywhere anywhere tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere multiport ports 50100:51100
ACCEPT tcp -- anywhere anywhere tcp dpt:https

Chain FORWARD (policy DROP)
target prot opt source destination
TCPMSS tcp -- anywhere anywhere tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
DROP all -- anywhere anywhere state INVALID
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable

Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
DROP tcp -- anywhere anywhere tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
root@ase-debian:~#

Господа! был бы очень признателен если есть у кого нибудь готовый скрипт с настроенной СОНО для моей оси, я бы переделал под себя и приступил к изучению iptables.

#329585

Я же тебе написал, дай удаленный доступ, посмотрим вместе.

#329626

"AlfaStriker⇓" написал:
Я же тебе написал, дай удаленный доступ, посмотрим вместе.
что мне для этого нужно сделать? написать пароль от рута? можно в аську постучусь ?
#329628

Запусти TeamViewer на своем компе, потом запусти SSH, если есть графическая среда, то возможно подключится через VNC, FreeNX и т.п.

#329631

"AlfaStriker⇓" написал:
Запусти TeamViewer на своем компе
запустил id 144 706 176, пароль - 7213
#329632

Вообще эти сообщения отправляют через личку).
Ну Вы даете господа.

#329637

ВСЕ! РЕШЕНО! Всем огромное спасибо, за помощь !

#329638

bigzom, правила хорошего тона обязывают написать в последнем посте
в чем была проблема и метод ее решения...
Хотя тут итак понятно, но на будущее стоит запомнить. :)

#329641

"pb13⇓" написал:
в чем была проблема и метод ее решения...
открытие портов для СОНО надо было написать так
text
$IPT -A FORWARD -i $LAN -o $WAN -s $LAN_IP_RANGE -p tcp -m multiport --dports 2809,9100,9401,9402,9403,443,9900,9100:9110 -j ACCEPT

и еще забыл про днс в настрйках сети
вот и все )

Войдите или зарегистрируйтесь, чтобы ответить.