Alias eth0:1 - Wie geht das iptable Syntax konform?

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
tomotom
Posts: 330
Joined: 2006-09-22 13:37

Alias eth0:1 - Wie geht das iptable Syntax konform?

Post by tomotom » 2007-08-03 20:32

Ich möchte eth0:1 per iptables als interface ansprechen. iptables mecker aber weil das ":" nicht syntaxkonform ist. Wie kann ich das eth0:1 trotzdem mit iptables trotzdem anspechen? eth0:1 soll eine IP erhalten für die iptables Regeln gelten sollen. Wie kann ich es in iptables von eth0 unterscheiden? Gibt es evt. die Möglichkeit, noch weitere Aliase für eth0:1 zu vergeben die der Syntax von iptables entsprechen?

tomotom
Posts: 330
Joined: 2006-09-22 13:37

Re: Alias eth0:1 - Wie geht das iptable Syntax konform?

Post by tomotom » 2007-08-03 21:55

matzewe01 wrote:Wenn man dir sagen würde, das es Blödsinn ist au einem rootserver eine firewall einzurichten bzw. ein Paketfilter,

Selbstverständliche muss dass auch gesagt werden, dass mit dem Blödsinn. Aber am Blödsinn zweifle ich auch nicht. Ich habe nicht davon gesprochen, einen Rootserver mit einer Firewall sicher machen zu wollen. Ich verstehe iptables als ein Paketfilter. Was mit den gefilterten Paken gemacht wird ist zweitrangig. Mich interessiet ob es eine Möglichkeit gibt, den Alias eth0:1 mit iptables anzusprechen.

Zum Verständnis:
Diese Problem müsste sich in jeder virtuellen Umgebung stellen in der auf einem Rechner mehrere virtuelle Maschinen laufen. Und genau damit beschäftige ich mich gerade.

matzewe01 wrote:dann wüsstest du es ohnehin wieder besser. also lasse ich es.

Auch wenn wir beide gerne philosophieren, so geht es mir sicher nie darum etwas besser zu wissen, sondern besser zu verstehen. Evt. auch Dich ... :-D
Surfst Du?

tomotom
Posts: 330
Joined: 2006-09-22 13:37

Re: Alias eth0:1 - Wie geht das iptable Syntax konform?

Post by tomotom » 2007-08-04 10:59

Mit diesen iptables Regeln gibt es Zugriff aus dem Internet auf beide Rechner, welche auf LAN1 und LAN2 liegen.

IP1 geht zu eht0
IP2" geht zu eth0:1
br1.0 und br2.0 sind virtuelle Schnittstellen auf die von intern auch Zugriff besteht.

Das Problem ist, dass ich von LAN2, welcher über eth0:1 ins Internet soll, keine Verbindung ins Internet bekomme. Von LAN1 geht alles.
Ich versteh nicht warum. Es sollte doch gehen, weil es von LAN1 auch geht.


Code: Select all

    # Prerouting
    iptables -t nat -A PREROUTING -d $IP1 -p tcp --dport 80 -j DNAT --to-destination $LAN1
    iptables -t nat -A PREROUTING -d $IP2 -p tcp --dport 80 -j DNAT --to-destination $LAN2

    # Forwarding   
    iptables -A FORWARD -d ! $IP1  -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -d ! $IP2  -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
   
    # Intern
    iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT   

    # LAN-Zugriff
    iptables -A INPUT -m state --state NEW -i br1.0 -j ACCEPT
    iptables -A INPUT -m state --state NEW -i br2.0 -j ACCEPT

    # Masquerading
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

tomotom
Posts: 330
Joined: 2006-09-22 13:37

Re: Alias eth0:1 - Wie geht das iptable Syntax konform?

Post by tomotom » 2007-08-04 12:26

matzewe01 wrote:...
Um es zu konkretisieren wäre wohl die Angabe der Konfiguration eine Nennenswerte Sache.



Das ganze in einem Netz habe ich schon hinter mir. Allerdings mit dem selben Effekt. Auch LAN2 hatte kein Zugriff auf Internet, kann aber vo dort erreicht werden.

Zur Konfiguration:
IP1 und IP2 haben den selben Gateway (Default von IP1) und sind extern.

br1.0
vif = [ 'mac=00:16:3e:00:02:11, ip=10.0.1.1, vifname=br1.0' ]

br2.0
vif = [ 'mac=00:16:3e:00:02:11, ip=10.0.1.2, vifname=br2.0' ]

IP1 geht zu eht0 # Zugriff int/ext
IP2" geht zu eth0:1 # Zugriff nur /ext


Das ist auch eine Variante und LAN1 wie gesagt ohne Internatzugan aber mit ZUgrif auf port 80.

Code: Select all

    iptables -t nat -A PREROUTING -d $IP1 -p tcp --dport 80 -j DNAT --to-destination $LAN1
    iptables -t nat -A PREROUTING -d $IP2 -p tcp --dport 80 -j DNAT --to-destination $LAN2

    iptables -A FORWARD -i ! eth0  -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT   
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d $LAN1 --dport 80 -j ACCEPT
    iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d $LAN2 --dport 80 -j ACCEPT

    iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    iptables -A INPUT -m state --state NEW -i vif1.0 -j ACCEPT
    iptables -A INPUT -m state --state NEW -i vif2.0 -j ACCEPT
   
     # Masquerading
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


ifconfig

Code: Select all

eth0      Link encap:Ethernet  HWaddr 0A:31:48:32:AE:E0
          inet addr:x.xx.x151.111  Bcast:81.169.151.111  Mask:255.255.255.255
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:34844 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18248 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5920931 (5.6 MiB)  TX bytes:2946125 (2.8 MiB)

eth0:1    Link encap:Ethernet  HWaddr 00:30:48:42:AE:E0
          inet addr:xx.xx.98.125  Bcast:xx.xx.98.255  Mask:255.255.255.255
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1

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:4176 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4176 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:169464 (165.4 KiB)  TX bytes:169464 (165.4 KiB)

vif1.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet addr:10.0.1.128  Bcast:0.0.0.0  Mask:255.255.255.255
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4353 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4247 errors:0 dropped:5 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:578735 (565.1 KiB)  TX bytes:573471 (560.0 KiB)

vif2.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet addr:10.0.1.129  Bcast:0.0.0.0  Mask:255.255.255.255
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:190 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42 errors:0 dropped:5 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:19479 (19.0 KiB)  TX bytes:5978 (5.8 KiB)

sledge0303
Posts: 695
Joined: 2005-09-16 00:06
Location: Berlin-Reinickendorf

Re: Alias eth0:1 - Wie geht das iptable Syntax konform?

Post by sledge0303 » 2007-08-04 13:33

Hallo,

anhand deiner Ausgaben glaube ich Xen wiederzuerkennen :)
Also, ich hab auch mit NAT geroutet, es laufen auf jedem Xen Server insgesamt alle möglichen 8 VE Instanzen und alle sind entsprechend geroutet.
Auch wenn du 1+ Netzwerkkarten drin hast, alles ist problemlos möglich.

Hier (noch) einmal ein funktionierendes Routing als Beispiel, es beschreibt eine Instanz mit Port 80 sowie SMTP/S und SSH:

Code: Select all


#!/bin/sh

IPTABLES="/sbin/iptables"

#loesche alle Regeln
$IPTABLES -t nat --flush

# Routing fuer XenU's
# 10.0.0.1
$IPTABLES -t nat -A POSTROUTING -s 10.0.0.1 -o eth0 -j SNAT --to $EXTIP
$IPTABLES -t nat -A PREROUTING -p tcp -d $EXTIP --dport 80 -i eth0 -j DNAT --to-destination 10.0.0.1:80
$IPTABLES -t nat -A PREROUTING -p tcp -d $EXTIP --dport 22 -i eth0 -j DNAT --to-destination 10.0.0.1:22
$IPTABLES -t nat -A PREROUTING -p tcp -d $EXTIP --dport 443 -i eth0 -j DNAT --to-destination 10.0.0.1:443
$IPTABLES -t nat -A PREROUTING -p tcp -d $EXTIP --dport 995 -i eth0 -j DNAT --to-destination 10.0.0.1:995
$IPTABLES -t nat -A PREROUTING -p tcp -d $EXTIP --dport 587 -i eth0 -j DNAT --to-destination 10.0.0.1:587
$IPTABLES -t nat -A PREROUTING -p tcp -d $EXTIP --dport 465 -i eth0 -j DNAT --to-destination 10.0.0.1:465
$IPTABLES -t nat -A PREROUTING -p tcp -d $EXTIP --dport 143 -i eth0 -j DNAT --to-destination 10.0.0.1:143
$IPTABLES -t nat -A PREROUTING -p tcp -d $EXTIP --dport 110 -i eth0 -j DNAT --to-destination 10.0.0.1:110
$IPTABLES -t nat -A PREROUTING -p tcp -d $EXTIP --dport 25 -i eth0 -j DNAT --to-destination 10.0.0.1:25


Das legst du in der dom0 unter /network/if-up.d/ ab, anschließend verpasst du dem Skript das Recht 755. Erzähle mir nicht, dass das nicht funktioniert bei dir!
Außerdem möchte ich dir dringlichst raten, dir die Links von Mathias anzusehen. Es gibt viele Wege wie man ein passendes Routing erstellen kann, die oben beschriebene ist eine der einfachsten wie man es umsetzen kann.

tomotom
Posts: 330
Joined: 2006-09-22 13:37

Re: Alias eth0:1 - Wie geht das iptable Syntax konform?

Post by tomotom » 2007-08-04 13:55

matzewe01 wrote:Dann stimmt das routing zurück nicht.
Es geht doch für LAN1 welches im selben Netz liegt. Da stimmt das routing doch aus dem 10.0.1.x Netz.
matzewe01"
Dass 1. das Gateway für den vhost im gleichen Netz liegen sollte ist dir klar oder?
[/quote]Ja, ist es.

[quote="matzewe01 wrote:
2. Dass das Routing über nur eine Netzwerkkarte / Interface äusseerst problematisch ist, ist dir auch klar.
Ja
matzewe01 wrote:Wie soll eigentlich geroutet werden. Bitte mit vollständigen IPS.

eth0:0 192.168.151.111 nach 10.0.1.128
eth0:1 152.138.98.123 nach 10.0.1.129 ?

Ja, wobei 10.0.1.128 ja nur die Gateways sind. Die IPs dazu sind
LAN1=10.0.1.1
LAN2=10.0.1.2
matzewe01 wrote:Dann solltest du dich mit natting beschäftigen. aber belass nach möglichkeit ein Netzwerk an eth0 und keine 2.
Mit "natting" meinst Du S-NAT und D-NAT nehme ich an. Ich nutze es im PREROUTING und zu den Maschinen aus dem Internet geht es ja auch.

Wie das ohne ein zweites Netz an eth0 gehen soll weiß ich nicht. Da liegen nun mal 2 IPs und die Daten zu IP1 und IP2 sind oder sollen nun mal nicht gleich sein.

tomotom
Posts: 330
Joined: 2006-09-22 13:37

Re: Alias eth0:1 - Wie geht das iptable Syntax konform?

Post by tomotom » 2007-08-04 16:06

Hol mich der Teufel! Es geht - fragt sich nur wie lange :?

Warum? Gute Frage.

Immer wieder ifconfig auf dom0 den domUs, Mac Adressen geändert, Netze geändert, verschiedene iptables Regeln ausprobiert immer wieder wundere ich mich das plötzlch der eine Rechner nicht mehr erreichbar war, dann der andere nicht mehr (und das trotz Portknocking :-D ) und dann ...

ifconfig auf dom0 zeigt andere IPs als ifconfig auf den domUs. Da waren wohl zeitweise die Rechner nur noch über "lo" erreichbar. Kein wunder, dachte ich aber warum? Netzwerkkarte zu heiß? :lol:

Da war dann auch noch das heimliche Problem, welches ich währen der "Übungen" bemerkte, dass die viruellen Maschinen immer wieder mit "configured with old IP" und erst nach einem reboot mit "configured with new IP" booteten. Ifconfig zeigte zwar was konfiguriert war an aber das Ergebnis schien ein anderes zu sein.

Diese anfangs (gestern) ständigen Veränderungen, die sich im Grund so verhielten als ob noch eine zweite Person gleichzeitig mit an der selben Konfiguration schrauben würde, OHNE dass ich es merkte führten zu einem verzweifelten Kampf. Ich sehe noch mal nach ob die Karte wieder zu heiß ist ... :lol: - Ist noch nicht zu heiß. Wird wohl nach dem booten wieder so weit sein. -

Spass beiseite. Ich meine ich habe die Tücken jetzt durchschaut. Mal sehen.

Jedenfalls ging es bis jetzt mit folgender etws gewöhnungsbedürftigen Regel raus und entschieden habe ich mich jetzt für ein Netz.

Code: Select all

iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -d ! 10.0.1.0/24 -j SNAT --to-source $IP2