Pergunta

Basicamente começou com a lula e os iptables hoje (o Google é seu amigo). Esse material vai ser a minha morte.

Tenho a configuração do Squid3 no Ubuntu 9.04 Server como proxy transparente. Funciona docemente quando eu uso a caixa proxy como meu gateway padrão etc. As regras iptable para essa configuração faziam parte do tutorial. : P

Infelizmente, não posso acessar sites HTTPS (como Gmail ou qualquer coisa na porta 443 basicamente). Isso ocorre porque a lula não gosta do que não pode armazenar em cache, que neste caso é o tráfego HTTPS.

Gostaria de adicionar uma regra iptable para que eu possa acessar basicamente sites HTTPS e usar o Skype. Basicamente, permita que esses tipos de tráfego passem sem passar por um proxy da lula? (ignorando por assim dizer)

Alguém talvez soubesse como fazer isso ou ter um link para quaisquer fontes que me ajudassem a descobrir isso?

Obrigada.

Foi útil?

Solução

Depois de realmente considerar mastigar meus próprios pulsos e sonhar com IPS a noite toda long + Força bruta Google/tentando qualquer coisa que eu pudesse colocar meus dedos digitais, consegui montar algo que realmente funciona. Não conheço as razões técnicas por que, se você pode fornecer explicações definidas, faça -o! : D

PS: Tudo na explicação é feito via linha de comando

PS: Esta não é uma solução final, mas está funcionando em resposta à minha própria pergunta.

Aqui está:

Etapa 1: teve que ativar o encaminhamento de IP na caixa:

vim /etc/sysctl.conf

// Encontre e descommentando o seguinte

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

Etapa 2: Adicione a regra de traseiro do loop (isso é mais para quando todas as portas são cobertas, aparentemente muitos aplicativos precisam dela?

iptables -I INPUT -i lo -j ACCEPT

Etapa 3. Adicione regras para o desvio da porta 443: (Eth1 é interface da Internet e xxxx/eth0 é interface LAN)

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

Etapa 4. Então, finalmente

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

Outras dicas

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

Isso esta errado. Significa que cada pacote TCP/UDP/etc O fato de você enviar da sua LAN estagiária para a Internet usará como IP de origem do IP privado da LAN (provavelmente 192.178.xx), em vez do IP público.

Pode ser que ajude você:

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

Para ignorar 443 seria suficiente com:

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

E se você é system/squid/firewall também é o roteador da sua rede para a internet, não se esqueça:

iptables -t nat -A POSTROUTING -o extern -j SNAT --to-source Public_external_IP

Para essas explicações ...

A etapa 1 configura a máquina como um roteador. Isso é necessário para qualquer máquina Linux que aceite ou encaminhe o tráfego IP destinado a outras máquinas que não sejam si. Sem isso, os níveis mais baixos da pilha de redes rejeitarão o tráfego e o NAT nem terá a chance de fazer suas coisas.

A etapa 2 não é relevante para o problema que está sendo perguntado. Pode ou não ser necessário para as operações do roteador não relacionadas ao proxy.

Etapa #3 permite que a porta do relé da máquina 443 normalmente como roteador. A regra pós -turista pode ser melhorada usando o Masquerade em vez do Snat.

Etapa 4 Ambas as linhas fazem a mesma coisa de maneiras diferentes. A primeira linha pode levá -lo a problemas no futuro, se você não souber quais são as diferenças entre o DNAT e o redirecionamento. Para simplificar, use apenas o redirecionamento.

Leitura http://wiki.squid-cache.org/configexamples/intercept/linuxDirect Poderia ter economizado muitos problemas.

Há também uma regra crítica da tabela de mangle ausente na sua configuração que é explicada nessa página do wiki.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top