Description:

With this Add-in you can change the 1 to 1 VPN routing, to make additional private Networks reachable via the VPN connection.

Important Variables:

  • context.vars.centralVPN = true
  • context.vars.remoteVPN = true

The following example expects the centralVPN Device to have an additional network, that the remoteVPN Device wants to reach over the existing VPN-Connection in the untagged (VLAN 1) Network.

List of used variables:

VariableDescription
context.vars.centralVPN
context.vars.remoteVPN

Add-in code:

/**
 * @param {Config} config
 * @param {Context} context
 * Do not edit this comment or parameter types. Required for code suggestions
*/
exports.main = function (config, context) {
    var addFirewallRule = function (Name, Source, Destination, Action, RtgTag) {
        var firewallRule = config.getTableByOid("1.2.8.10.2");
        var firewallRule_row = firewallRule.createNewRow();
        firewallRule_row.setByOid("1", Name);
        firewallRule_row.setByOid("3", Source);
        firewallRule_row.setByOid("4", Destination);
        firewallRule_row.setByOid("7", Action);
        firewallRule_row.setByOid("14", RtgTag);
        firewallRule.addOrMerge(firewallRule_row);
    };
    var addRoute = function (DestinationIP, IpMask, RtgTag, AdminDistance, PeerOrIP, Distance, Masquerade, Active, Comment) {
        var TableRouting = config.getTableByOid("1.2.8.2");
        var TableRouting_row = TableRouting.createNewRow();
        TableRouting_row.setByOid(1, DestinationIP);
        TableRouting_row.setByOid(2, IpMask);
        TableRouting_row.setByOid(8, RtgTag);
        TableRouting_row.setByOid(9, AdminDistance);
        TableRouting_row.setByOid(3, PeerOrIP);
        TableRouting_row.setByOid(4, Distance);
        TableRouting_row.setByOid(5, Masquerade);
        TableRouting_row.setByOid(6, Active);
        TableRouting_row.setByOid(7, Comment);
        TableRouting.addOrMerge(TableRouting_row);
    };



    // centralVPN = Settings regarding and outgoint to Central Site Device
    // remoteVPN  = Settings regarding and outgoint to Remote Site Device

    // Firewall Rule and Routing Table Entry on Central Site Device
    if (context.vars.centralVPN == "true") {
        config.infoLog("central");
        addFirewallRule("RuleName", "%HremoteVPNPeer", "%centralVPNNetworkName", "ACCEPT", "centralVPNNetworkRtgTag")
        addRoute("remoteVPNNetwork", "remoteVPNNetmask", "0", "0", "remoteVPNPeer", "4", "0", "0", "Route for additional Central VPN Network to Remote VPN Peer")
       
    }
// Firewall Rule and Routing Table Entry on Remote Site Device
    if (context.vars.remoteVPN == "true") {
        config.infoLog("remote");
        addFirewallRule("RuleName", "%HcentralVPNPeer", "%LremoteVPNNetworkName", "ACCEPT", "remoteVPNNetworkRtgTag")
        addRoute("centralVPNNetwork", "centralVPNNetmask", "0", "0", "centralVPNPeer", "4", "0", "0", "Route for additional Central VPN Network")
    }

};

Add-in as JSON file:

1toN-VPN-Routing.json