Servidor Web e Gateway juntos [RESOLVIDO]

1. Servidor Web e Gateway juntos [RESOLVIDO]

Maison K. Sakamoto
sneeps.ninja

(usa Debian)

Enviado em 28/05/2013 - 17:41h

Olá amigos preciso de uma ajuda para resolver a seguinte situação:
tenho um servidor debian assim:

eth0: 192.168.1.1 (rede interna)
eth1: 10.0.0.200 (uso para sair p/ internet de 15mb)
eth2: 189.58.100.148 (ip real) quero receber conexao http aqui(link dedicado 2mb)

tenho dois gateways o 10.0.0.1 e o 189.58.100.145
também tenho umas regras de iptables que direciona o squid ai também ta tudo certo essa parte navega na net de 15mb certinho.

o problema é que quando eu tenho acessar o site (189.58.100.145) ele nao responde, se eu colocar o ip 189.58.100.145 como gateway padrao dai funciona, mas o problema é que eu quero os usuarios da rede interna saindo na net de 15mb.

Deu p/ entender?

eu tinha anteriormente dois servidores linux, dai eu resolvia isso facil, colocava o apache e o link dedicado em um e o firewall com o squid no outro, mas quero tentar resolver tudo em uma única maquina será que é possivel?



  


2. Re: Servidor Web e Gateway juntos [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 28/05/2013 - 17:53h

As três placas de rede estão com IP fixo?

Deixa eu ver se entendi:
A eth0 responde pela rede interna;
A eth1 responde pelo link de 15 Mb (rede externa e é o gateway da rede interna);
A eth2 responde pelo Apache e está conectada em um link de 2 Mb e é por onde o site será acessado.

É isso?


3. Re: Servidor Web e Gateway juntos [RESOLVIDO]

Maison K. Sakamoto
sneeps.ninja

(usa Debian)

Enviado em 28/05/2013 - 18:05h

Buckminster escreveu:

As três placas de rede estão com IP fixo?

Deixa eu ver se entendi:
A eth0 responde pela rede interna;
A eth1 responde pelo link de 15 Mb (rede externa e é o gateway da rede interna);
A eth2 responde pelo Apache e está conectada em um link de 2 Mb e é por onde o site será acessado.

É isso?


perfeitamente!!
já tentei fazer uma regra:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 189.58.100.148:80
mas nao deu em nada de fora(rede externa ele nao ta nem pingando, mas aqui na rede interna sim)

se eu deixar só uma route default gateway (189.58.10.145) dai o site funciona e a rede interna para.


4. Re: Servidor Web e Gateway juntos [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 28/05/2013 - 18:15h

"eth0: 192.168.1.1 (rede interna)
eth1: 10.0.0.200 (uso para sair p/ internet de 15mb)
eth2: 189.58.100.148 (ip real) quero receber conexao http aqui(link dedicado 2mb)

tenho dois gateways o 10.0.0.1 e o 189.58.100.145"

O IP 10.0.0.1 é o que está fixo na eth1 e o 189.58.100.145 está fixo na eth2?

Se for isso você deve colocar o Apache para escutar na porta 8080 e fazer uma regra assim no iptables:

iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 8080 -j DNAT --to-destination 189.58.100.145:8080

Acredito que a eth1 está conectada em um modem/roteador e a eth2 em outro, você deve apontar o IP 189.58.100.145 no respectivo modem.

Para ter certeza, posta aqui teu iptables.


5. Re: Servidor Web e Gateway juntos [RESOLVIDO]

Maison K. Sakamoto
sneeps.ninja

(usa Debian)

Enviado em 28/05/2013 - 20:02h

Buckminster escreveu:

"eth0: 192.168.1.1 (rede interna)
eth1: 10.0.0.200 (uso para sair p/ internet de 15mb)
eth2: 189.58.100.148 (ip real) quero receber conexao http aqui(link dedicado 2mb)

tenho dois gateways o 10.0.0.1 e o 189.58.100.145"

O IP 10.0.0.1 é o que está fixo na eth1 e o 189.58.100.145 está fixo na eth2?

Se for isso você deve colocar o Apache para escutar na porta 8080 e fazer uma regra assim no iptables:

iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 8080 -j DNAT --to-destination 189.58.100.145:8080

Acredito que a eth1 está conectada em um modem/roteador e a eth2 em outro, você deve apontar o IP 189.58.100.145 no respectivo modem.

Para ter certeza, posta aqui teu iptables.


buck vou acessar o servidor lá da empresa e já te dou um retorno sobre essa regra

os ip's fixo dos modens esta correto o ip 189.58.100.145 é do link dedicado e o ip 189.58.100.148 é um ip válido então precisa apontar?(acho que nao)

só me tire uma duvida a porta 8080 porque? pode ser na padrao(80)?

bom vou lá e já te digo se deu certo


6. Re: Servidor Web e Gateway juntos [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 28/05/2013 - 20:14h

O tráfego da porta 80 está sendo direcionado para o Squid.

E seria bom então você fixar o IP 189.58.100.145 nas configurações do modem/roteador.

E coloca a porta 8080 como Safe_port no Squid para garantir e libera ela no iptables.

É o seguinte, a placa eth2 não deve ser gateway nem nada, somente deve ser a placa de rede que responderá pelo teu site, só isso.
Se você quiser fazer alguma proteção deverá fazer no iptables.

E esqueci de falar:
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 8080 -j DNAT --to-destination 189.58.100.145:8080 << essa regra deve ir ANTES da regra de redirecionamento para o Squid e ANTES da regra do compartilhamento.


7. Re: Servidor Web e Gateway juntos [RESOLVIDO]

Maison K. Sakamoto
sneeps.ninja

(usa Debian)

Enviado em 28/05/2013 - 20:41h

Buckminster escreveu:

O tráfego da porta 80 está sendo direcionado para o Squid.

E seria bom então você fixar o IP 189.58.100.145 nas configurações do modem/roteador.

E coloca a porta 8080 como Safe_port no Squid para garantir e libera ela no iptables.

É o seguinte, a placa eth2 não deve ser gateway nem nada, somente deve ser a placa de rede que responderá pelo teu site, só isso.
Se você quiser fazer alguma proteção deverá fazer no iptables.

E esqueci de falar:
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 8080 -j DNAT --to-destination 189.58.100.145:8080 << essa regra deve ir ANTES da regra de redirecionamento para o Squid e ANTES da regra do compartilhamento.


Seguinte Buck:
tenho um sistema web nesse servidor que requer o tomcat também...rsrsr e ele esta na porta 8080.

outra coisa a faixa ip 189.58.100.0 é tudo ip real(válido na internet) é fixo sim, mas eu quero que os usuarios saiam pela internet de 15mb (eth2) e quero que as pessoas que acessem o site acessem pelo ip real (189.58.100.148 eth1)
internamente os usuarios da minha rede interna podem acessar pelo ip da rede mesmo.
Comentei a regra que faz o redirect da porta 80 p/ ver se isso poderia ser o problema, mas mesmo assim ele nao pinga no ip real

vou mandar as minhas regras do iptables que estou usando:
#!/bin/bash
# Autor: Maison K. Sakamoto
# DOCUMENTACAO BASICA PARA USO DO IPTABLES
# -s = source : origem
# -d = destination : destino
# --sport = source-port : porta de origem
# --dport = destination-port : porta de destino
# -p = protocolo
# -j = Acao
# -A = adiciona regra no final da cadeia
# -F = apaga as regras da cadeia
# -X = apaga uma cadeia vazia
# -P = Configura a politica padrao da cadeia
# -i = input : especifica a interface de entrada do pacote.(valida em INPUT, PREROUTING e FORWARD)
# -o = output : especifica a interface de saida. (valida em OUTPUT,POSTROUTING E FORWARD
# -t = tabela : filter(padrao), nat(NAT-gera outras conexoes), mangle(permite alteracao nos pacotes, raw(rastreio)
# SNAT = realiza o NAT, alterando o endereco de origem do pacote
# MASQUERADE = Realiza o NAT, permite que a rede interna se comunique com a internet (VALIDO em POSTROUTING somente)


firewall_start(){

# Aceitar pacotes das redes ( -s=source origem | -d=destino )
iptables -A INPUT -s 189.58.100.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -d 189.58.100.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -d 192.168.1.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -d 10.0.0.0/255.255.255.0 -j ACCEPT

# SSH
iptables -A INPUT -p tcp --sport 22 -j ACCEPT

# MYSQL
iptables -A INPUT -p tcp --sport 3306 -j ACCEPT

# SVN - Versionamento do NetBeans
iptables -A INPUT -p tcp --sport 8443 -j ACCEPT

# HTTP para serem acessados neste servidor
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp --dport 80 -j MASQUERADE

# SERVIDOR WEB - para que esta maquina seja acessivel via internet
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 189.58.100.148:80
iptables -A FORWARD -d 189.58.100.148 -p tcp --dport 80 -j ACCEPT

# TERMINAL SERVICE
iptables -A INPUT -p tcp --dport 3389 -j ACCEPT

# Acessar o servidor 192.168.1.139 atraves do ts(porta 3389) via modem gvt
iptables -t nat -A PREROUTING -d 10.0.0.200 -p tcp --dport 3389 -j DNAT --to 192.168.1.139:3389
#subtituir a linha de cima com o codigo abaixo
iptables -t nat -A PREROUTING -d 189.58.100.148 -p tcp --dport 3389 -j DNAT --to 192.168.1.139:3389

# Rotear a rede externa(internet)
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth2 -j MASQUERADE

# SQUID
iptables -t nat -A PREROUTING -s 192.168.1.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -s 192.168.1.0/255.255.255.0 -p tcp --dport 443 -j REDIRECT --to-port 3128


##aceitar loopback
iptables -A INPUT -p TCP --syn -s 127.0.0.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

#BLOQUEIO DE QUALQUER OUTRA CONEXAO QUE NAO ESTEJA LISTADA ACIMA
iptables -A INPUT -p tcp --syn -j DROP

}

firewall_stop(){
iptables -F
iptables -t nat -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
}
case "$1" in
start)
echo -n "Inicializando Firewall: "
firewall_stop
firewall_start
echo "OK."
;;
stop)
echo -n "Encerrando Firewall: "
firewall_stop
;;
restart)
echo -n "Encerrando Firewall: "
firewall_stop
echo "OK."
echo -n "Iniciando Firewall: "
firewall_start
echo "OK."
;;
*)
echo "Uso: /etc/init.d/firewall {start|stop|restart)"
exit 1
;;
esac



8. Re: Servidor Web e Gateway juntos [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 28/05/2013 - 22:40h

sneeps.ninja escreveu:

Buckminster escreveu:

O tráfego da porta 80 está sendo direcionado para o Squid.

E seria bom então você fixar o IP 189.58.100.145 nas configurações do modem/roteador.

E coloca a porta 8080 como Safe_port no Squid para garantir e libera ela no iptables.

É o seguinte, a placa eth2 não deve ser gateway nem nada, somente deve ser a placa de rede que responderá pelo teu site, só isso.
Se você quiser fazer alguma proteção deverá fazer no iptables.

E esqueci de falar:
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 8080 -j DNAT --to-destination 189.58.100.145:8080 << essa regra deve ir ANTES da regra de redirecionamento para o Squid e ANTES da regra do compartilhamento.


"Seguinte Buck:
tenho um sistema web nesse servidor que requer o tomcat também...rsrsr e ele esta na porta 8080."

---Coloca o Tomcat ou o Apache em outra porta e aponta cada um para sua respectiva porta no iptables.

Espero que essa máquina tenha uma configuração de hardware robusta para aguentar esses serviços.

"outra coisa a faixa ip 189.58.100.0 é tudo ip real(válido na internet) é fixo sim, mas eu quero que os usuarios saiam pela internet de 15mb (eth2) e quero que as pessoas que acessem o site acessem pelo ip real (189.58.100.148 eth1)"

---Isso que você chama de IP real é o IP que você alugou da operadora, ou seja, é o IP do modem para a Internet, as pessoas irão acessar o site pela URL (www.algumacoisa.com.br), não interessa o IP para elas.
Esse IP 189.58.100.148 é o IP do modem e você não pode fixar ele na placa de rede do servidor.

internamente os usuarios da minha rede interna podem acessar pelo ip da rede mesmo.
Comentei a regra que faz o redirect da porta 80 p/ ver se isso poderia ser o problema, mas mesmo assim ele nao pinga no ip real

vou mandar as minhas regras do iptables que estou usando:
#!/bin/bash
# Autor: Maison K. Sakamoto
# DOCUMENTACAO BASICA PARA USO DO IPTABLES
# -s = source : origem
# -d = destination : destino
# --sport = source-port : porta de origem
# --dport = destination-port : porta de destino
# -p = protocolo
# -j = Acao
# -A = adiciona regra no final da cadeia
# -F = apaga as regras da cadeia
# -X = apaga uma cadeia vazia
# -P = Configura a politica padrao da cadeia
# -i = input : especifica a interface de entrada do pacote.(valida em INPUT, PREROUTING e FORWARD)
# -o = output : especifica a interface de saida. (valida em OUTPUT,POSTROUTING E FORWARD
# -t = tabela : filter(padrao), nat(NAT-gera outras conexoes), mangle(permite alteracao nos pacotes, raw(rastreio)
# SNAT = realiza o NAT, alterando o endereco de origem do pacote
# MASQUERADE = Realiza o NAT, permite que a rede interna se comunique com a internet (VALIDO em POSTROUTING somente)


firewall_start(){

# Aceitar pacotes das redes ( -s=source origem | -d=destino )
iptables -A INPUT -s 189.58.100.0/255.255.255.0 -j ACCEPT << essas 6 regras estão liberando tudo que vem das redes para o servidor, inclusive da Internet.
iptables -A INPUT -d 189.58.100.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -d 192.168.1.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -d 10.0.0.0/255.255.255.0 -j ACCEPT

# SSH
iptables -A INPUT -p tcp --sport 22 -j ACCEPT

# MYSQL
iptables -A INPUT -p tcp --sport 3306 -j ACCEPT

# SVN - Versionamento do NetBeans
iptables -A INPUT -p tcp --sport 8443 -j ACCEPT

# HTTP para serem acessados neste servidor
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp --dport 80 -j MASQUERADE << essa regra está compartilhando tudo com tudo, você tem dois links no mesmo servidor, não tem como dar certo; você deve acrescentar a ethx por onde entra o link de 15 Mb e deve usar SNAT (iptables -t nat -A POSTROUTING -o ethx -j SNAT --to-source xxx.xxx.xxx.xxx << aqui você coloca o IP que está fixo na placa de rede que entra o link de 15 Mb).

# SERVIDOR WEB - para que esta maquina seja acessivel via internet
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 189.58.100.148:80 << o servidor Web, pelo que você colocou antes, está na eth2, e também não adianta nada você colocar o IP do modem aqui; aqui vai o IP da placa de rede que responde pelo servidor Web. E essa regra deve ficar acima da regra anterior.

-----Olha só, a coisa é simples: tu tem 3 placas de rede, uma entra um link de 15 Mb, a outra deve sair esse link de 15 Mb para tua rede interna, a outra placa é a que responderá pelo servidor Web com o outro link.
Esquece por enquanto os IPs dos modens.

--- As máquinas se "acham" pelo IP. Você tem 3 placas de rede com um IP fixo em cada uma delas e cada uma responde por um ou mais serviços no servidor. Se tiver dois ou mais serviços saindo por uma mesma placa de rede daí cada um deve sair por uma porta diferente e cada porta só pode responder por um único serviço senão dá conflito.

iptables -A FORWARD -d 189.58.100.148 -p tcp --dport 80 -j ACCEPT

# TERMINAL SERVICE
iptables -A INPUT -p tcp --dport 3389 -j ACCEPT

# Acessar o servidor 192.168.1.139 atraves do ts(porta 3389) via modem gvt
iptables -t nat -A PREROUTING -d 10.0.0.200 -p tcp --dport 3389 -j DNAT --to 192.168.1.139:3389
#subtituir a linha de cima com o codigo abaixo
iptables -t nat -A PREROUTING -d 189.58.100.148 -p tcp --dport 3389 -j DNAT --to 192.168.1.139:3389

# Rotear a rede externa(internet)
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth2 -j MASQUERADE << aqui você está colocando a rede interna para sair pela eth2 que é a placa do Servidor Web e está fazendo MASQUERADE, não tem como dar certo isso.

--- Com IP fixo nas placas de rede NÃO se usa MASQUERADE, se usa SNAT para fazer o compartilhamento e você deve fazer o compartilhamento somente da placa de rede por onde entra o link de 15 Mb.
Raciocina como se o Servidor Web fosse uma máquina à parte, ou seja, ele está fisicamente junto nesse servidor, mas é um serviço à parte que vai responder pela placa de rede dele com o link dele.

---Se o Tomcat tem um serviço somente para a rede interna você deve apontar ele no iptables somente para a rede interna através da porta dele, seja a 8080 ou outra porta que você escolher.
Na escolha de outra porta você deve verificar qual porta tem disponível aí no teu servidor. Usa o nmap e veja se a porta 8081, por exemplo, está disponível.

Agora, para ficar bom mesmo, o ideal seria você colocar mais uma placa de rede para o Tomcat (se a placa-mãe desse servidor aceitar mais uma placa de rede).

# SQUID
iptables -t nat -A PREROUTING -s 192.168.1.0/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -s 192.168.1.0/255.255.255.0 -p tcp --dport 443 -j REDIRECT --to-port 3128


##aceitar loopback
iptables -A INPUT -p TCP --syn -s 127.0.0.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

#BLOQUEIO DE QUALQUER OUTRA CONEXAO QUE NAO ESTEJA LISTADA ACIMA
iptables -A INPUT -p tcp --syn -j DROP

}

firewall_stop(){
iptables -F
iptables -t nat -F
iptables -X
iptables -P INPUT ACCEPT << você está colocando todas as políticas como ACCEPT, ou seja, está tudo liberado.
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
}
case "$1" in
start)
echo -n "Inicializando Firewall: "
firewall_stop
firewall_start
echo "OK."
;;
stop)
echo -n "Encerrando Firewall: "
firewall_stop
;;
restart)
echo -n "Encerrando Firewall: "
firewall_stop
echo "OK."
echo -n "Iniciando Firewall: "
firewall_start
echo "OK."
;;
*)
echo "Uso: /etc/init.d/firewall {start|stop|restart)"
exit 1
;;
esac


Qualquer dúvida, posta aqui.




9. Re: Servidor Web e Gateway juntos [RESOLVIDO]

10. Re: Servidor Web e Gateway juntos [RESOLVIDO]

Estefanio Brunhara
stefaniobrunhara

(usa CentOS)

Enviado em 28/05/2013 - 23:59h

O saída para seu problema é iproute, + squid com tcp_outgoing_address. O iptables é a ultima coisa a se configurar.


11. Re: Servidor Web e Gateway juntos [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 29/05/2013 - 00:16h

Que nada. O iptables resolve o problema dele com folga.


12. Re: Servidor Web e Gateway juntos [RESOLVIDO]

Maison K. Sakamoto
sneeps.ninja

(usa Debian)

Enviado em 29/05/2013 - 07:27h

Buckminster escreveu:

Que nada. O iptables resolve o problema dele com folga.


Então na verdade eu já tinha ele funcionando assim só com o iptables, mas depois que colocaram o squid e mexido também nas regras do iptables parou de funcionar, e claro que não tenho uma cópia do arquivo quando estava funcionando... aff.

mas é por ai mesmo buck, eu hoje tirei esse servidor de produção e voltei com os dois servidores antigos, agora vou ficar com ele em laboratório p/ fazer funcionar denovo, porque a empresa não pode parar.

vou analisar o link do andre também e ver se da p/ resolver de outro jeito também... vou postando aqui os resultados obtidos ok.

Obrigado a todos pela ajuda.





01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts