Comment faire en sorte que OS X envoie l'adresse IP LOCALE dans les en-têtes de demande www?

0

Je dois être en mesure d’envoyer l’adresse IP locale d’un ordinateur avec les en-têtes lors de demandes adressées à un site Web. Semblable à la façon dont vous pouvez obtenir le _SERVER["REMOTE_ADDR"]php, mais l'adresse IP locale (par exemple, 192.168.100.1). Ce sera un intranet afin que l'environnement puisse être contrôlé. Tout peut être installé sur l'ordinateur, etc.

Ce sera sur un ordinateur Mac OS X. En espérant à la fois Safari et Firefox. Mais serait ouvert à en utiliser un.

Est-ce que quelqu'un sait si c'est possible? Merci beaucoup.

Louis W
la source

Réponses:

0

J'imagine que cela nécessite en quelque sorte l' ajout d'un en -tête X-Forwarded-For , comme le feraient certains serveurs proxy. Mais, bien qu’il ne s’agisse pas d’une norme officielle, je me demande toutefois si elle "permet" d’adresser des adresses IP à partir d’une plage privée.

Si vous pouvez obliger vos navigateurs à utiliser le proxy GlimmerBlocker , vous pouvez ajouter ces en-têtes via une règle de demande de modification :

  • Ajouter une nouvelle règle (éventuellement, ajoutez d'abord un nouveau filtre pour stocker la règle)
  • Dans le volet Type de règle , définissez Action sur Modifier la demande.
  • Dans le volet de demande, ajoutez:

    gb.request.headers ['X-Forwarded-For'] = '192.168.100.1';
  • Ou, pour utiliser l'adresse IP locale réelle, je suppose :

    var myIp;
    pour (var k dans gb.network.interfaces) {
      var x = gb.network.interfaces [k];
      si (! x.IPv4) {
        Continuez;
      }
      pour (var i dans x.IPv4.addr) {
        var ip = x.IPv4.addr [i];
        // Une interface peut avoir plusieurs adresses IP, mais supposons
        // il n'a qu'une seule adresse qui n'est pas localhost:
        if (ip == "127.0.0.1") {
          Continuez;
        }
        myIp = ip;
        Pause;
      }
    }
    gb.request.headers ['X-Forwarded-For'] = myIp;
    
  • Si vous le souhaitez, appliquez uniquement la règle à certains hôtes.

(Je suis aussi assez curieux de savoir pourquoi cette question ...)

Arjan
la source
Ah oui! Faire cela au niveau matériel est tout à fait logique. Je vais étudier le proxy actuel et voir ce que nous pouvons faire. Merci. Quant à la raison .... c'est pour un site intranet. En fonction de l'adresse fixe IP locale (attribuée en fonction de l'adresse mac), nous pouvons avoir une idée de l'emplacement de l'ordinateur. Pas cher et facile.
Louis W
@Louis: alors, un intranet avec plusieurs routeurs? Ou un serveur Web dans un segment différent? Dans un simple intranet, le navigateur se connecterait au serveur en utilisant son adresse IP locale, non? Cela finirait tout simplement par _SERVER["REMOTE_ADDR"]- mais je suppose que vous avez testé et trouvé une autre adresse. (J'ai changé le code JavaScript; ma première version non testée était l'envoi de 127.0.0.1 ...)
Arjan
Pas sûr de la configuration du nombre de routeurs. Je ne suis pas sur place pour le moment. Je l’ai testé localement (nous avons 1 routeur qui assigne des ips en fonction de macaddr) et REMOTE_ADDR est apparu comme notre adresse IP publique (identique pour tous les ordinateurs).
Louis W
1
@Louis, si vous utilisez actuellement un proxy, il vous suffira peut-être de configurer les postes de travail pour qu'ils n'utilisent pas le proxy existant pour les adresses locales? Si le serveur Web et les postes de travail sont branchés sur le même routeur, s’ils n’utilisent aucun proxy, les postes de travail devraient révéler leur adresse IP locale à ce serveur. (Mais je ne suis pas un expert du réseau; si vous connaissez la configuration exacte, demandez peut-être à serverfault.com de vous proposer une solution plus simple.)
Arjan