Mephisto Posté(e) le 7 février 2010 Partager Posté(e) le 7 février 2010 Bonjour Je profite de ce beau week-end pour installer une gate, a laquelle je brancherai ma freebox en bridge. Je passe par dnsmasq pour le cote DNS/DHCP, marche au poil. Par contre, au niveau des redirections, je galere. Avant de tout casser, j'ai configurer deux machines ayant deux interfaces, pour qu'elles aient aussi acces a 10.0.0.0 (tout le reste du reseau etant sur 192.168.0.0) Pour mes tests, je veux pouvoir rediriger le traffic entrant sur ma gate par 10.0.0.250, sur un poste de 192.168.0.0, en fonction du port. Une fois que tout ca marchera, je verrai comment bridger la Fbox sur l'interface actuellement en 10.0.0.0 mon probleme: quand iptables est stop, ssh root@10.0.0.250 me log bien sur la gate une fois iptables lance, ssh root@10.0.0.250 devrait me rediriger sur 192.168.0.42, mais ssh mouline, il ne se passe rien, connection timeout. de meme, un telnet sur un port sence etre redirige ne donne rien. mon iptables.rules: *filter -P INPUT DROP -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -i eth0 -j ACCEPT -A INPUT -i eth1 -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -p igmp -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #-A INPUT -p tcp --dport 20 -j ACCEPT #-A INPUT -p tcp --dport 21 -j ACCEPT #-A INPUT -p tcp --dport ssh -j ACCEPT #-A INPUT -p tcp --dport 23 -j ACCEPT #-A INPUT -p tcp --dport domain -j ACCEPT #-A INPUT -p udp --dport domain -j ACCEPT #-A INPUT -p tcp --dport http -j ACCEPT #-A INPUT -p tcp --dport https -j ACCEPT #-A INPUT -p tcp --dport netbios-ssn -j ACCEPT #-A INPUT -p udp --dport netbios-ssn -j ACCEPT -A INPUT -p tcp --dport x11-1 -j ACCEPT -A INPUT -p udp --dport 1234 -j ACCEPT -A INPUT -p udp -d 224.0.0.251 --dport mdns -j ACCEPT -A INPUT -j LOG --log-prefix "malformated IPV4 packet " -A INPUT -j REJECT #un drop sera probablement mieux, une fois que je serai sur que tout marche COMMIT *nat :PREROUTING ACCEPT [13:1035] :POSTROUTING ACCEPT [5:516] :OUTPUT ACCEPT [12:966] #j'ai croise ces trois-la, je sais pas a quoi ca correspond... -A PREROUTING -i eth1 -p tcp --dport 20 -j DNAT --to 192.168.0.45 -A PREROUTING -i eth1 -p tcp --dport 21 -j DNAT --to 192.168.0.45 -A PREROUTING -i eth1 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.42:22 -A PREROUTING -i eth1 -p tcp --dport 23 -j DNAT --to 192.168.0.45 -A PREROUTING -i eth1 -p tcp --dport 139 -j DNAT --to 192.168.0.42 -A PREROUTING -i eth1 -p tcp --dport 445 -j DNAT --to 192.168.0.42 -A PREROUTING -i eth1 -p tcp --dport 3389 -j DNAT --to 192.168.0.42 -A POSTROUTING -o eth1 -j MASQUERADE #je tente --to et --to-destination, mais aucun des deux ne semble marcher COMMIT *mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o eth1 --clamp-mss-to-pmtu #parait que c'es mieux comme ca COMMIT C'est donc du script pompe sur google (principalement ici). Mais sur le principe, j'immagine que ca devrait fonctionner j'ai juste commente quelques "-A INPUT ....", en presumant qu'ils serait ignore par le nat s'ils sont deja pris en compte ailleurs mais dans ce cas comme dans l'autre, ca ne solutionne pas mon probleme. l'ipforwarding est active un fois iptables lance, j'ai les routes suivantes: [root@omega ~]# iptables -nvL Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 58 4628 ACCEPT all -- eth0 * 0.0.0.0/0 0.0.0.0/0 2 372 ACCEPT all -- eth1 * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT 2 -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.251 udp dpt:5353 0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix `malformated IPV4 packet ' 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 28 packets, 3552 bytes) pkts bytes target prot opt in out source destination [root@omega ~]# iptables -nL -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20 to:192.168.0.45 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 to:192.168.0.45 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 to:192.168.0.42:22 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:23 to:192.168.0.45 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:139 to:192.168.0.42 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:445 to:192.168.0.42 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3389 to:192.168.0.42 Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) target prot opt source destination quelqu'un voit ou je fais de la merde ? Merci pour votre aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 8 février 2010 Auteur Partager Posté(e) le 8 février 2010 J'ai egalement tente (j'en arrive au meme resultat) avec un script (plutot que toucher la conf du rc), comme presente sur le wiki archlinux: iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables --flush iptables -t nat --flush iptables -X iptables -N external iptables -N localnet iptables -A INPUT -p icmp -j ACCEPT iptables -A INPUT -i eth0 -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -j localnet iptables -A INPUT -j external iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset iptables -A INPUT -p UDP -j REJECT --reject-with icmp-port-unreachable iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT #iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP #iptables -A INPUT -f -j DROP #iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP #iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP iptables -A localnet -i lo -j ACCEPT iptables -A localnet -i eth0 -j ACCEPT iptables -A external -i eth1 -p tcp --dport 22 -j ACCEPT iptables -N fwexternal iptables -N fwlocalnet iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -j fwexternal iptables -A FORWARD -j fwlocalnet iptables -A FORWARD -j REJECT --reject-with icmp-host-unreachable iptables -P FORWARD DROP iptables -A fwlocalnet -i lo -j ACCEPT iptables -A fwlocalnet -i eth0 -j ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth1 -j MASQUERADE iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 22 -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 22 -j ACCEPT iptables -A fwexternal -d 192.168.0.42 -p tcp --dport 22 -j ACCEPT iptables -t nat -A PREROUTING -t nat -p tcp -i eth1 --dport 22 -j DNAT --to 192.168.0.42 dans les deux cas, je lance - un tcpdump sur eth1 (itf publique sur la gate) - un tcpdump sur eth0 (itf ciblé par la redirection sur le serv ssh) le résultat: #SUR LA GATE tcpdump -i eth0 -ln -n port 22 | grep -v '\.42\.40051' 10:51 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 10:54:05.734703 IP 10.0.0.42.33631 > 192.168.0.42.22: Flags [S], seq 3248074688, win 5840, options [mss 1460,sackOK,TS val 14978768 ecr 0], length 0 10:54:08.731020 IP 10.0.0.42.33631 > 192.168.0.42.22: Flags [S], seq 3248074688, win 5840, options [mss 1460,sackOK,TS val 14979668 ecr 0], length 0 10:54:14.734423 IP 10.0.0.42.33631 > 192.168.0.42.22: Flags [S], seq 3248074688, win 5840, options [mss 1460,sackOK,TS val 14981468 ecr 0], length 0 # SUR LE SERV SSH tcpdump -i eth1 -nl -n port 22 | grep -v '62\.100' 10:51 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes 10:54:09.301121 IP 10.0.0.42.33631 > 192.168.0.42.22: Flags [S], seq 3248074688, win 5840, options [mss 1460,sackOK,TS val 14978768 ecr 0], length 0 10:54:09.303660 IP 192.168.0.250.22 > 192.168.0.42.40051: Flags [P.], ack 4002601273, win 18216, options [nop,nop,TS val 20932459 ecr 14977404], length 192 10:54:09.303668 IP 192.168.0.42.40051 > 192.168.0.250.22: Flags [.], ack 192, win 62712, options [nop,nop,TS val 14978769 ecr 20932459], length 0 10:54:12.297570 IP 10.0.0.42.33631 > 192.168.0.42.22: Flags [S], seq 3248074688, win 5840, options [mss 1460,sackOK,TS val 14979668 ecr 0], length 0 10:54:12.300471 IP 192.168.0.250.22 > 192.168.0.42.40051: Flags [P.], ack 1, win 18216, options [nop,nop,TS val 20933358 ecr 14978769], length 192 10:54:12.300479 IP 192.168.0.42.40051 > 192.168.0.250.22: Flags [.], ack 384, win 62712, options [nop,nop,TS val 14979668 ecr 20933358], length 0 10:54:18.301245 IP 10.0.0.42.33631 > 192.168.0.42.22: Flags [S], seq 3248074688, win 5840, options [mss 1460,sackOK,TS val 14981468 ecr 0], length 0 10:54:18.304090 IP 192.168.0.250.22 > 192.168.0.42.40051: Flags [P.], ack 1, win 18216, options [nop,nop,TS val 20935159 ecr 14979668], length 192 10:54:18.304094 IP 192.168.0.42.40051 > 192.168.0.250.22: Flags [.], ack 576, win 62712, options [nop,nop,TS val 14981470 ecr 20935159], length 0 # Ce que j'ai lancé, du serv ssh telnet 10.0.0.250 22 10:51 Trying 10.0.0.250... telnet: Unable to connect to remote host: Connection timed out Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 8 février 2010 Auteur Partager Posté(e) le 8 février 2010 Bonjour à tous ! j'ai pas trop le temps de vérifier (au taf, j'ai déjà un desktop consacré aux ssh à la maison...), mais je crois avoir trouver une solution ! quand je lance un telnet, je reçois bien 'SSH-2.0-OpenSSH_5.3' et ce qui aura solutionné la chose: iptables -t nat -A PREROUTING -j DNAT -i eth1 -p tcp --dport 22 --to-destination 192.168.0.42:22 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 22 -d 192.168.0.42 avec donc eth1 l'itf publique, eth0 la privé, et 192.168.0.42 le serveur ssh. je regarderai ce soir si j'arrive à faire marcher ça sur mes autres ports, et l'intégrer à une configuration viable. pour le principe, ce que j'ai actuellement dans mon script (dont 90% certainement inutile): iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -N external iptables -N localnet iptables -A INPUT -p icmp -j ACCEPT iptables -A INPUT -i eth0 -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -j localnet iptables -A INPUT -j external iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -A localnet -i lo -j ACCEPT iptables -A localnet -i eth0 -j ACCEPT iptables -A external -i eth1 -p tcp --dport 22 -j ACCEPT iptables -t nat -A PREROUTING -j DNAT -i eth1 -p tcp --dport 22 --to-destination 192.168.0.42:22 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 22 -d 192.168.0.42 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 8 février 2010 Auteur Partager Posté(e) le 8 février 2010 Bonsoir la gate est en place, tout a l'air de fonctionner parfaitement ! le premier probleme que j'ai rencontre concernait les dns, mal confes sur la gate (c'est un comble...) echo "nameserver 8.8.4.4" >/etc/resolv.conf.head si vous utilisez dhcp sinon, rajouter la ligne a la main directement dans resolv.conf suffit un dnsmasq (je poste pas la conf, c'est pas sorcier, mais pour ceux qui connaissent pas: vous vous faites vraiment chier pour rien avec bind) et mon nouveau script iptables: # re-init iptables -F iptables -X iptables -t nat -F iptables -t nat -X # default policy iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -N external iptables -N localnet iptables -A INPUT -p icmp -j ACCEPT iptables -A INPUT -i eth0 -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -j localnet iptables -A INPUT -j external iptables -A localnet -i lo -j ACCEPT iptables -A localnet -i eth0 -j ACCEPT # ports opening iptables -A external -i eth1 -p tcp --dport 20 -j ACCEPT # ftp - recv iptables -A external -i eth1 -p tcp --dport 21 -j ACCEPT # ftp iptables -A external -i eth1 -p tcp --dport 22 -j ACCEPT # ssh iptables -A external -i eth1 -p tcp --dport 23 -j ACCEPT # telnet iptables -A external -i eth1 -p udp --dport 53 -j ACCEPT # domain iptables -A external -i eth1 -p tcp --dport 53 -j ACCEPT # domain iptables -A external -i eth1 -p tcp --dport 80 -j ACCEPT # http iptables -A external -i eth1 -p udp --dport 139 -j ACCEPT # netbios-ssn iptables -A external -i eth1 -p tcp --dport 139 -j ACCEPT # netbios-ssn iptables -A external -i eth1 -p tcp --dport 443 -j ACCEPT # https iptables -A external -i eth1 -p tcp --dport 6001 -j ACCEPT # x11-1 # ports forwarding iptables -t nat -A PREROUTING -j DNAT -i eth1 -p tcp --dport 20 --to-destination 192.168.0.45:20 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 20 -d 192.168.0.45 iptables -t nat -A PREROUTING -j DNAT -i eth1 -p tcp --dport 21 --to-destination 192.168.0.45:21 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 21 -d 192.168.0.45 iptables -t nat -A PREROUTING -j DNAT -i eth1 -p tcp --dport 22 --to-destination 192.168.0.42:22 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 22 -d 192.168.0.42 iptables -t nat -A PREROUTING -j DNAT -i eth1 -p tcp --dport 23 --to-destination 192.168.0.45:23 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 23 -d 192.168.0.45 #iptables -t nat -A PREROUTING -j DNAT -i eth1 -p udp --dport 53 --to-destination 192.168.0.254:53 #iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p udp --dport 53 -d 192.168.0.250 #iptables -t nat -A PREROUTING -j DNAT -i eth1 -p tcp --dport 53 --to-destination 192.168.0.254:53 #iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 53 -d 192.168.0.250 iptables -t nat -A PREROUTING -j DNAT -i eth1 -p tcp --dport 80 --to-destination 192.168.0.45:80 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 80 -d 192.168.0.45 iptables -t nat -A PREROUTING -j DNAT -i eth1 -p udp --dport 139 --to-destination 192.168.0.254:139 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p udp --dport 139 -d 192.168.0.250 iptables -t nat -A PREROUTING -j DNAT -i eth1 -p tcp --dport 139 --to-destination 192.168.0.254:139 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 139 -d 192.168.0.250 iptables -t nat -A PREROUTING -j DNAT -i eth1 -p tcp --dport 443 --to-destination 192.168.0.46:443 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 443 -d 192.168.0.46 iptables -t nat -A PREROUTING -j DNAT -i eth1 -p tcp --dport 6001 --to-destination 192.168.0.42:6001 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp --dport 6001 -d 192.168.0.42 iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth1 -j MASQUERADE avec donc redirection de ftp, ssh, telnet, samba (si jme suis pas plante, faudra que je test), dns, http, rdesktop (sur une VM, d'ou la meme IP qu'ssh) et X11 a noter: l'option save du rc.d/iptables, qui permet de sauver la conf actuelle dans /etc/iptables.rules ainsi, la configuration est recharge au demarrage (si iptables dans la liste de rc a lancer) (ouai, ca parrait con, mais je debute: c'est cool d'avoir penser a la rajouter, ce serait con de passer a cote) en esperant que ca puisse aider/motiver ceux qui aiment les reseaux propres :) edit: tiens, j'ai commente les domaines, la redir DNS entrante est certainement plus valide bof, a bien y reflechire, je m'en cogne... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.