Configurando squid-iptables-iproute [RESOLVIDO]

1. Configurando squid-iptables-iproute [RESOLVIDO]

José Sergio Sousa de Oliveira
sergio_sousa

(usa Ubuntu)

Enviado em 31/01/2014 - 14:46h

Bom pessoal do VOL, estou com um probleminha aqui no meu servidor proxy com squid, iptable e iproute, tenho um servidor com 3 placas de rede, onde em duas entra dois links, um adsl e outro um link dedicado, preciso que meu servidor receba esses 2 links e saia pela terceira placa, que é minha rede local. Sou iniciante no assunto, mais já consegui fazer um funcionar, está navegando certinho mais o outro que é o link dedicado, que vai servir só para acessar o sistema esse falta acessar e ai alguém pode mim ajudar?
Segue abaixo meu script de firewall.

Lembrando que esses IPS são fictícios.

# squid server IP
SQUID_SERVER="192.168.0.254"
# Acrescentou
GW_SERVER1="10.10.10.254"
GW_SERVER2="100.126.34.114"
# Interface connected to Internet LINK1
LINK1="eth0"
## Interface connected to Internet LINK2
# Acrescentou
LINK2="eth1"
# Interface connected to LAN
LAN_IN="eth2"
# Squid port
SQUID_PORT="3128"

flush_rules()
{
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -Z
}

add_rules()
{
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
#For win xp ftp client
modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p udp --dport 137 -j ACCEPT
iptables -A INPUT -p udp --dport 138 -j ACCEPT
iptables -A INPUT -p tcp --dport 139 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $LINK1 -m state --state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables --table nat --append POSTROUTING --out-interface $LINK1 -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# Acrescentou
iptables -t nat -A POSTROUTING -o $LINK1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o $LINK2 -j MASQUERADE
iptables -t mangle -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i $LAN_IN -p tcp --dport 443 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i $LAN_IN -p tcp --dport 25 -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -i $LAN_IN -p tcp --dport 110 -j MARK --set-mark 3
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# if it is same system
iptables -t nat -A PREROUTING -i $LINK1 -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
# Acrescentou
iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 3
iptables -t mangle -A OUTPUT -p tcp --dport 110 -j MARK --set-mark 3
ip rule add fwmark 2 table 20 prio 20
ip rule add fwmark 3 table 21 prio 20
ip route add default via $GW_SERVER1 dev $LINK1 table 20
ip route add default via $GW_SERVER2 dev $LINK2 table 21
ip route flush cache
# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP
}

case $1 in
start)
echo -n Starting Firewall...
add_rules
echo "Done"
;;
stop)
echo -n Stoping Firewall...
flush_rules
echo "Done"
;;
restart)
echo -n Restarting Firewall...
flush_rules
add_rules
echo "Done"
;;
status)
echo "============================ Firewall rules:"
iptables -L -n
echo "============================ Masquerade tables:"
iptables -t nat -L -n
echo "============================ Mangle table:"
iptables -t mangle -L -n
;;
*)
echo Usar: "$0 { status | start | stop | restart }"
;;
esac


  


2. Re: Configurando squid-iptables-iproute [RESOLVIDO]

Estefanio Brunhara
stefaniobrunhara

(usa CentOS)

Enviado em 31/01/2014 - 16:44h

Aqui na empresa onde trabalho tenho a mesma situação sua, um link de serviços e outra para navegação. Em uma situação como esta seria bom você adotar um firewall, como pfsense, endia, etc... etc... Se você esta precisando resolver o problema mais rápido. Aqui na empresa trabalhamos com o firewall-SH, é uma solução proprietária, gosto dele porque não engessa o servidor, ou seja, você pode instalar outros pacotes, que no meu caso aqui é firewall com asterisk.

Para você conseguir fazer isto funcionar, você criar tabelas de roteamento com ip route e definir no ip rule quem sai por onde.

Veja como é feito aqui

#RotasIpRoute start

### Criando tabela link1 ###
ip route add table link1 200.150.10.0/24 dev eth1 proto kernel scope link src 200.150.10.99
ip route add table link1 10.1.0.0/24 dev eth0 proto kernel scope link src 10.1.0.254
ip route add table link1 192.168.0.0/22 dev eth0 proto kernel scope link src 192.168.0.254

### Criando tabela link2 ###
ip route add table link2 10.2.0.0/24 dev eth2 proto kernel scope link src 10.2.0.254
ip route add table link2 10.1.0.0/24 dev eth0 proto kernel scope link src 10.1.0.254
ip route add table link2 192.168.0.0/22 dev eth0 proto kernel scope link src 192.168.0.254

### Criando tabela link1+link2=ambos ###
ip route add table ambos 200.150.10.0/24 dev eth1 proto kernel scope link src 200.150.10.99
ip route add table ambos 10.2.0.0/24 dev eth2 proto kernel scope link src 10.2.0.254
ip route add table ambos 10.1.0.0/24 dev eth0 proto kernel scope link src 10.1.0.254
ip route add table ambos 192.168.0.0/22 dev eth0 proto kernel scope link src 192.168.0.254

# ip route show table link1
200.150.10.0/24 dev eth1 proto kernel scope link src 200.150.10.99
10.1.0.0/24 dev eth0 proto kernel scope link src 10.1.0.254
192.168.0.0/22 dev eth0 proto kernel scope link src 192.168.0.254
default via 200.150.10.1 dev eth1

# ip route show table link2
10.2.0.0/24 dev eth2 proto kernel scope link src 10.2.0.254
10.1.0.0/24 dev eth0 proto kernel scope link src 10.1.0.254
192.168.0.0/22 dev eth0 proto kernel scope link src 192.168.0.254
default via 10.2.0.253 dev eth2

# ip route show table ambos
200.150.10.0/24 dev eth1 proto kernel scope link src 200.150.10.99
10.2.0.0/24 dev eth2 proto kernel scope link src 10.2.0.254
10.1.0.0/24 dev eth0 proto kernel scope link src 10.1.0.254
192.168.0.0/22 dev eth0 proto kernel scope link src 192.168.0.254
default
nexthop via 200.150.10.1 dev eth1 weight 6
nexthop via 10.2.0.253 dev eth2 weight 4


#ip rule
0: from all lookup local
32738: from 192.168.0.251 lookup link1
32739: from 192.168.0.250 lookup link1
32740: from 192.168.0.247 lookup link2
32741: from 192.168.1.253 lookup link2
32742: from 192.168.0.210 lookup link1
32734: from all fwmark 0x20 lookup link2
32735: from all fwmark 0x10 lookup link1
32747: from 192.168.1.19 lookup link2
32748: from 192.168.1.18 lookup link2
32749: from 192.168.0.17 lookup link2
32750: from 192.168.1.16 lookup link2
32751: from 192.168.1.15 lookup link2
32752: from 192.168.1.14 lookup link2
32753: from 192.168.1.13 lookup link2
32754: from 192.168.1.12 lookup link2
32755: from 192.168.1.11 lookup link2
32756: from 192.168.1.10 lookup link2
32757: from 192.168.1.9 lookup link2
32758: from 192.168.1.8 lookup link2
32759: from 192.168.1.7 lookup link2
32761: from 192.168.1.5 lookup link2
32762: from 192.168.1.4 lookup link2
32763: from 192.168.1.3 lookup link2
32764: from 192.168.1.2 lookup link2
32766: from all lookup main
32767: from all lookup default

Cortei um parte do comando do ip rule porque a lista é grande de mais kk




3. Dúvida

José Sergio Sousa de Oliveira
sergio_sousa

(usa Ubuntu)

Enviado em 03/02/2014 - 11:31h

Olá estefaniobrunha, Obrigado pela atenção, agora vem a questão, como sou novo nessas configurações, fiquei com uma dúvida. Esse script que você me passou eu acrescento no meu ou o meu não funciona.


4. Re: Configurando squid-iptables-iproute [RESOLVIDO]

Estefanio Brunhara
stefaniobrunhara

(usa CentOS)

Enviado em 03/02/2014 - 12:23h

isto ai não é um script, e o resultado dos comando do meu servidor. mas nada impede de você transforma isto em um script para sua realidade, ou seja, os ips são diferente.





Ficou faltando a criação da tabela, faca assim:

vim /etc/iproute2/rt_tables

#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
200 ambos
201 link1
202 link2

Veja eu adicionei as 3 ultima linhas


Eu gosto por questão de padronização colocar

eth0 = Lan
eth1 = Link1
eth2 = Link2

Link para fonte de conhecimento
http://www.rnp.br/newsgen/0201/roteamento_linux.html

Arruma uma maquina virtual que faço uma instalação do meu firewall para você usar ele como ponto de partida.








5. squid-iptable-iproute

José Sergio Sousa de Oliveira
sergio_sousa

(usa Ubuntu)

Enviado em 04/02/2014 - 16:44h

Boa tarde estefaniobrunha, se for possível manda para esse e-mail - js.sousa81@gmail.com o seu squid.conf o firewall pra eu ver se eu consigo adaptar aqui pra mim, pois já segui vários tuto e todos sem sucesso e já estão mim comendo o juizo em relação a isso, se poder mim ajudar nesse sentido agradeço.


6. Re: Configurando squid-iptables-iproute [RESOLVIDO]

Estefanio Brunhara
stefaniobrunhara

(usa CentOS)

Enviado em 05/02/2014 - 11:34h

meu firewall é feito em pascal, não tem script abertos como é na maiorias dos casos que discutimos aqui no fórum, mas estou enviando o email, caso você queria discutir o assunto pelo Skype, me adicione, brunhara(ARROBA)msn.com


7. Re: Configurando squid-iptables-iproute [RESOLVIDO]

Estefanio Brunhara
stefaniobrunhara

(usa CentOS)

Enviado em 07/02/2014 - 09:01h

veja se este link resolve seu problema!

http://gutocarvalho.net/octopress/2012/12/24/balanceando-saida-de-internet-no-linux/



8. squid-iptable-iproute

José Sergio Sousa de Oliveira
sergio_sousa

(usa Ubuntu)

Enviado em 08/02/2014 - 12:52h

Vou testar esse mais primeiro estou mim recuperando de uma labirintite. Assim que eu poder te respondo.


9. Configurando squid-iptables-iproute

José Sergio Sousa de Oliveira
sergio_sousa

(usa Ubuntu)

Enviado em 11/02/2014 - 11:37h

Olá Estefanio como está tudo bem. Cara vou ter que entrar em contato com você pelo skype. Estou como o problema ainda. Por sinal, muito bom o artigo do Gustavo. Mais devo está mim enrrolando em alguma coisa não sei simples ou complicada.

minha configuração de rede é a seguinte

iface eth0 inet static
address 10.10.10.1
netmask 255.255.255.0
network 10.10.10.0 Meu link VELOX
broadcast 10.10.10.255
gateway 10.10.10.254

iface eth1 inet static
address 10.16.7.200
netmask 255.255.255.0
broadcast 10.16.7.255 Meu link DEDICADO onde só vou acessar o sistema pelo endereço 172.44.6.144
network 10.16.7.0
gateway 10.16.7.254

iface eth2 inet static
address 192.168.0.254
netmask 255.255.255.0
broadcast 192.168.0.255 Minha rede local
network 192.168.0.0



10. Re: Configurando squid-iptables-iproute [RESOLVIDO]

Estefanio Brunhara
stefaniobrunhara

(usa CentOS)

Enviado em 11/02/2014 - 13:53h

Veja no link abaixo um exemplo do firewall básico para os 2 links, sugiro que você crie uma cenário simples para você pode entender como funcionar o ip rule e o ip route, ainda acho que você deviria padronizar eth0=Lan, eth1=Link1, eth2=Link2, fica mais fácil de ler os scripts principalmente quando eles estiverem maiores.

http://www.vivaolinux.com.br/topico/Cluster-1/Compartilhar-2-lins-de-Internet-com-debian-squeeze

Estou sempre no Skype, pela manhã, se precisar é só chamar.




11. Configurando squid-iptables-iproute

José Sergio Sousa de Oliveira
sergio_sousa

(usa Ubuntu)

Enviado em 11/02/2014 - 17:56h

Olá Estefâneo olha o que acontece quando pingo nos Gateway e depois no ip o qual acesso o sistema

Resultado do meu Ping
Ping no Gateway do link2
root@srvproxysicoob:~# ping 10.16.7.254
PING 10.16.7.254 (10.16.7.254) 56(84) bytes of data.
64 bytes from 10.16.7.254: icmp_req=1 ttl=255 time=0.471 ms
64 bytes from 10.16.7.254: icmp_req=2 ttl=255 time=0.405 ms
^C
--- 10.16.7.254 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.405/0.438/0.471/0.033 ms

Ping no Gateway do link1
root@srvproxysicoob:~# ping 10.10.10.254
PING 10.10.10.254 (10.10.10.254) 56(84) bytes of data.
64 bytes from 10.10.10.254: icmp_req=1 ttl=64 time=0.416 ms
64 bytes from 10.10.10.254: icmp_req=2 ttl=64 time=0.455 ms
64 bytes from 10.10.10.254: icmp_req=3 ttl=64 time=0.445 ms
^C
--- 10.10.10.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.416/0.438/0.455/0.029 ms

Ping no IP para acessar o Sistema
root@srvproxysicoob:~# ping 172.16.2.188
PING 172.16.2.188 (172.16.2.188) 56(84) bytes of data.
From 200.217.89.0 icmp_seq=1 Destination Net Unreachable
From 200.217.89.0 icmp_seq=2 Destination Net Unreachable
From 200.217.89.0 icmp_seq=3 Destination Net Unreachable
From 200.217.89.0 icmp_seq=4 Destination Net Unreachable



12. Re: Configurando squid-iptables-iproute [RESOLVIDO]

Estefanio Brunhara
stefaniobrunhara

(usa CentOS)

Enviado em 13/02/2014 - 11:26h

você chegou a criar as tabelas e lançou as rotas ?





01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts