iptables

George K. kargig.lists at gmail.com
Tue Jan 31 15:56:26 EET 2012


2012/1/31 Antonis Christofides <anthony at itia.ntua.gr>:
> Έχω ένα server Α που περιέχει ένα virtual server v. Ο v έχει IP
> address 10.1.0.1, και είναι accessible επειδή ο A κάνει nat.
> Αυτό το έχω φτιάξει και λειτουργεί, όπως και το port forwarding,
> χρησιμοποιώντας το nat table. Τώρα θέλω να έχω και firewall, οπότε
> πειράζω το filter table. Δεν είμαι σίγουρος όμως ότι καταλαβαίνω καλά
> το από ποια tables/chains περνάει ένα πακέτο.
>
> Χρησιμοποιώντας λοιπόν ως οδηγό τα σχήματα που έκλεψα απροκάλυπτα από
> το
> http://www.netfilter.org/documentation/HOWTO/netfilter-hacking-HOWTO-3.html:
>
> A Packet Traversing the Netfilter System:
>
>   --->[1]--->[ROUTE]--->[3]--->[4]--->
>                 |            ^
>                 |            |
>                 |         [ROUTE]
>                 v            |
>                [2]          [5]
>                 |            ^
>                 |            |
>                 v            |
>
>
>
>   --->PRE------>[ROUTE]--->FWD---------->POST------>
>       Conntrack    |       Mangle   ^    Mangle
>       Mangle       |       Filter   |    NAT (Src)
>       NAT (Dst)    |                |    Conntrack
>       (QDisc)      |             [ROUTE]
>                    v                |
>                    IN Filter       OUT Conntrack
>                    |  Conntrack     ^  Mangle
>                    |  Mangle        |  NAT (Dst)
>                    v                |  Filter
>
> συμπεραίνω:
>
> Έστω ότι μέσα απ' το v κάνω wget http://microsoft.com/. Ας αγνοήσουμε
> το πώς έφυγε το εξερχόμενο πακέτο κι ας δούμε τι θα κάνει το
> απαντητικό εισερχόμενο πακέτο όταν φτάνει στον Α.
>  a) Πρώτα περνάει από το hook 1, και ακολουθούνται οι κανόνες που έχω
>     ορίσει στο nat/PREROUTING, που το αφήνουν ως έχει.
>  b) Στη συνέχεια o kernel αποφασίζει (επειδή έχω τις κατάλληλες
>     ρυθμίσεις στο sysctl.conf) να κάνει forwarding, και αυτό είναι
>     άσχετο με το τι λέει το nat table.
>  c) Επομένως πάμε στο hook 3, οπότε ακολουθούνται οι κανόνες που έχω
>     ορίσει στο filter/FORWARD. Αν φερ' ειπείν του έχω πει
>       -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
>     τότε θα περάσει.
>  d) Μετά πάμε στο hook 4, POSTROUTING, και μετά πάει στον v.
>
> Θέλω μόνο να μου πείτε αν τα έχω καταλάβει καλά.
>
> Δηλαδή ένα chain είναι hooked σ' ένα hook; Το hook 5 είναι το OUTPUT,
> και υπάρχει OUTPUT chain και στα τρία tables (mangle, filter, nat). Θα
> περάσει λοιπόν κι απ' τα τρία tables το εξερχόμενο πακέτο; Τι νόημα
> έχει αυτό; Αν έναν κανόνα που κανονικά θα έπρεπε να μπει στο
> nat/OUTPUT τον βάλω αντ' αυτού στο filter/OUTPUT θα δουλέψει;
>
> Κάτι αριθμοί που βγάνει το iptables-save τι είναι: Π.χ.
> *nat
> :PREROUTING ACCEPT [5:1222]
> :POSTROUTING ACCEPT [6:371]
> :OUTPUT ACCEPT [6:371]
> -A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source 192.168.1.65
> COMMIT
>
> --
> linux-greek-users mailing list -- http://lists.hellug.gr

Ένα γράφημα ίσως σε βοηθήσει:

http://commons.wikimedia.org/wiki/File:Diagrama_linux_netfilter_iptables.gif

μπορείς να αγνοήσεις τα "μωβ" που έχουν να κάνουν με ebtables.
-- 
Καργιωτάκης Γιώργος



More information about the Linux-greek-users mailing list