macabre_sunsets Δημοσ. 16 Αυγούστου 2011 Δημοσ. 16 Αυγούστου 2011 Το δίκτυό μου έχει ώς εξής: Modem με ΙΡ 10.15.160.1 (subnet: 255.255.255.224) Server με ΙΡ 10.15.160.2 (subnet: 255.255.255.224) και Gateway 10.15.160.1 Ο server τρέχει OpenVZ και τα Virtual Machines έχουν ΙΡ στο subnet 10.15.160.33 - 10.15.160.62 (255.255.255.224). Για να έχουν πρόσβαση τα VM στο Internet έχω βάλει ένα static route στο modem: >Destination IP Address 10.15.160.32 IP Subnet Mask 255.255.255.224 Gateway IP Address 10.15.160.2 Ως εδώ όλα δουλεύουν μια χαρά. Αυτό που θέλω είναι να κάνω forward κάποιες πόρτες στα VM, αλλά δυστυχώς δεν μπορώ μέσω του modem γιατί αν βάλω μια ΙΡ από το εύρος 10.15.160-33 - 10.15.160.62 μου λέει πως δεν είναι έγκυρη ΙΡ. Αυτό που μπορώ να κάνω και δουλεύει μια χαρά είναι port forwarding στον server. Με βάση αυτό, σκέφτηκα να κάνω όποιες πόρτες θέλω forward στον server και έπειτα να τις κάνω πάλι forward από τον server προς τα VM. Δυστυχώς όμως δεν κατάφερα κάτι με κάποιες εντολές για iptables που βρήκα στο internet για αυτό και θα ήθελα την βοήθειά σας. Εάν βοηθάνε, παραθέτω το /etc/network/interfaces και το ifconfig από τον server. /etc/network/interfaces ># The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 10.15.160.2 netmask 255.255.255.224 network 10.15.160.0 broadcast 10.15.160.31 gateway 10.15.160.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off ifconfig >br0 Link encap:Ethernet HWaddr --:--:--:--:--:-- inet addr:10.15.160.2 Bcast:10.15.160.31 Mask:255.255.255.224 inet6 addr: fe80::3e4a:92ff:fe6d:12fc/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:19950950 errors:0 dropped:0 overruns:0 frame:0 TX packets:21846112 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:17423225214 (16.2 GiB) TX bytes:10561972458 (9.8 GiB) eth0 Link encap:Ethernet HWaddr --:--:--:--:--:-- inet6 addr: fe80::3e4a:92ff:fe6d:12fc/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:19950562 errors:0 dropped:0 overruns:0 frame:0 TX packets:21845815 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:17788977274 (16.5 GiB) TX bytes:10650889110 (9.9 GiB) Interrupt:18 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:684 errors:0 dropped:0 overruns:0 frame:0 TX packets:684 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:42091 (41.1 KiB) TX bytes:42091 (41.1 KiB) venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:21607241 errors:0 dropped:0 overruns:0 frame:0 TX packets:19707738 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:10240002988 (9.5 GiB) TX bytes:17408294174 (16.2 GiB) Λειτουργικό: Debian Squeeze
nske Δημοσ. 18 Αυγούστου 2011 Δημοσ. 18 Αυγούστου 2011 Δοκίμασε: > iptables -t nat -A PREROUTING -p tcp --dport 666 --dst 10.15.160.2 -j DNAT --to 10.15.160.35:80 (και από τον ακριανό router θα κάνεις port forwarding την port της public address που θέλεις στην port 666 του 10.15.160.2)
macabre_sunsets Δημοσ. 19 Αυγούστου 2011 Μέλος Δημοσ. 19 Αυγούστου 2011 Δυστυχώς δεν πέτυχε το παραπάνω. Παραθέτω τα ακόλουθα μήπως βοηθάνε. >root@server:~# iptables -t nat -A PREROUTING -p tcp --dport 666 --dst 10.15.160.2 -j DNAT --to 10.15.160.35:80 root@server:~# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination >root@server:~# iptables-save # Generated by iptables-save v1.4.8 on Fri Aug 19 07:16:01 2011 *nat :PREROUTING ACCEPT [659:71003] :POSTROUTING ACCEPT [647:69292] :OUTPUT ACCEPT [0:0] -A PREROUTING -d 10.15.160.2/32 -p tcp -m tcp --dport 666 -j DNAT --to-destination 10.15.160.35:80 COMMIT # Completed on Fri Aug 19 07:16:01 2011 # Generated by iptables-save v1.4.8 on Fri Aug 19 07:16:01 2011 *mangle :PREROUTING ACCEPT [1539:180499] :INPUT ACCEPT [148:11308] :FORWARD ACCEPT [1379:167504] :OUTPUT ACCEPT [102:9480] :POSTROUTING ACCEPT [1481:176984] COMMIT # Completed on Fri Aug 19 07:16:01 2011 # Generated by iptables-save v1.4.8 on Fri Aug 19 07:16:01 2011 *filter :INPUT ACCEPT [148:11308] :FORWARD ACCEPT [1379:167504] :OUTPUT ACCEPT [102:9480] COMMIT # Completed on Fri Aug 19 07:16:01 2011
nske Δημοσ. 19 Αυγούστου 2011 Δημοσ. 19 Αυγούστου 2011 To 10.15.160.35 τι gateway έχει; (και ακούει κάτι στην 80 του, έτσι; ) Ο Host server δεν έχει κάποια διεύθυνση στο 10.15.160.32/255.255.255.224; Bridge έχεις κάνει το eth0 με το venet0; (brctl show) Πιο χρήσιμη από της ifconfig ίσως είναι η έξοδος της "ip addr show" (ελπίζω να μη δούμε όλες της διευθύνσεις των guests πάνω στo br0 του host!) Μπορείς να κουμπώσεις ένα άλλο pc στο δίκτυο με IP 10.15.160.3, να του ορίσεις gateway για το 10.15.160.32/255.255.255.224 το 10.16.160.2 και να κάνεις από εκεί 'telnet 10.16.160.2 666'; Έτσι θα δούμε αν το πρώτο NAT δουλεύει. Αν είναι κόπος, μην το κάνεις ακόμα γιατί μπορεί να μη χρειαστεί. Δυστυχώς δεν έχω χρησιμοποιήσει το OpenVZ και δεν ξέρω πώς χειρίζεται τα δίκτυα (χρησιμοποιώ Vserver με τον dummy-interface driver). Αλλά αν φαντάζομαι σωστά, το OpenVZ χρησιμοποιεί το venet0 για τους guests, το οποίο έχεις κάνει bridge με το eth0, οπότε στην ουσία είναι όλα ένα δίκτυο, παρόλο που από αυτό περνάς 2 διαφορετικά IP subnets. Σε αυτή την περίπτωση θα μπορούσες να δώσεις και μια πρόσθετη διεύθυνση IP στον ακριανό ρούτερ σου (πιθανότατα το υποστηρίζει) στο 10.15.160.32/255.255.255.224, ώστε να μπορεί να δει (και να κάνει port forwarding προς) τα guests απευθείας.
macabre_sunsets Δημοσ. 19 Αυγούστου 2011 Μέλος Δημοσ. 19 Αυγούστου 2011 α) /etc/network/interfaces του 10.15.160.35 ># Auto generated lo interface auto lo iface lo inet loopback # Auto generated venet0 interface auto venet0 iface venet0 inet static address 127.0.0.1 netmask 255.255.255.255 broadcast 0.0.0.0 up route add -net 192.0.2.1 netmask 255.255.255.255 dev venet0 auto venet0:0 iface venet0:0 inet static address 10.15.160.35 netmask 255.255.255.255 broadcast 0.0.0.0 gateway 192.0.2.1 ifconfig του 10.15.160.35 >lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 TX bytes:0 (0.0 venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 TX bytes:0 (0.0 venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.15.160.35 P-t-P:10.15.160.35 Bcast:0.0.0.0 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 β) Ο Host έχει μόνο την 10.15.160.2. Δεν του έχω βάλει άλλη ΙΡ. γ) brctl show στον Host Server >bridge name bridge id STP enabled interfaces br0 8000.3c4a926d12fc no eth0 δ) ip addr show στον Host Server >1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether --:--:--:--:--:-- brd ff:ff:ff:ff:ff:ff inet6 fe80::----:--ff:fe--:--/64 scope link valid_lft forever preferred_lft forever 3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether --:--:--:--:--:fc brd ff:ff:ff:ff:ff:ff inet 10.15.160.2/27 brd 10.15.160.31 scope global br0 inet6 fe80::----:--ff:fe-:--fc/64 scope link valid_lft forever preferred_lft forever 4: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/void ε) Μιας και δεν είμαι σπίτι τώρα, δεν μπορώ να βάλω κάποιον υπολογιστή. Όταν πάω και εάν δεν έχουμε βγάλει άκρη θα βάλω το laptop. Το bridge το έχω κάνει επειδή το έλεγε σε έναν οδηγό για KVM (μιας και τρέχει παράλληλα με το OpenVZ στον Host Server). Δεν του έχω προσθέσει το venet0 στο bridge, οπότε υπάρχει περίπτωση να φταίει αυτό; Θα προτιμούσα να μην βάλω και άλλη ΙΡ στο modem/router. Αν αυτή αποδειχθεί η μόνη λύση, προτιμώ να αλλάξω subnet στα VM ώστε να βρίσκονται στο 10.15.160.1 - 10.15.160.30 (υποθέτω μετά δεν θα υπάρχει πρόβλημα με το port forward από την μεριά του modem/router). Μήπως το static route που έχω βάλει στο modem/router παρακάμπτει τον Host Server με συνέπεια η κίνηση να μην περνάει καν από το iptables;
nske Δημοσ. 19 Αυγούστου 2011 Δημοσ. 19 Αυγούστου 2011 Το bridge0 αφού περιέχει μόνο το eth0 δεν κάνει απολύτως τίποτα. Μην του προσθέσεις και το venet0, καλύτερα κατάργησέ το και χρησιμοποίησε απλά το eth0. [EDIT] μπορεί να κάνω λάθος, βλέπω κάποιους που προτείνουν τη χρήση του με αυτόν τον τρόπο, αλλά πραγματικά δε μπορώ να φανταστώ γιατί. Η static route στο modem/router δεν παρακάμπτει τον Host server, το αντίθετο: το υποχρεώνει να προωθεί τα πακέτα με τους συγκεκριμένους προορισμούς στο 10.15.160.2. Αν θέλεις να παίξεις με routing και να μην υποχρεώσεις τον host server να κάνει και SNAT (που θα ήταν περιτό και μάλλον άσχημο) είναι απαράιτητη. Η χρήση της 192.0.2.1 (δεν είναι καν σε private space!) στους guests με παραξενεύει, θα διαβάσω λίγο για το vznetdev και θα επανέλθω.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.