Pro Schnittstelle 1 IP einrichten

Dieses Thema im Forum "Allgemein" wurde erstellt von MrServer, 27. Mai 2016.

  1. MrServer

    MrServer New Member

    Guten Morgen.

    Ich habe hier im Forum bereits ähnliche Beiträge gelesen, doch bin ich bisher nicht zum erfolgreichen Ergebnis gekommen.

    Ich habe ISPConfig installiert und es läuft mit meiner eth0 Schnittstelle erfolgreich.
    Später habe ich versucht eth1 zu aktivieren und habe dort ebenfalls eine IP zugewiesen.

    Ping intern funktioniert auch, nur nach extern kommt eine Fehlermeldung.
    PING google.de (172.217.17.227) from 192.168.10.11 eth1: 56(84) bytes of data.
    From 192.168.10.11 icmp_seq=1 Destination Host Unreachable


    An beiden Schnittstellen hängt eine eigenen FritzBox mit fester statischer ipv4 Adresse.

    Meine Config schaut so aus:
    # The primary network interface
    auto eth0 eth1
    iface eth0 inet static
    address 192.168.178.3
    netmask 255.255.255.0
    network 192.168.178.0
    broadcast 192.168.178.255
    gateway 192.168.178.1

    # The secondary network interface
    iface eth1 inet static
    address 192.168.10.11
    netmask 255.255.255.0
    gateway 192.168.10.1
    up route add -net 192.168.10.0/23 gw 192.168.10.1 dev eth1

    Die Routingtabelle schaut so aus:

    Kernel-IP-Routentabelle
    Ziel Router Genmask Flags Metric Ref Use Iface
    default 192.168.178.1 0.0.0.0 UG 0 0 0 eth0
    192.168.10.0 * 255.255.255.0 U 0 0 0 eth1
    192.168.10.0 192.168.10.1 255.255.254.0 UG 0 0 0 eth1
    192.168.178.0 * 255.255.255.0 U 0 0 0 eth0

    In ISPConfig habe ich beide externe IPs eingetragen.
    Via Port 80 kann ich nur über eth0 zugreifen. eth1 zeigt mir "Server nicht gefunden" Port geschlossen..
    Via Port 443 komme ich über eth0 und eth1 auf den Server, was mich sehr verwundert.

    Ich hoffe, dass ihr mir in die richtige Richtung helfen könnt.
    Wahrscheinlich habe ich nur einen Denkfehler?

    LG
     
  2. JeGr

    JeGr Member

    Hi MrServer,
    deine Konfiguration ist schon etwas seltsam... Dein Secondary Interface bspw. deklarierst du mit Netzmaske 255.255.255.0 (/24), fährst aber untendran (m.E. sinnfrei) eine Netz-Route mit /23 hoch die du auf das Gateway .10.1 schickst. Das ist nicht recht durchschaubar, was das bringen soll, zumal es deiner Netzkonfiguration für eth1 widerspricht. Entweder das Netz ist wirklich /23 oder es sind zwei /24er, dann stimmt aber die Netzroute nicht.
    Zudem kommt, dass du zwar für jedes iface gern ein gateway angeben kannst, es kann aber eben nur eines das Default Gateway sein. Das ist in dem Fall das GW von eth0 (siehe Routingtabelle).

    Zur Diagnose ob das eth1 Bein überhaupt sauber funktioniert würde ich die default Route mal auf eth1 und .10.1 ändern und dann den Ping wiederholen (und nebenbei checken ob DNS sauber geht). Dann sollte man die default Route wieder auf das eth0 ändern. Die Netzroute von eth1 sehe ich nicht als sinnvoll und würde ich entfernen. Statt dessen solltest du ggf. eine zweite Routing Table einfügen (table 1), in der du die IP des Servers (192.168.10.11) hinzufügst und deren Default Route dann die .10.1 ist. Das Resultat ist dann, dass der IP Stack bei ankommenden Paketen für .10.11 bemerkt, dass das via route table 1 abgefackelt wird und dementsprechend die Antworten/Pakete an .10.1 zurückschickt, anstatt an den Default Router via eth0. Damit sollte auch deine Erreichbarkeit über dieses Interface wieder klappen und auch der Ping mit ausgewähltem Interface eth1 und IP .10.11 als abgehend sollte klappen.

    Gruß Jens
     
  3. MrServer

    MrServer New Member

    Hallo Jens!
    Danke für deine Antwort!

    Ich habe dies soweit umgesetzt und folgendes in meiner Config:

    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).

    # The loopback network interface
    auto lo
    iface lo inet loopback

    # The primary network interface

    allow-hotplug eth0
    iface eth0 inet static
    address 192.168.178.3
    netmask 255.255.255.0
    gateway 192.168.178.1

    # The secondary network interface

    allow-hotplug eth1
    iface eth1 inet static
    address 192.168.10.11
    netmask 255.255.255.0

    post-up ip route add 192.168.10.0/24 dev eth1 src 192.168.10.11 table rt2
    post-up ip route add default via 192.168.10.1 dev eth1 table rt2
    post-up ip rule add from 192.168.10.11/32 table rt2
    post-up ip rule add to 192.168.10.11/32 table rt2

    Meine Route:

    Kernel-IP-Routentabelle
    Ziel Router Genmask Flags Metric Ref Use Iface
    default 192.168.178.1 0.0.0.0 UG 0 0 0 eth0
    192.168.10.0 * 255.255.255.0 U 0 0 0 eth1
    192.168.178.0 * 255.255.255.0 U 0 0 0 eth0

    Ich kann via Port 443 auf den Server zugreifen, nur Port 80 macht Schwierigkeiten.

    Wenn ich nur das eth1 (ohne eth0) anklemme, funktioniert der Ping und DNS einwandfrei. Ein Erreichen des Servers via Port 80 dennoch nicht, nur über Port 443. Wenn ich beide Schnittstellen angeschlossen habe, kann ich über eth0 ping und DNS einwandfrei durchführen, und über eth1 nur bis zum Router pingen, das Internet funktioniert nicht. zb Ping zu google.de

    In meiner Firewall habe ich die jeweiligen Ports allerdings offen.

    Habe ich einen Denkfehler, oder blockiert ISPConfig weitere IPs? Eigentlich doch nicht?

    Gruß
     
  4. JeGr

    JeGr Member

    Also solang Basics wie Ping etc. nicht laufen, sehe ich da keine Relevanz zu ISPC. Bei beiden angeschlossenen Interfaces müsstest du mit Ping rauskommen.

    In der /etc/network/interfaces sollte
    Code:
    ...
            post-up ip rule add from 192.168.10.11 table 1
            post-up ip route add 192.168.10.0/24 table 1 dev eth1
            post-up ip route add 0.0.0.0/0 table 1 via 192.168.10.1
    
    eigentlich funktionieren, den "gateway" Eintrag würde ich da rausnehmen.

    Anschließend solltest du mit
    Code:
    ip route show
    
    bzw.
    Code:
    ip route show table 1
    
    deine beiden Tabellen sehen können. Ein
    Code:
    mtr -n 8.8.8.8
    
    sollte dann brav über die .178.1 Strecke via eth0 laufen, wohingegen ein
    Code:
    mtr -n 8.8.8.8 --address 192.168.10.11
    
    dann über das zweite Gateway laufen sollte.

    Auch solltest du mit "host" oder "dig" DNS Abfragen stellen können, wenn beide Interfaces an sind, da die DNSe von jedem aus erreichbar sein sollte. Wenn das bis dahin klappt, kann man sich weiter vorarbeiten, warum irgendwelche Ports vielleicht nicht tun, aber erstmal sollte der Basic Network Stack funktionieren :)
     
  5. MrServer

    MrServer New Member

    Top!

    Das funktioniert!

    Je nachdem welche Source-IP ich wähle, nimmt er die richtige Schnittstelle! Danke!!

    ip route show
    default via 192.168.178.1 dev eth0
    192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.11
    192.168.178.0/24 dev eth0 proto kernel scope link src 192.168.178.3

    ip route show table 1
    default via 192.168.10.1 dev eth1
    192.168.10.0/24 dev eth1 scope link

    Ein Ping /Trace läuft wie oben von dir geschrieben hast, problemlos durch.

    Nun habe ich "nur" noch das Problem bzgl. der Ports.
    Über den 80er (zB via ping.eu) bleibt dieser geschlossen und nur über 443 ist der Server erreichbar.

    Muss ich ggf noch etwas in ISPConfig umstellen?
    Dort habe ich bisher nur die beiden externen IPs die ich via eth0 und eth1 habe, eingetragen.

    LG
     
  6. JeGr

    JeGr Member

    OK dann sollten die Basics laufen. Wenn du auch HTTPS auf beiden Lines durch bekommst, sollte das stimmen. Ist ggf. auf dem Router auf der eth1 Seite was beim Forwarding noch nicht korrekt eingestellt? Leiten beide ihre Ports auf die richtige IP weiter? Hört sich so an als würde Port 80 auf der zweiten Line geschluckt werden und gar nicht erst beim Host ankommen.
    Ansonsten schau mal nach, was du bei
    Code:
    netstat -tulpen | grep 80
    
    als Output bekommst. Sollte das ein Apache sein, kannst du auch nach "httpd" oder "apache2" oder im Falle von nginx nach "nginx" greppen.

    Gruß
     
  7. MrServer

    MrServer New Member

    Danke!

    netstat -tulpen | grep 80
    tcp6 0 0 :::80 :::* LISTEN 0 15145 1816/apache2
    tcp6 0 0 :::8081 :::* LISTEN 0 15153 1816/apache2
    udp6 0 0 fe80::21b:78ff:fea3:123 :::* 0 19226 990/ntpd
    udp6 0 0 fe80::21b:78ff:fea3:123 :::* 0 19225 990/ntpd

    netstat -tulpen | grep apache
    tcp6 0 0 :::443 :::* LISTEN 0 15149 1816/apache2
    tcp6 0 0 :::80 :::* LISTEN 0 15145 1816/apache2
    tcp6 0 0 :::8081 :::* LISTEN 0 15153 1816/apache2

    In der FritzBox habe ich alle Ports (80, 443, 25, 993, etc) auf den richtigen Server umgeleitet.

    Wenn ich in der FritzBox auf eth1 den Server als Exposed Host eintrage (also kein Schutz durch die Firewall) komme ich dennoch nicht auf Port 80.
    Alle anderen Ports sind frei.

    LG
     
  8. JeGr

    JeGr Member

    Dann liegt es erstmal aber nicht am Apachen, denn der lauscht laut Definition da oben auf alle IPs v4 wie v6 auf den angegebenen Ports.
    Möglich wäre jetzt noch:
    1) NameVirtualhost Direktive für die andere IP nicht gesetzt -> sollte aber laufen, wenn du die IP in ISPC Admin angelegt und einem Web zugewiesen hast (bzw. wenn nichts zugewiesen wurde, sollte das Web ja auf alle IPs lauschen).
    2) UFW/Firewall - beim Perfect Server Tutorial wird ja auch die Firewall konfiguriert. Ist die aktiv? Evtl. mal abschalten, da ggf. die neue zweite IP da nicht freigegeben ist und deshalb weggeblockt wird?
    Ansonsten ins allgemeine Access/Error Log schauen, ob da überhaupt was auftaucht wenn du über die zweite IP zugreifst.

    Im Extremfall: tcpdump anwerfen und auf der zweiten Schnittstelle auf Port 80 lauschen lassen, ob was ankommt.
    Code:
    tcpdump -i eth1 'port 80 or port 443'
    
    dann sollte man auch was auf dem TLS port sehen.
     
  9. MrServer

    MrServer New Member

    Guten Abend.

    Ich habe nun länger die Logfiles beobachtet, ich finde keine relevanten Fehler zu dem Problem.

    Über tcpdump kommt, sobald ich den Port von extern abfrage folgende Meldung rein:

    20:37:12.979382 IP nemec2.internet.lv.35048 > mail.XXXXXX.email.http: Flags , seq 2946344176, win 7300, options [mss 1414,sackOK,TS val 2348765461 ecr 0,nop,wscale 8], length 0
    20:37:12.979447 IP mail.XXXXXX.email.http > nemec2.internet.lv.35048: Flags [S.], seq 1588313606, ack 2946344177, win 28960, options [mss 1460,sackOK,TS val 2833765 ecr 2348765461,nop,wscale 7], length 0
    20:37:13.973753 IP nemec2.internet.lv.35048 > mail.XXXXXX.email.http: Flags , seq 2946344176, win 7300, options [mss 1414,sackOK,TS val 2348765561 ecr 0,nop,wscale 8], length 0
    20:37:13.973794 IP mail.XXXXXX.email.http > nemec2.internet.lv.35048: Flags [S.], seq 1603850399, ack 2946344177, win 28960, options [mss 1460,sackOK,TS val 2834013 ecr 2348765561,nop,wscale 7], length 0


    Ich habe nun nochmal alle Einstellungen überprüft und in der FritzBox alle Freigaben gelöscht und komplett neu hinzugefügt und siehe da: ES LÄUFT!

    Klasse und vielen Dank!
     
    Zuletzt bearbeitet: 31. Mai 2016
    JeGr gefällt das.
  10. JeGr

    JeGr Member

    Super, freut mich zu lesen :)
     

Diese Seite empfehlen