Regras de NAT para acesso a 2º servidor
Minha rede está assim:
Internet --> Servidor Ubuntu ---> Switche ---> Micros + servidor DB
Esse servidor de DB eu gostaria de acessar ele de fora da empresa!
Ele tem instalado o PostgreSQL (Windows Server 2010 64 bits).
Ele possui duas placas de rede.
Uma com IP fixo na internet (187.7.131.xx) e outra com ip da rede interna (10.1.1.49).
Meu problema é colocar no firewall (firestarter) uma regra para que eu possa acessar o server de DB (postgreSQL porta 5432) além de poder usar conexão remota nele.
Gostaria de não utilizar o IP externo para isso (desconectar a placa externa), mas de utilizar NAT para ele para não ficar tão visível na net. Só que não tenho a mínima ideia de como fazer isso.
Poderiam me ajudar a solucionar esse problema?
Desde já agradeço a atenção de todos!
Re: Regras de NAT para acesso a 2º servidor
Bem como assim não ficar tão visivel?
Se vc quer acessar pelo teu ip fixo o BDServer vai ter q deixar visivel a internet..
A não ser que vc coloque o "kra" que vai conectar no seu DB na regra no caso de ele ser ip fixo tambem.. Mais basicamente seria:
iptables -t nat -A PREROUTING -d 187.7.131.xx -p tcp --dport 5432 -j DNAT --to <ip-do-servidor-do-banco>
isso ja deve resolver dependendo do seu firewall se as politicas estiverem setadas como ACCEPT..
[]'s
Re: Regras de NAT para acesso a 2º servidor
Eu coloquei isso, e não consigo acessar o servidor ainda.
Eu poderia usar essa regra sem a porta para ter acesso à ele (ping, ftp, arquivos)?
O que eu quis dizer com não ficar tão visível é não colocar um IP Fixo nele (eu possuo 8 IPs fixos).
Re: Regras de NAT para acesso a 2º servidor
Faz um iptables-save como root e posta aqui..
Re: Regras de NAT para acesso a 2º servidor
veja como esta sua configuracao pg_hba.conf no postgres, la deve constar a faixa de ip que o usuario esta utilizando para poder acessa-lo.
Re: Regras de NAT para acesso a 2º servidor
Todo e qualquer IP pode acessar meu banco de dados desde que tenha senha, não existe restrição de IP para ele no pg_hba.conf.
O resultado de iptables-save:
Código :
# Generated by iptables-save v1.4.4 on Mon Feb 28 18:06:02 2011
*nat
:PREROUTING ACCEPT [69744:5689006]
:OUTPUT ACCEPT [6008:408450]
:POSTROUTING ACCEPT [202:13915]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 1:6889 -j DNAT --to-destination 10.1.1.49:1-6889
-A PREROUTING -i eth0 -p udp -m udp --dport 1:6889 -j DNAT --to-destination 10.1.1.49:1-6889
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Feb 28 18:06:02 2011
# Generated by iptables-save v1.4.4 on Mon Feb 28 18:06:02 2011
*mangle
:PREROUTING ACCEPT [5984039:4880513965]
:INPUT ACCEPT [361412:474856775]
:FORWARD ACCEPT [5622576:4405635698]
:OUTPUT ACCEPT [247662:12111018]
:POSTROUTING ACCEPT [5870001:4417616648]
-A OUTPUT -p tcp -m tcp --dport 20:21 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 22 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 68 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 80 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 443 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 20:21 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 22 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 25 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 53 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 67 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 80 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 110 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 143 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 443 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 1812 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 1813 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 2401 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 8080 -j TOS --set-tos 0x08/0xff
-A OUTPUT -p tcp -m tcp --dport 22 -j TOS --set-tos 0x10/0xff
-A OUTPUT -p tcp -m tcp --dport 6000:6015 -j TOS --set-tos 0x08/0xff
COMMIT
# Completed on Mon Feb 28 18:06:02 2011
# Generated by iptables-save v1.4.4 on Mon Feb 28 18:06:02 2011
*filter
:INPUT DROP [1764:257172]
:FORWARD DROP [11:14700]
:OUTPUT DROP [0:0]
:INBOUND - [0:0]
:LOG_FILTER - [0:0]
:LSI - [0:0]
:LSO - [0:0]
:OUTBOUND - [0:0]
-A INPUT -s 201.10.120.2/32 -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -s 201.10.120.2/32 -p udp -j ACCEPT
-A INPUT -s 201.10.128.3/32 -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -s 201.10.128.3/32 -p udp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -m limit --limit 1/sec -j ACCEPT
-A INPUT -p udp -m udp --dport 33434 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 3/1 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 13 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 14 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 17 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 18 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 5 -m limit --limit 2/sec -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 4 -m limit --limit 2/sec -j ACCEPT
-A INPUT -p icmp -j LSI
-A INPUT -s 224.0.0.0/8 -j DROP
-A INPUT -d 224.0.0.0/8 -j DROP
-A INPUT -s 255.255.255.255/32 -j DROP
-A INPUT -d 0.0.0.0/32 -j DROP
-A INPUT -m state --state INVALID -j DROP
-A INPUT -f -m limit --limit 10/min -j LSI
-A INPUT -i eth0 -j INBOUND
-A INPUT -d 10.1.1.1/32 -i eth1 -j INBOUND
-A INPUT -d 187.7.131.36/32 -i eth1 -j INBOUND
-A INPUT -d 10.1.1.255/32 -i eth1 -j INBOUND
-A INPUT -j LOG_FILTER
-A INPUT -j LOG --log-prefix "Unknown Input" --log-level 6
-A INPUT -i eth1 -p tcp -m tcp --dport 5432 -j ACCEPT
-A FORWARD -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A FORWARD -p icmp -m icmp --icmp-type 0 -m limit --limit 1/sec -j ACCEPT
-A FORWARD -p udp -m udp --dport 33434 -j ACCEPT
-A FORWARD -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A FORWARD -p icmp -m icmp --icmp-type 3/1 -j ACCEPT
-A FORWARD -p icmp -m icmp --icmp-type 17 -j ACCEPT
-A FORWARD -p icmp -m icmp --icmp-type 18 -j ACCEPT
-A FORWARD -p icmp -m icmp --icmp-type 5 -m limit --limit 2/sec -j ACCEPT
-A FORWARD -p icmp -m icmp --icmp-type 4 -m limit --limit 2/sec -j ACCEPT
-A FORWARD -p icmp -j LSI
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -d 10.1.1.49/32 -i eth0 -p tcp -m tcp --dport 1:6889 -j ACCEPT
-A FORWARD -d 10.1.1.49/32 -i eth0 -p udp -m udp --dport 1:6889 -j ACCEPT
-A FORWARD -i eth1 -j OUTBOUND
-A FORWARD -d 10.1.1.0/24 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 10.1.1.0/24 -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j LOG_FILTER
-A FORWARD -j LOG --log-prefix "Unknown Forward" --log-level 6
-A OUTPUT -s 187.7.131.36/32 -d 201.10.120.2/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -s 187.7.131.36/32 -d 201.10.120.2/32 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -s 187.7.131.36/32 -d 201.10.128.3/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -s 187.7.131.36/32 -d 201.10.128.3/32 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -s 224.0.0.0/8 -j DROP
-A OUTPUT -d 224.0.0.0/8 -j DROP
-A OUTPUT -s 255.255.255.255/32 -j DROP
-A OUTPUT -d 0.0.0.0/32 -j DROP
-A OUTPUT -m state --state INVALID -j DROP
-A OUTPUT -o eth0 -j OUTBOUND
-A OUTPUT -o eth1 -j OUTBOUND
-A OUTPUT -j LOG_FILTER
-A OUTPUT -j LOG --log-prefix "Unknown Output" --log-level 6
-A INBOUND -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INBOUND -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INBOUND -s 10.1.1.0/24 -j ACCEPT
-A INBOUND -p tcp -m tcp --dport 22 -j ACCEPT
-A INBOUND -p udp -m udp --dport 22 -j ACCEPT
-A INBOUND -s 10.1.1.0/24 -p tcp -m tcp --dport 53 -j ACCEPT
-A INBOUND -s 10.1.1.0/24 -p udp -m udp --dport 53 -j ACCEPT
-A INBOUND -j LSI
-A LSI -j LOG_FILTER
-A LSI -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j LOG --log-prefix "Inbound " --log-level 6
-A LSI -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A LSI -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j LOG --log-prefix "Inbound " --log-level 6
-A LSI -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP
-A LSI -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j LOG --log-prefix "Inbound " --log-level 6
-A LSI -p icmp -m icmp --icmp-type 8 -j DROP
-A LSI -m limit --limit 5/sec -j LOG --log-prefix "Inbound " --log-level 6
-A LSI -j DROP
-A LSO -j LOG_FILTER
-A LSO -m limit --limit 5/sec -j LOG --log-prefix "Outbound " --log-level 6
-A LSO -j REJECT --reject-with icmp-port-unreachable
-A OUTBOUND -p icmp -j ACCEPT
-A OUTBOUND -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTBOUND -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTBOUND -j ACCEPT
COMMIT
# Completed on Mon Feb 28 18:06:02 2011
Pelo jeito você conhece PG. No meu micro eu tenho uma base de dados de teste. Só que para acessá-la eu tenho que desligar o Firewall do windows. Mesmo que eu libere a porta 5432 ele não acessa. Saberia me dizer o que mais eu tenho que liberar?
Obrigado pela sua paciência!
Re: Regras de NAT para acesso a 2º servidor
add essa regra no seu firewall de onde ta saindo a conexao
iptables -A FORWARD -o Placa-de-rede-internet -p TCP --dport 5432 -j ACCEPT
Como seu server esta em outra maquina vc devera fazer um redirecionamento até ela.
colocar a configuracao no servidor de firewall onde esta o banco.
### libera acesso ao Postgres PORTA 5432
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -i $NET --dport 5432 -j DNAT --to ipdoservidordebanco
iptables -t nat -A POSTROUTING -d ipdoservidordebanco -j SNAT --to ipdofirewall
Qual ao firewall do windows tem que colocar nas excecoes, add programa.
Re: Regras de NAT para acesso a 2º servidor
Inseri o comando e continuo sem conseguir acessar o PG via IP externo.
:(
Re: Regras de NAT para acesso a 2º servidor
O PG está num servidor Windows Server 2008.
Os comandos
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -i $NET --dport 5432 -j DNAT --to ipdoservidordebanco
iptables -t nat -A POSTROUTING -d ipdoservidordebanco -j SNAT --to ipdofirewall
dever ser no meu server de internet (linux)?
Re: Regras de NAT para acesso a 2º servidor
o comando
iptables -t nat -A PREROUTING -p tcp -i $NET --dport 5432 -j DNAT --to ipdoservidordebanco
dá erro de argumento no --dport 5432
Re: Regras de NAT para acesso a 2º servidor
esse comando deve ser executado no seu servidor linux que esta na rede onde se encontrar o servidor windows
ele vai pegar os pacotes direcionados a porta 5432 e redirecionar ao seu servidor de BD.
quanto ao $NET é a placa de rede no meu caso a (eth0) onde esta ligado o cabo do modem adsl..
Troca a onde esta $NET pela sua placa de rede (eth0, eth1, eth2, etc...)
Re: Regras de NAT para acesso a 2º servidor
Obrigado pla resposta e pela paciência.
Fiz e refiz as linhas que vc especificou.
Agora estou tentando conectar com o banco através do meu IP externo (187.7.131.36) para ser redirecionado para meu IP interno (10.1.1.49). Mas a conexão é recusada!
Tem amis alguma idéia do que posso fazer?
Re: Regras de NAT para acesso a 2º servidor
Como que ta configurado teu modem??
Caso ele tenha suporte a DMZ deve ativa-lo e apontar para o ip interno no seu firewall
ex: IP externo (187.7.131.36) IP interno do firewall 10.1.1.253, que o firewal vai tratar sua requisicao
faz o seguinte "apaga" as suas configurações e coloca essa aqui.. .so para testar o acesso remoto, caso de certo, adapta ela no seu firewall
## INDICAR O INICIO/REINICIO DO FIREWALL
case $1 in
start|restart)
echo "Firewall - By SOWBRA"
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ipt_MASQUERADE
modprobe ipt_LOG
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -F
iptables -t nat -F
## COMPARTILHAR CONEXAO DE INTERNET
iptables -t nat -A POSTROUTING -o PLACADEREDEEXTERNA -j MASQUERADE
## ATIVAR ROTEAMENTO
echo "1" > /proc/sys/net/ipv4/ip_forward
## LIBERAR A PROPRIA MAQUINA LOOPBACK PARA ACESSO A INTERNET
iptables -A INPUT -i lo -j ACCEPT
### libera acesso ao Postgres PORTA 5432
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -i PLACADEREDEEXTERNA --dport 5432 -j DNAT --to ipdoservidordebanco
iptables -t nat -A POSTROUTING -d ipdoservidordebanco -j SNAT --to ipdofirewall
;;
stop)
echo "CUIDADO SUA MAQUINA ESTA SEM FIREWALL - ATENCAO!!!..."
;;
*)
echo "Digite start, restart ou stop para ativar/reativar/desativar"
exit 1
;;
esac
Qualquer duvida posta ai!!!!
Re: Regras de NAT para acesso a 2º servidor
Está ocorrendoo seguinte erro:
Código :
root@serverlinux:/tmp# ./firewall start
'/firewall: linha 2: erro de sintaxe próximo do `token' não esperado `in
'/firewall: linha 2: `case $1 in
Re: Regras de NAT para acesso a 2º servidor
Quanto ao modem não sei te dizer, é um modem da OI e não tenho acesso à ele!
Re: Regras de NAT para acesso a 2º servidor
Cola ai o que vc colocou no ./firewall
Quanto ao modem, ai que deve ta o pulo do gato sem acesso fica dificil saber... ele pode ta rejeitando sua conexao, qual o modelo dele? vc nao tem acesso pq?
Re: Regras de NAT para acesso a 2º servidor
Copiei e colei o que vc colocou, só alterei os itens em negrito:
Código :
## INDICAR O INICIO/REINICIO DO FIREWALL
case $1 in
start|restart)
echo "Firewall - By SOWBRA"
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ipt_MASQUERADE
modprobe ipt_LOG
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -F
iptables -t nat -F
## COMPARTILHAR CONEXAO DE INTERNET
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
## ATIVAR ROTEAMENTO
echo "1" > /proc/sys/net/ipv4/ip_forward
## LIBERAR A PROPRIA MAQUINA LOOPBACK PARA ACESSO A INTERNET
iptables -A INPUT -i lo -j ACCEPT
### libera acesso ao Postgres PORTA 5432
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 5432 -j DNAT --to 10.1.1.49
iptables -t nat -A POSTROUTING -d 10.1.1.49 -j SNAT --to 187.7.131.36
*
;;
stop)
echo "CUIDADO SUA MAQUINA ESTA SEM FIREWALL - ATENCAO!!!..."
;;
*)
echo "Digite start, restart ou stop para ativar/reativar/desativar"
exit 1
;;
esac
O modem não tenho acesso porque não sei a senha dele. Na verdade nem tentei ter acesso à ele!
Ele é um Digitel Netrouter 2G 3211.
Re: Regras de NAT para acesso a 2º servidor
da uma olhada se eh esse seu modem
ftp://ftp.digitel.com.br/NRX/205.1660.51-Z.pdf
vc vai ter que acessar ele e configurar uma rota de ip externo para o ip interno (firewall) sem isso nao tem como fazer o acesso externo.
Por padrao ele pode ta bloqueando as portas, tem q olhar diretinho o modem mesmo, senao vai ficar quebrando a cabeca no linux e o problema esta no modem.
Caso queira um modem de facil configuracao sugiro adquirir o thonson tg 508.
qual a distribuicao que vc usa do linux??
para editar o arquivo . firewall vc usou, ex:
vim /etc/init.d/firewall ?
depois deu as permissoes necessaria para que o arquivo torne-se executavel?
chmod +x /etc/init.d/firewall
????
Re: Regras de NAT para acesso a 2º servidor
Na verdade andei pesquisando e ligando pra OI. Eles NÃO me dão acesso ao modem!
Re: Regras de NAT para acesso a 2º servidor
Sim, dei a permissão para rodar ele!
Não gosto do vim! Me perco demais nas teclas de atalho dele!
Utilizo o JOE que tem as teclas de atalho do antigo wordstar que eu ainda lembro! hehehehehe
Sowbra, eu consigo acessar o windows remotamente, então não acho que o modem está bloqueando algo!
Mas consegui acesso à ele! Pessoal da OI não libera, mas deixa a senha e ID padrão nele!
Em NAT o modem tem:
STATUS PURGE
Em FIREWALL o modem tem:
Applying to:INPUT
POLICY ACCEPT
CLAMPTOMTU FALSE
Applying to:OUTPUT
POLICY ACCEPT
CLAMPTOMTU FALSE
Applying to:FORWARD
POLICY ACCEPT
CLAMPTOMTU FALSE
Applying to:QOS
STATUS PURGE