IPTables¶
iptables links¶
- http://www.bortzmeyer.org/dns-netfilter-u32.html
- http://www.stearns.org/doc/iptables-u32.current.html
- http://ebtables.sourceforge.net/br_fw_ia/PacketFlow.png
- http://ebtables.sourceforge.net/
- http://www.inetdoc.net/guides/iptables-tutorial/traversingoftables.html
- http://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
- http://cdn-ak.f.st-hatena.com/images/fotolife/h/hirose31/20090401/20090401195923.png
- https://en.wikipedia.org/wiki/List_of_router_or_firewall_distributions
DHCP ?
sysctl -w net.bridge.bridge-nf-call-iptables=1
sysctl -w net.bridge.bridge-nf-call-ip6tables=1
iptables -A INPUT -p udp --sport 68 --dport 67 -j DROP
https://bugzilla.redhat.com/show_bug.cgi?id=512206
- libnml
Ne pas oublier
conntrack -F
Apres chaque changement de regles.
iptables hairpin¶
Hair pin / hairpin / hairpinning / NAT reflection
http://serverfault.com/questions/205040/accessing-the-dnatted-webserver-from-inside-the-lan
Avec :- PUB_IFACE = interface avec ip publique, par exemple eth0
- PUB_IP = ip publique sur le host
- PRIVATE_RANGE = range d'ip privee sur le bridge, par exemple 192.168.100.0/24
- VM_IP = l'ip privee de la VM dans ${PRIVATE_RANGE} par eemple 192.168.100.10
- PORT_LIST = 80,443 (et d'autres) la liste des ports a transferer a la VM
iptables -t nat -A POSTROUTING -s ${PRIVATE_RANGE} -o ${PUB_IFACE} -j MASQUERADE iptables -t nat -A PREROUTING -d ${PUB_IP} -p tcp -m multiport --dports ${PORT_LIST} -j DNAT --to-destination ${VM_IP} iptables -t nat -A POSTROUTING -s ${PRIVATE_RANGE} -d ${VM_IP} -p tcp -m multiport --dports ${PORT_LIST} -j MASQUERADE iptables -t nat -A OUTPUT -d ${PUB_IP} -p tcp -m multiport --dports ${PORT_LIST} -j DNAT --to-destination ${VM_IP}
- ligne 1 : pour que la VM puisse acceder a l'internet il faut le NAT
- ligne 2 : redirection des ports gérés par la VM de l'ip publique vers la VM
- ligne 3 : si la VM veut parler a l'IP publique sur un port géré par la VM il faut faire un reflection NAT vers la VM
- ligne 4 : si le host veut parler a l'IP publique sur un port géré par la VM il faut diriger vers la VM
ebtables¶
ebtables -A FORWARD -d ff:ff:ff:ff:ff:ff/ff:ff:ff:ff:ff:ff -p IPv4 --ip-prot udp --ip-dport 67:68 -j DROP
ebtables -A INPUT --in-interface br0 --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP
ebtables -A INPUT --in-interface br0 --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 -j DROP
ebtables -A FORWARD --in-interface br0 --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 -j DROP
ebtables -A FORWARD --in-interface br0 --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP