Livebox Fix NAT 1701 - adest/wiki GitHub Wiki

Introduction

L'interface web de la livebox empêche la configuration en NAT du port 1701 à cause de la fonctionnalité

Partage wifi

Même si celle ci n'est pas activée.

Solution 1 (pas terrible)

  • Remplacer 1701 par 1702 dans la section "Port externe" de la configuration de la regle NAT.
  • Configurer le client IPSec pour utiliser le port 1702.

Solution 2

Le contrôle du port est uniquement fait coté client en JS, on vas donc modifier la variable qui spécifie le port externe avant d'envoyer le formulaire au routeur (à la livebox).

Rechercher le code qui contrôle et affiche l'erreur.

Rechercher la ligne

} else if(!this.isNotRestricted(line.OutboundPort)) {

Pour ma part à la ligne 35280

} else if(!this.isNotRestricted(line.OutboundPort)) {
    /***********************/
    if (line.OutboundPort === '1701')
            Sah.translator.change($("warning_msg"), "advconfig.network.natpat.label.error7","X the port number should not be equal to 1701");
    else 
    /**********************/
            Sah.translator.change($("warning_msg"), "advconfig.network.natpat.label.error2","X the port number should not be equal to 1701");
    return;
} else {

Vous pouvez mettre un point d’arrêt ici mais ce n'est pas nécessaire.

Rechercher le code qui permet de modifier la variable une fois le contrôle du port validé.

Rechercher la ligne

Object.extend(line.app,{

Pour ma part à la ligne 35305

} else {
        Object.extend(line.app,{
                "HostIPAddress": line.HostIPAddress,
                "Name": line.Name,
                "Enable": 1
        });


}
params = this.lineToParams(line);

this.client.execute("sysbus.Firewall:setPortForwarding",
        params,
        {
                "onSuccess":this.whenSaved.bind(this, line),
                "onFailure":this.whenNotSaved.bind(this)
        });

Poser un break point sur la ligne

Object.extend(line.app,{

Pour information l'envoi des informations au routeur se fait à la ligne

this.client.execute("sysbus.Firewall:setPortForwarding",
        params,
        {
                "onSuccess":this.whenSaved.bind(this, line),
                "onFailure":this.whenNotSaved.bind(this)
        });

Saisir une règle NAT comme suit

Ajouter une règle NAT avec un port externe différent de 1701

Service     |  Port interne  |  Port externe  |  Protocole  |  Appareil
IPSec-1701  |  1701          |  1702          |  les deux   |  <Nom_Equipement>

Lorsque le debugger break sur votre break point

Modifier dans l'objet line.app les valeurs du port internal et external pour les remettre à 1701 :

line: Object
    CustomName: ""
    HostIPAddress: "192.168.0.1"
    HostName: "Nom_Equipement"
    InboundPort: "1701"
    Name: "IPSec-1701"
    OutboundPort: "1701"
    OutboundPortRangeEnd: null
    Protocol: "both"
    ProtocolDisplay: "les deux"

Relâcher le break point

!! Tadam !! Heureusement que les contrôles sont effectués coté client ;)