PfSense als Routing VM



  • Hallo zusammen ich bin der Neue :P

    Spass bei Seite, ich habe ein kleines Problem mit meinem ESXI und dem ROuting von 4 IP Adressen.

    Mal zum Aufbau.

    1. IP: 93.186.192.205 (ESXI Mgmt Adresse)
    2. IP: 5.199.143.47
    3. IP: 46.20.37.211
    4. IP: 46.20.37.212
    5. IP: 46.20.37.219
    6. IP: 46.20.37.239

    So nun zu meinem Thema:

    Ich habe bei dem Anbieter Webtropia.com einen Rootserver mit ESXI mit den oben genannten IP Adressen.
    Die IP 5.199.143.47 ist auch tadelos erreichbar, diese wollte ich als IP für pfsense nehmen.

    Nun kommt aber der Knackpunkt wo ich irgendwie ein logisches Verständnis Problem habe.

    Das es bei ESXI ja so kein Routing gibt, benötige ich ja eine VM die quasi das Routing übernimmt

    Wenn ich also meinen anderen VMs die IPs 46.20.37.2xx vergeben will, muss ich ja zwangsläufig eine Host Route eintragen.

    Ich wollte hier pfSense quasi als Router und Firewall für eben diese VMs verwenden, leider finde ich nur Tutorials für das Hetzner Konzept, aber ich habe halt kein Subnetz gemietet sondern einfach nur 5 weitere IP Adresse dazu bestellt, wobei so direkt nur die 5.199.143.47 pingbarist, die anderen 4 müsste ich ja durch einen Router schleusen.

    Konzept mäßig würde ich das unter Debian so realisieren:

    Einrichten der Routing-VM

    Die Netzwerk-Einstellungen ( /etc/network/interfaces ) an.

    auto lo
    iface lo inet loopback

    auto eth0
    iface eth0 inet static
      address <publicip>netmask <publicmask>post-up ip route add <gateway>/32 dev eth0
      post-up ip route add default via  <gateway>pre-down ip route del <gateway>/32 dev eth0
      pre-down ip route del default via <gateway>auto eth1
    iface eth1 inet static
      address <privateip>netmask <privatemask><publicip>→ Öffentliche IP-Adresse der Routing-VM
    <publicmask>→Netzmaske der öffentlichen IP
    <gateway>→ Gateway der öffentlichen IP-Adresse
    <privateip>→ Private IP-Adresse der Routing-VM (nur über vSwitch1 erreichbar)
    <privatemask>→ Netzmaske des privaten Segmentes ( z.B. 255.255.255.0 für yyy.yyy.yyy.1-254 )

    Starte  das Netzwerk neu ( /etc/init.d/networking restart )

    Sysctl

    In der Datei /etc/sysctl.conf folgende Werte angepasst:

    net.ipv4.conf.all.rp_filter=1
    net.ipv4.ip_forward=1
    net.ipv4.conf.default.forwarding=1
    net.ipv4.conf.default.proxy_arp=0
    net.ipv4.conf.default.send_redirects=1
    net.ipv4.conf.all.send_redirects=0

    Im Anschluss Werte mit sysctl -p geladen.

    Routen

    ip route add <ip>/32 dev eth1

    Damit die Routen bei jedem System- und/oder Netzwerk-Neustart korrekt gesetzt werden, eth0 in /etc/network/interfaces angepasst:

    auto lo
    iface lo inet loopback

    auto eth0
    iface eth0 inet static
      address <publicip>netmask <publicmask>post-up ip route add <gateway>/32 dev eth0
      post-up ip route add default via  <gateway>pre-down ip route del <gateway>/32 dev eth0
      pre-down ip route del default via <gateway>post-up ip route add <ip>/32 dev eth1
      pre-down ip route del <ip>/32 dev eth1

    auto eth1
    iface eth1 inet static
      address <privateip>netmask <privatemask>NAT / Portweiterleitung

    Network Address Translation für virtuellen Maschinen ohne eigene öffentliche IP.

    iptables -t nat -A POSTROUTING -s <source> -o <outputif>-j SNAT –to <publicip><source> Steht für eine interne IP-Adresse oder ein internes IP-Netz welches sich via NAT ins Internet verbinden darf.
    <outputif>Steht für das Interface auf dem die Pakete ausgegeben werden (Internet auf eth0)
    <publicip>Diese öffentliche IP wird für Verbindungen ins Internet genutzt.

    Damit eine VM auch ohne eigene öffentliche IP erreichbar ist, können freie Ports von der Routing-VM an eine interne/private Adresse weitergeleitet werden.

    iptables -t nat -A PREROUTING -p tcp -d <publicip>--dport <publicport>-i <inputif>
            -j DNAT --to-destination <internalip>: <internalport><publicip>Die öffentliche IP der Routing-VM, deren Port weitergeleitet werden soll
    <publicport>Der Port der öffentlichen IP-Adresse, der an die VM im privaten Segment weitergeleitet werden soll
    <inputif>Der Netzwerk-Adapter auf dem die Pakete aus dem Internet ankommen
    <internalip>Interne IP der VM, auf die die Verbindung weitergeleitet werden soll
    <internalport>Port der VM, auf den die Verbindung weitergeleitet werden soll

    So nun hab ich aber ein ganz komisches Verhalten was mich etwas iritiert:

    wenn ich jetzt eine VM direkt auf den VSwitch0 packe und dieser die IP z.B. 46.20.37.211 gebe sowie die Maske 255.255.255.255 und als GW: 5.199.143.1 ist diese erreichbar ich komme nur nicht raus.

    Und jetzt kommt meine Frage:

    WIe kann ich sowas mit pFSense realisieren? Bzw. wo liegt mein Fehler wenn ich als WAN die 5.199.143.47 nehme wie bekomme ich die anderen IPs durch pfSense durhgeschleust?

    Sorry wenn dies vielleicht eine Anfängerfrage ist, aber ich hab echt keine Idee mehr und ich lese seit tagen endlose Tutorials.

    Wenn ich einfach die Ports in ein Privates Segment via Natting weiterreiche geht es auch einwandfrei, nur ich würde gerne meine 4 anderen Öffentlichen IPs nutzen ohne NAT

    Gruß

    Thomas</internalport></internalip></inputif></publicport></publicip></internalport></internalip></inputif></publicport></publicip></publicip></outputif></publicip></outputif></privatemask></privateip></ip></ip></gateway></gateway></gateway></gateway></publicmask></publicip></ip></privatemask></privateip></gateway></publicmask></publicip></privatemask></privateip></gateway></gateway></gateway></gateway></publicmask></publicip>


  • Moderator

    "Wenn ich einfach die Ports in ein Privates Segment via Natting weiterreiche geht es auch einwandfrei, nur ich würde gerne meine 4 anderen Öffentlichen IPs nutzen ohne NAT "

    Wo ist denn das Problem, die IPs mittels 1:1 NAT an VMs mit privaten Adressen hinter der pfSense durchzuschleusen? Die extra IPs müssen ja auch irgendwelche Daten bekommen haben, wie man bei Webtropia entsprechend damit umgeht. Sprich ob ich die als Adressen mit GW o.ä. konfigurieren muss. Je nachdem kann man die auf dem externen IF von der pfS als Aliase angeben, sie per 1:1 NAT nach hinten an den ESX vSwitch reinreichen und gut ist.

    Was ich noch grob in Erinnerung habe von Webtropia werden die IPs dort auch auf irgendeine Adresse geroutet. Sprich bspw. die 46er IPs alle auf die 5.x.y.z. Das müsste man eben entsprechend erfragen, denn irgendwohin muss ja geroutet werden (selbst wenn eine Maschine selbst eine 5er IP hätte, bräuchte die ein Gateway).

    Wenn das alles klar ist, dann lässt sich auch eher sagen, wie man es am einfachsten macht, ich halte den Ansatz aber per pfS die IPs 1:1 NATten am Einfachsten.

    Grüße



  • Hallo JeGr,

    vielen dank erst einmal für deine prompte Antwort.

    Ich habe jetzt mehrfach mit dem Support von Webtropia Kontakt aufgenommen, nach dem 3ten Anruf hatte ich jetzt mal einen der mir halbwegs weiterhelfen konnte.

    Also es ist wohl so, das die 46er IPs auf die 5.199.143.47 geroutet werden bei denen und die 5er IP hat wohl das GW 5.199.143.1. (Das geht leider nicht aus dem Web Control Center von denen hervor)
    Wenn ich mir jetzt im ESXI zB eine VM Testweise einrichte, der die IP 46.20.37.211 gebe mit der Maske 255.255.255.255 sowie als GW 5.199.143.1 einrichte, ist der Host pingbar, allerdings funktioniert hier so einiges an Mail kram nicht korrekt, ich habe zwar eine Namensauflösung (sprich google.de etc sind zwar pingbar) aber wenn ich jetzt z.B. eine Mail über diesen an einen Empfänger der Domain Gmail.com schicken will, bekomme ich immer Timeouts vom Mailserver aber das wird noch nen anderes Problem sein mit dem ich mich später beschäftige.

    Aber dein Ansatz mit dem 1:1 Nat gefällt mir, nur habe ich jetzt mit pfSense so ein kleines Verständnis problem, wo ich quasi diese 4 46er IPs so einrichten kann umd diese dann via 1:1 Nat an eine Private Adresse weiter zuleiten.

    Gruß und Danke

    Thomas



  • Ok habe es selbst gelöst, ich musste lediglich virtuelle IPs anlegen und diese dnan via 1:1 NAT auf die jeweilige Private Adresse mappen.

    Vielen Dank für den Denkanstoß.

    Gruß

    Thomas


  • Moderator

    Ahoi Thallas,

    es kann sogar sein, da Webtropia wie du sagst die 46er IPs eh auf die 5er routet, die die pfSense extern hat, du die IP Aliase löschen kannst. Es genügt dann, nur in der 1:1 NAT Einstellung die externe und interne IP einzutragen und eine verknüpfte Regel erstellen zu lassen. Dann hast du sogar noch weniger, auf das du aufpassen musst.

    Grüße



  • So habich versucht, aber ohne die Virtuellen IPs sind die VMs hinter pfSense dann leider nicht mehr erreichbar.
    Ich verstehe zwar dieses Konzept nicht so wirklich was Webtropia da fährt aber seis drum, es geht, ich bin happy und kann anfangen zu spielen :P

    Eine Frage hab ich da doch noch, ist es möglich pfSense so zu konfigurieren, das man nur von einer bestimmten Addresse auf das Webinterface kommt? Also z.B. würde ich auf mein Notebook die Dyndns ichbins.no-ip.org legen und es wäre nur möglich von dieser dynamischen Adresse auf pfSense Weboberfläche zuzugreifensowie auf die CLI?

    Gruß

    Thomas


  • Moderator

    Ja das ist denkbar, da die pfSense Filter mit Aliasen einrichten kann.

    Unter Firewall / Aliases / IP einfach einen neuen Alias definieren (HostsAdminPC bspw.) und dort statt einer IP die DynDNS Adresse eingeben. Hierzu steht als Beschreibung:

    Enter as many hosts as you would like. Hosts must be specified by their IP address or fully qualified domain name (FQDN). FQDN hostnames are periodically re-resolved and updated. If multiple IPs are returned by a DNS query, all are used.

    Damit hast du, sofern du den Zugriff nicht gerade 1min nach einer neuen Zuweisung durch DynDNS versuchst, eigentlich genau das, was du möchtest :) Nach meinem letzten Kenntnisstand werden diese Aliase ca. alle 5min neu eingelesen, insofern solltest du spätestens 10min nach Wechsel der DynDNS Adresse wieder Zugriff haben.

    Mein Rat wäre zusätzlich zur DynDNS Adresse noch eine Fixe IP einzutragen die immer klappt, sofern du sowas zur Verfügung hast (bspw. feste IP auf Arbeit o.ä.).

    Grüße