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 ;)