hawkmaster: Allow from Schreibweise für IP Adressen?

Hallo zusammen,

in einer XAMPP Konfigurationsdatei habe ich folgendes gefunden:

<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
    Order deny,allow
    Deny from all
Allow from ::1 127.0.0.0/8 \                fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \                fe80::/10 169.254.0.0/16

Ich verstehe nicht ganz was der Backslash bedeutet? Laut Doku finde ich nur eine Erklärung das der Backslash eine neue Zeile bedeutet.
Dann müsste doch auch erlaubt sein:

Allow from ::1 127.0.0.0/8 \        10.120.22.33

Wenn mein lokaler PC die IP 10.120.22.33 hat, funktioniert das dann aber nicht.
Muss man für jede einzelne IP Adresse dann immer Allow from davor schreiben?
Allow from 10.120.22.33
Allow from 127.0.0.1

vielen Dank und viele Grüße
hawk

  1. Hi!

    Allow from ::1 127.0.0.0/8 \                fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \                fe80::/10 169.254.0.0/16

    Ich verstehe nicht ganz was der Backslash bedeutet?

    http://httpd.apache.org/docs/2.2/configuring.html#syntax

    Laut Doku finde ich nur eine Erklärung das der Backslash eine neue Zeile bedeutet.

    Nein, er bedeutet, dass die Anweisung in der nächsten Zeile fortgesetzt wird, denn ansonsten gilt: eine Anweisung = eine Zeile

    Dann müsste doch auch erlaubt sein:

    Allow from ::1 127.0.0.0/8 \        10.120.22.33

    Wenn mein lokaler PC die IP 10.120.22.33 hat, funktioniert das dann aber nicht.

    Funktioniert nicht, funktioniert nicht als Fehlerbeschreibung, weißt du doch. Gibt es einen Fehler im Error-Log oder was passiert auf deinem lokalen PC? Und was heißt lokaler PC genau? In welcher Verbindung steht er zum Webserver? Schau auch mal ins Access-Log, welche IP-Adresse es versucht (falls es kein Konfigurationsfehler sondern ein 401 ist).

    Muss man für jede einzelne IP Adresse dann immer Allow from davor schreiben?
    Allow from 10.120.22.33
    Allow from 127.0.0.1

    Wenn du die vorherige Zeile nicht mit \ abschließt, dann muss in der nächsten Zeile eine vollständige Direktive stehen (abgesehen von Leerzeilen und Kommentaren).

    Lo!

    1. Hallo zusammen,

      danke euch für die Erklärungen und Hilfe.

      Sorry für die ungenaue Beschreibung.
      Mein Notebook ist im lokalen Intranet und hat z.b. die Adresse 10.120.22.33 vom DHCP bekommen.
      Wenn ich die URL mit
      http://127.0.0.1/test/index.php
      klappt der Aufruf. Auch mit http://localhost/test/index.php
      Nicht aber mit http://10.120.22.33/test/index.php.
      Es kommt dann "Zugriff verweigert"

      Wenn ich in httpd.conf es so angebe:

      Allow From 127.0.0.1
      Allow From 10.120.22.33

      funktioniert der Aufruf

      Nein, er bedeutet, dass die Anweisung in der nächsten Zeile fortgesetzt wird, denn ansonsten gilt: eine Anweisung = eine Zeile

      so hatte ich das eigentlich auch verstanden. Dann könnte man doch aber vermutlich auch die einzelnen IP Adressen mit Leerzeichen getrennt angeben.

      Allow From 127.0.0.1 10.120.22.33

      oder aber
      Allow From 127.0.0.1 \   10.120.22.33

      Aber wie gesagt, mit diesen beiden Schreibweisen bekomme ich keinen Zugriff

      vielen Dank und viele Grüße
      hawk

      1. Hi,

        Mein Notebook ist im lokalen Intranet und hat z.b. die Adresse 10.120.22.33 vom DHCP bekommen.
        Wenn ich die URL mit
        http://127.0.0.1/test/index.php
        klappt der Aufruf. Auch mit http://localhost/test/index.php
        Nicht aber mit http://10.120.22.33/test/index.php.
        Es kommt dann "Zugriff verweigert"

        Allow/Deny schränken ein, von welchen Adressen aus *Client*-Zugriffe stattfinden dürfen.

        In deinem Beispiel willst du aber den *Server* über unterschiedliche IP-Adressen ansprechen.

        Ist dir dieser Unterschied nicht bewusst?

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hallo ChrisB,

          Allow/Deny schränken ein, von welchen Adressen aus *Client*-Zugriffe stattfinden dürfen.

          In deinem Beispiel willst du aber den *Server* über unterschiedliche IP-Adressen ansprechen.

          Ist dir dieser Unterschied nicht bewusst?

          doch das ist mir eigentlich schon bewusst. Das war ja auch nicht meine Frage. Es geht mir doch nur um die Schreibweise ob man mehrere IP Adressen die erlaubt sind in eine Zeile schreiben kann oder jede einzelne IP mit "Allow From" angeben muss.

          Im Eingangs Post sind doch auch mehrere IP Ranges in einer Zeile wenn ich es richtig verstehe:

          Allow from ::1 127.0.0.0/8 \                fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \                fe80::/10 169.254.0.0/16

          Wenn ich aber Zugriffe von der IP 127.0.0.1 UND von 10.120.22.33 erlauben will und es so schreibe

          Allow from 127.0.0.1 \    10.120.22.33

          klappt es aber nicht.

          vielen Dank und viele Grüße
          hawk

          1. Allow from 127.0.0.1 \    10.120.22.33

            klappt es aber nicht.

            Wieso? Du kannst doch von deinem Notebook auf den lokalen Server zugreifen, also klappt es doch.

            Struppi.

            1. Hallo Struppi,

              vielen Dank.

              Wieso? Du kannst doch von deinem Notebook auf den lokalen Server zugreifen, also klappt es doch.

              Es klappt nur mit der Adresse http://127.0.0.1
              nicht aber wenn ich http://10.120.22.33

              eingebe.

              vielen Dank und viele Grüße
              hawk

              1. Hi,

                Wieso? Du kannst doch von deinem Notebook auf den lokalen Server zugreifen, also klappt es doch.

                Es klappt nur mit der Adresse http://127.0.0.1
                nicht aber wenn ich http://10.120.22.33

                eingebe.

                Wenn du das *wo* "eingibst"?

                Ich vermute sehr stark, dir ist das, worauf ich dich soeben hingewiesen habe, *nicht* klar, auch wenn du das Gegenteil behauptest.

                MfG ChrisB

                --
                RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
                1. Hallo
                  sorry wenn ich mich so doof anstelle.

                  Ich vermute sehr stark, dir ist das, worauf ich dich soeben hingewiesen habe, *nicht* klar, auch wenn du das Gegenteil behauptest.

                  Also nochmals nur das wir uns nicht verzetteln.
                  Mein Notebook ist im Intranet und hat die IP 10.120.22.33 bekommen.
                  Auf dem Notebook ist der Apache installiert. Ich möchte vom gleichen PC mit Firefox auf die Webseite zugreifen.
                  Angenommen ich habe "Allow from all" drin, dann kann ich sowohl mit
                  http://localhost/ oder http://127.0.0.1 oder auch http://10.120.22.33 auf die Webseite zugreifen (vom gleichen PC nicht von einem entfernten)

                  Schreibe ich z.b.
                  Allow from 127.0.0.1
                  allow from 10.120.22.33

                  ist es genauso
                  Wenn ich aber die Schreibweise

                  Allow from 127.0.0.1 \  10.120.22.33

                  verwende geht das  http://10.120.22.33 nicht mehr.
                  Es geht mir also nur um die Schreibweise.

                  vielen Dank und viele Grüße
                  hawk

                  1. Schreibe ich z.b.
                    Allow from 127.0.0.1
                    allow from 10.120.22.33

                    ist es genauso
                    Wenn ich aber die Schreibweise

                    Allow from 127.0.0.1 \ 10.120.22.33

                    verwende geht das  http://10.120.22.33 nicht mehr.
                    Es geht mir also nur um die Schreibweise.

                    Auf welche Dokumentation stützt sich \ ???

                    mfg Beat

                    --
                    ><o(((°>           ><o(((°>
                       <°)))o><                     ><o(((°>o
                    Der Valigator leibt diese Fische
                    1. Allow from 127.0.0.1 \ 10.120.22.33

                      verwende geht das  http://10.120.22.33 nicht mehr.
                      Es geht mir also nur um die Schreibweise.

                      Auf welche Dokumentation stützt sich \ ???

                      Hat sich beantwortet
                      http://httpd.apache.org/docs/2.2/configuring.html#syntax
                      "Die Konfigurationsdateien des Apache enthalten eine Direktive pro Zeile. Der Backslash "" läßt sich als letztes Zeichen in einer Zeile dazu verwenden, die Fortsetzung der Direktive in der nächsten Zeile anzuzeigen. Es darf kein weiteres Zeichen oder Whitespace zwischen dem Backslash und dem Zeilenende folgen."

                      Ist auch in 2.0 verfügbar und war mir nicht bewusst.

                      mfg Beat

                      --
                      ><o(((°>           ><o(((°>
                         <°)))o><                     ><o(((°>o
                      Der Valigator leibt diese Fische
                      1. Hello,

                        Ist auch in 2.0 verfügbar und war mir nicht bewusst.

                        War mir auch nicht bewusst, dass das auch in Konfigurationsdateien des Apachen "funzt"
                        Ich kannte das nur von der Bash.

                        Liebe Grüße aus dem schönen Oberharz

                        Tom vom Berg

                        --
                         ☻_
                        /▌
                        / \ Nur selber lernen macht schlau
                        http://bergpost.annerschbarrich.de
              2. Es klappt nur mit der Adresse http://127.0.0.1
                nicht aber wenn ich http://10.120.22.33

                Dazu muss auf dem Rechner mit der IP ein Server existieren, auf den du von aussen zugreifen kannst. Ist das so?

                Struppi.

                1. Hello Struppi,

                  Es klappt nur mit der Adresse http://127.0.0.1
                  nicht aber wenn ich http://10.120.22.33

                  Dazu muss auf dem Rechner mit der IP ein Server existieren, auf den du von aussen zugreifen kannst. Ist das so?

                  Nicht (unbedingt) mit derselben IP, die gehört ja schon dem Client.
                  Um es realistisch zu halten, sollte man dem Webserver eine andere geben. Die muss dann selbstverständlich auch für das Netzwerk-Interface angemeldet werden.

                  Der Server sollte aber auf jeden Fall eine IP aus demselben Netz haben (wenn keine gesonderten Routingregeln gelten), auf die er auch hört.

                  Ein "Listen" muss also eingerichtet sein dafür
                  http://httpd.apache.org/docs/2.2/mod/mpm_common.html#listen

                  Liebe Grüße aus dem schönen Oberharz

                  Tom vom Berg

                  --
                   ☻_
                  /▌
                  / \ Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
                  1. Hi!

                    Ein "Listen" muss also eingerichtet sein dafür

                    Das hat er anzunehmenderweise schon, weil er sonst er nicht von einem "Zugriff verweigert" sondern von einem Netzwerkfehler berichten würde. Denn wenn an seiner 10er Adresse nichts lauscht, kann es auch keine Antwort vom Apachen geben. Das Problem scheint wirklich nur an der -Schreibweise zu liegen, obwohl die schon seit mindestens dem 1.3er Apachen bekannt ist.

                    Lo!

                    1. Hello,

                      Ein "Listen" muss also eingerichtet sein dafür

                      Das hat er anzunehmenderweise schon, weil er sonst er nicht von einem "Zugriff verweigert" sondern von einem Netzwerkfehler berichten würde.

                      Stimmt auch irgendwie :-)

                      Und kennt der 2.x-Apache diesen Fortsetzungs-Backslash auch ganz bestimmt? Muss ja nicht so geblieben sein, wie beim 1.3

                      Liebe Grüße aus dem schönen Oberharz

                      Tom vom Berg

                      --
                       ☻_
                      /▌
                      / \ Nur selber lernen macht schlau
                      http://bergpost.annerschbarrich.de
                    2. Hallo,

                      Das hat er anzunehmenderweise schon, weil er sonst er nicht von einem "Zugriff verweigert" sondern von einem Netzwerkfehler berichten würde. Denn wenn an seiner 10er Adresse nichts lauscht, kann es auch keine Antwort vom Apachen geben. Das Problem scheint wirklich nur an der -Schreibweise zu liegen, obwohl die schon seit mindestens dem 1.3er Apachen bekannt ist.

                      Genaus so scheint es mir auch. Obwohl ja die Default Einstellung des XAMPP dies genauso macht:

                      Allow from ::1 127.0.0.0/8 \     fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \    fe80::/10 169.254.0.0/16

                      Rein theoretisch ist die folgende Schreibweise (alles in einer Zeile) ja dann identisch:
                      Allow from ::1 127.0.0.0/8 fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 fe80::/10 169.254.0.0/16

                      Das funktioniert auch bzw. der Apache meckert nicht beim starten. Auch wirkt sich ein entfernen von "192.168.0.0/16" tatsächlich so aus, dass ich die Seite nicht mehr aufrufen kann "Zugriff verweigert" wenn ich z.b. 192.168.1.40 in den Browser eingebe.

                      Demzufolge müssten ja dann eigentlich auch mehrere einzelne IP Adressen mit Leerzeichen getrennt in einer Zeile erlaubt sein?

                      vielen Dank und viele Grüße
                      hawk

                      1. Hi!

                        Rein theoretisch ist die folgende Schreibweise (alles in einer Zeile) ja dann identisch:

                        Ja.

                        Allow from ::1 127.0.0.0/8 fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 fe80::/10 169.254.0.0/16
                        Das funktioniert auch bzw. der Apache meckert nicht beim starten. [...]
                        Demzufolge müssten ja dann eigentlich auch mehrere einzelne IP Adressen mit Leerzeichen getrennt in einer Zeile erlaubt sein?

                        Ja, so stehen die Adressen in der angegebenen Zeile ja auch. Ob da nun eine Netzmaske mit dabei steht oder nicht, ist (auf das Problem bezogen) nicht weiter relevant.

                        Ich vermutete gerade ein Problem mit betriebssystemspezifischen Zeilenenden, aber das scheint nicht zu existieren, denn der XamppLite wird mit einer http.conf ausgeliefert, die ein über mehrere Zeilen gehendes DirectoryIndex mitbringt. Die Zeilen sind jeweils mit , CR, LF beendet. Geht also. Dass die Unix-Schreibweise , LF ebenfalls funktioniert, davon gehe ich mal aus.

                        Es bleibt dabei, dass ich dir nicht sagen kann, was du da falsch machst.

                        Lo!

  2. Hello,

    Ich verstehe nicht ganz was der Backslash bedeutet? Laut Doku finde ich nur eine Erklärung das der Backslash eine neue Zeile bedeutet.

    In welcher Doku hast Du das wo gefunden?

    Dann müsste doch auch erlaubt sein:

    Allow from ::1 127.0.0.0/8 \        10.120.22.33

    Wenn mein lokaler PC die IP 10.120.22.33 hat, funktioniert das dann aber nicht.

    Gehört der denn zum Netz des Servers?
    Lauscht der Server auch auf Anfragen auf einer IP, die zum Netz 10.0.0.0. gehört?

    Muss man für jede einzelne IP Adresse dann immer Allow from davor schreiben?
    Allow from 10.120.22.33
    Allow from 127.0.0.1

    siehe http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#allow

    Jede eigenständige Zeile beginnt hier mit einer Direktive.
    Ob der Backslash für die Fortsetzung einer Zeile in der Konfogurationsdatei, nicht in der Shell(!), überhaupt vorgesehen ist, weiß ich im Moment nicht. Habe ich persönlich jedenfalls noch nie gesehen.

    Für Befehle, die über die Shell eingegeben werden, kenne ich das auch mit dem Backslash.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hi!

      Ich verstehe nicht ganz was der Backslash bedeutet? Laut Doku finde ich nur eine Erklärung das der Backslash eine neue Zeile bedeutet.
      In welcher Doku hast Du das wo gefunden?

      http://httpd.apache.org/docs/2.2/configuring.html von der Doku-Startseite ist es in der mittleren Spalte verlinkt.

      Wenn mein lokaler PC die IP 10.120.22.33 hat, funktioniert das dann aber nicht.
      Gehört der denn zum Netz des Servers?
      Lauscht der Server auch auf Anfragen auf einer IP, die zum Netz 10.0.0.0. gehört?

      Wieso ausgerechnet 10.0.0.0? Das Netzwerk kann auch eine anderen Maske haben als 255.0.0.0

      Lo!

      1. Hello,

        Wieso ausgerechnet 10.0.0.0? Das Netzwerk kann auch eine anderen Maske haben als 255.0.0.0

        Dann muss sie aber auch vereinbart werden. Anderenfalls gilt die regel des ersten Oktetts.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Tach,

          Wieso ausgerechnet 10.0.0.0? Das Netzwerk kann auch eine anderen Maske haben als 255.0.0.0

          Dann muss sie aber auch vereinbart werden. Anderenfalls gilt die regel des ersten Oktetts.

          nein, wir nutzen seit über 17 Jahren keine klassenbasierten Netze mehr.

          mfg
          Woodfighter

          1. Hello,

            Wieso ausgerechnet 10.0.0.0? Das Netzwerk kann auch eine anderen Maske haben als 255.0.0.0

            Dann muss sie aber auch vereinbart werden. Anderenfalls gilt die regel des ersten Oktetts.

            nein, wir nutzen seit über 17 Jahren keine klassenbasierten Netze mehr.

            Und seit wann kann man Classless Routing ohne Netzwerkmaske betreiben? Das muss ich verpasst haben. ;-P

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Tach,

              Und seit wann kann man Classless Routing ohne Netzwerkmaske betreiben? Das muss ich verpasst haben. ;-P

              genau das schrieb dedlfix, aus der Ip-Adresse kann man deine Aussage nicht ableiten.

              mfg
              Woodfighter