Squid + iptables: как мне разрешить https проходить и обходить Squid? - PullRequest
1 голос
/ 08 апреля 2010

В основном начал с Squid и iptables сегодня (гугл твой друг). Этот материал будет моей смертью.

У меня настроен Squid3 на сервере Ubuntu 9.04 в качестве Прозрачного Прокси. Он прекрасно работает, когда я использую прокси-сервер в качестве шлюза по умолчанию и т. Д. Правила iptable для этой настройки были частью учебника. : P

Я, к сожалению, не могу получить доступ к https-сайтам (таким как Gmail или что-либо еще на порту 443). Это потому, что Squid не нравится то, что он не может кэшировать, что в данном случае является трафиком https.

Я хотел бы добавить правило iptable, чтобы я мог в основном получать доступ к сайтам https и использовать Skype. В основном, разрешить прохождение этих типов трафика без прокси-сервера Squid? (в обход так сказать)

Кто-нибудь может знать, как это сделать, или иметь ссылку на какие-либо источники, которые помогут мне разобраться?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 09 апреля 2010

После того, как я на самом деле подумал о том, чтобы пережевывать мои собственные запястья и мечтать о IP-адресах всю ночь напролет + грубая сила, гуглящая / пытаясь НИЧЕГО, я мог взять свои цифровые пальцы, мне удалось собрать что-то, что действительно работает. Я не знаю технических причин, поэтому, если вы можете дать объяснения, пожалуйста, сделайте это! : D

PS: все в объяснении делается через командную строку

PS: это не окончательное решение, а рабочее в ответ на мой собственный вопрос.

Вот оно:

Шаг 1: Пришлось включить IP-пересылку на поле:

vim /etc/sysctl.conf

// найти и раскомментировать следующее

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=1

Шаг 2: Добавить правило обратной петли (это больше для случаев, когда все порты закрыты, очевидно, многим приложениям это нужно?

iptables -I INPUT -i lo -j ACCEPT

Шаг 3. Добавьте правила обхода порта 443: (eth1 - это интернет-интерфейс, а x.x.x.x / eth0 - это интерфейс локальной сети)

iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD -i eth0 -p tcp --dport 443 -j ACCEPT

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source x.x.x.x

Шаг 4. Затем, наконец, правила, делающие Squid прозрачным: (x.x.x.x - это IP интерфейса LAN)

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination x.x.x.x:3128

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
3 голосов
/ 27 сентября 2011
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source x.x.x.x

Это неправильно. Означает, что каждый пакет TCP/UDP/etc, который вы отправляете из своей локальной сети в Интернет, будет использовать в качестве SOURCE IP IP-адрес частной локальной сети (вероятно, 192.178.x.x) вместо общего IP-адреса.

Может быть, это поможет вам:

PREROUTING == DestinationNAT -> From Internet to Intern LAN

POSTROUTING == SourceNAT -> From Intern LAN to Internet


iptables -t nat -A PREROUTING -i intern -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i intern -p tcp --dport 3128 
iptables -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o extern -p tcp --dport 80
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i extern -p tcp --sport 80
iptables -A OUTPUT -j ACCEPT -m --state ESTABLISHED,RELATED -o intern -p tcp --sport 80

Для обхода 443 было бы достаточно:

iptables -I FORWARD -p tcp --dport 443 -j ACCEPT

И если ваш system/squid/firewall также является маршрутизатором от вашей сети к Интернету, не забудьте:

iptables -t nat -A POSTROUTING -o extern -j SNAT --to-source Public_external_IP
1 голос
/ 28 сентября 2016

За эти объяснения ...

шаг # 1 настраивает аппарат в качестве маршрутизатора. Это требуется для любой машины Linux, которая собирается принимать или пересылать IP-трафик, предназначенный для машин, отличных от себя. Без этого самые низкие уровни сетевого стека будут отклонять трафик, и NAT даже не получит возможности сделать свое дело.

шаг № 2 не имеет отношения к проблеме, о которой идет речь. Это может или не может быть необходимо для операций маршрутизатора, не связанных с прокси.

шаг # 3 позволяет машине ретранслировать порт 443 как маршрутизатор. Правило POSTROUTING можно улучшить, используя MASQUERADE вместо SNAT.

шаг # 4 обе строки делают одно и то же по-разному. Первая строка может привести к проблемам в будущем, если вы не знаете, в чем разница между DNAT и REDIRECT. Для простоты используйте только REDIRECT.

Чтение http://wiki.squid -cache.org / ConfigExamples / Intercept / LinuxRedirect могло бы избавить вас от многих проблем.

В вашей настройке также отсутствует правило критической таблицы искажения, которое объясняется на этой вики-странице.

...