Sua tarefa é muito simples!!!
E aí cara BLZ... Meu sua dúvida é bem simples de ser respondida, porém você deve, eu disse deve issu mesmo heheh... Então você tem que entender como funciona o NAT "Tradutor de endereços de rede", bom vou sugerir um senário para podermos entender o processo --> :
Rede A possue endereço 192.168.1.0/24
Rede B possue endereço 172.16.0.0/16
A comunicação entre as duas redes está sendo feita através de roteamento entre 3 placas de rede:
eth0 está ligada na Rede A 192.168.1.1
eth1 está ligada na Rede B 172.16.0.1
eth2 está ligada no seu "speedy, Link Frame-relay...."
Bom eu tenho um user na Rede A não pode trafegar entre o router de sua origen 192. 168.1.0/24 para rede de destino Rede B 172.16.0.0/16 o serviço de Openssh, cuja porta 22 do protocolo tcp certo!
*Primeiro: Ao montar uma estrutura de rede, onde haverá comunicação entre duas redes, ou seja, trafego de Rede A para Rede B e vice-versa, você admin, tem que analizar quais serviços serão disponibilizados para sua Rede! Por exemplo, nossa rede somente uitilizara os serviços de http (port 80), Openssh (port 22) e Mail básico (pop port 110 ) e (smtp port 25)!
Sendo assim só irei traduzir "NAT" os serviços necessários para minha rede, ou seja, ao configurar o nat somente traduza "NAT" as portas e protocolos que você realmente necessita, previnindo futuros problemas de invasão, pois não tem lógica você liberar um serviço sendo que o mesmo não será utilizado, concorda? !
Se você utilizar essa linha:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE --> Simplesmente você está liberando o acesso, ou melhor, traduzindo para sua rede interna todos os serviços que for solicitado para o router, perigoso né!!!
Bom libenrando somente os serviços desejado fica assim:
Vou declarar algumas variavés para facilitar o script ok!
#!/bin/bash
# Var's
RedeA=192.168.1.0/24
RedeB=172.16.0.0/16
fulano=192.168.1.10
ciclano=172.16.0.100
routerA=192.168.1.1
routerB=172.16.0.1
http=80
ssh=22
pop=110
smtp=25
# Ativando roteamento entre placas de rede
echo 1 > /proc/sys/net/ipv4/ip_forward
*Dica: No conectiva Linux 8 repita essa linha no minimo 3 vezes, pois não sei por que diabos ele não ativa o ip_forward carregando somente uma vez o arquivo, sacou!!! :lol:
#Traduzindo serviços para rede A :[NAT]
iptables -t nat -A POSTROUTING -d $RedeA -p tcp --dport $ssh -j MASQUERADE
iptables -t nat -A POSTROUTING -d $RedeA -p tcp --dport $http -j MASQUERADE
iptables -t nat -A POSTROUTING -d $RedeA -p tcp --dport $pop -j MASQUERADE
iptables -t nat -A POSTROUTING -d $RedeA -p tcp --dport $smtp -j MASQUERADE
#Traduzindo serviços para rede B :[NAT]
iptables -t nat -A POSTROUTING -d $RedeB -p tcp --dport $ssh -j MASQUERADE
iptables -t nat -A POSTROUTING -d $RedeB -p tcp --dport $http -j MASQUERADE
iptables -t nat -A POSTROUTING -d $RedeB -p tcp --dport $pop -j MASQUERADE
iptables -t nat -A POSTROUTING -d $RedeB -p tcp --dport $smtp -j MASQUERADE
# Agora eu vou inpedir o Fulano de acessar o micro do Ciclano através do serviço Openssh:[FORWARD]
iptables -A FORWARD -s $fulano -d $ciclano -p tcp --dport $ssh -j DROP
# Cara o que acabou de ser declarado no iptables foi o seguinte:
Bom você deve saber que o gateway do fulano é o router né, ou seja, a porta de saída para fulano é 192.168.1.1 o router certo! Bom você requisitou um serviço de ssh cuja porta é 22 usando o protocolo tcp certo;
Bom ao requisitar qualquer serviço de outras redes e até outros serviços que sua maquina não possue, o protocolo tcp/ip, ou melhor a pilha tcp, encaminha o pacote de sua requisição para o gateway, sendo o router 192.168.1.1, bom quando o router recebe o pacote, ele analiza e verifica que o endereço de destino não é o endereço dele, ou seja, não
foi para ele a requisição de ssh e sim para o ciclano, então ele verifica o endereço lógico do ciclano 172.16.0.100 e redireciona o pedido, ou seja, faz forwarding para o endereço de destino, por isso utilizamos a politica FORWARD para bloquear o acesso da maquina fulano para maquina ciclano, simples né heheh...! Pergunta, e se ao invés de declarar essa regra de "iptables" na politica FORWARD e declarasse na politica INPUT o fulano iria conseguir conectar no ciclano?
Não né, mais tem um problema, e se o fulano ao invés de querer conectar via Openssh no ciclano, ele quiser conectar no proprio router, ou até em qualquer outra maquina da rede, ele não iria conseguir, pois a politica INPUT, ou seja, toda requisição que o router recebe, seria negada, pois você estaria declanrando que não aceitaria nunca um pedido do fulano de porta 22 ssh, entendeu? espero que sim!!!
Bom meu caro amigo, espero ter ajudado seu inicio de aprendizado com nosso grande amigo iptables, e qualquer dúvida entre em contato no e-mail:
http://[email protected]<br />
...inus Torvalds.