Olá pessoal.
O que é necessário para implementar somente o roteamento de pacotes em um servidor linux utilizando iptables? Quais regras devem ser declaradas no script?
Olá pessoal.
O que é necessário para implementar somente o roteamento de pacotes em um servidor linux utilizando iptables? Quais regras devem ser declaradas no script?
echo "1" > /proc/sys/net/ipv4/ip_forward
Isso habilita o repasse de pacotes.
Já pra fazer nat usa-se o iptables, com a seguinte regra:
iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE
ethX - mude eth0 para a interface de rede usada para conexão com a internet.
Espero ter ajudado!
Algumas dúvidas:
Devo inicializar regras padrão?
Devo limpar as existentes (iptables -F)?
Qual a diferença de encaminhamento de pacotes para NAT?
depende das suas necessidades...
se houverem regras alguem as colocou la por algum motivo, concorda?
eu recomendo que voce as analise e deixe apenas as necessarias...
mas nao precisa limpar as regras preexistentes nao...
sobre encaminhamento e nat tem uma grandee diferenca...
digamos que encaminhamento é "oq o router faz se alguem da internet mandar algum pacote pra ele"... ele diz pra quem aquele pacote tem que ser entregue caso haja a regra...
já o NAT funciona totalmente ao contrario... ele recebe um pedido da sua rede e repassa pra internet... qdo a maquina remota responde, o roteador devolve a resposta pro micro que originou a conexao...
ou, alternativamente:
sysctl net.ipv4.ip_forward
para ver o valor atual, e
sysctl -w net.ipv4.ip_forward=1
para alterar para 1 (similar ao echo 1 > /proc/sys/net/ipv4/ip_forward)
assim, em algumas distros basta editar o /etc/sysctll.conf e colocar uma linha:
net.ipv4.ip_forward=1
o sysctl possui a vantagem de poder ser usado em sistemas que não possuem /proc (não é o caso do linux )
Fiz tudo como explicado e nada!
Pcs da minha rede interna não conseguem acessar a internet. Nem mesmo pingam.
Alguma outra sugestão?
mas nas estações vc configurou ip da mesma classe, máscara, dns, gateway etc...???
outra coisa, se for conexão adsl a regra fica:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
mas nas estações vc configurou ip da mesma classe, máscara, dns, gateway etc...???
R: Sim. Tudo está OK.
outra coisa, se for conexão adsl.
R: É conexão via eth1 (placa de rede), não ppp
Será que não tem nada a ver com o comando route?
Se o servidor está navegando normal. a tabela de roteamento provavelmente está correta tbm.
Talvez ele tenha que adicionar regras de roteamento com o comando route sim. De uma olhada se do servidor ele está conseguindo pingar as máquinas clientes e cheque as configurações dos clientes.
Abraços!
De uma olhada se do servidor ele está conseguindo pingar as máquinas clientes
R: Sim. Pingo normalmente.
cheque as configurações dos clientes.
R: Os clientes estão configurados ok.
Vc ñ está confundindo as interfaces de rede na regra?
Se vc recebe o link pela eth1 deve usar a eth1 na regra, mas se a eth1 é usada na rede local vc deve usar a outra interface de rede na regra, como a eth0 por exemplo.
Exemplo, eu recebo uma conexão wireless na wlan0, então a regra que uso é:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Vc ñ está confundindo as interfaces de rede na regra?
R: Estou configurando p/ a eth1, que é a interface que acessa a internet
Até agora nada. Testei tudo e não obtive resultados.
poste suas regras :/
#Variaveis
ipt=/sbin/iptables
#Limpa regras atuais
$ipt -F
$ipt -t nat -F
#Habilita Encaminhamento IP
echo "1" > /proc/sys/net/ipv4/ip_forward
#Habilita NAT
$ipt -t nat -A POSTROUTING -o ethX -j MASQUERADE
#Reinicia
service iptables restart
Tem outro problema. Acho que não é iptables porque já tentei tanta coisa e nada. Alguma sugestão?
Opa, ethx não, é eth1 (interface da internet - 200.200.200.199)
a eth0 é da rede local (192.168.0.254)