summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorKim Hagen <khagen@multi-development.com>2015-02-02 14:57:19 +0100
committerKim Hagen <khagen@multi-development.com>2015-02-02 14:57:19 +0100
commit1be0e699d43e2ea72b791c502749d78d9acc9e84 (patch)
treef1938795c7e822963d67604b41d82ff1046cd084 /scripts
parent791097277d7ec62cc6c3f9b418d75b4a1a713759 (diff)
downloadvyatta-cfg-vpn-1be0e699d43e2ea72b791c502749d78d9acc9e84.tar.gz
vyatta-cfg-vpn-1be0e699d43e2ea72b791c502749d78d9acc9e84.zip
Bug #367 - DMVPN Testing, but I do not see ESP traffic.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/dmvpn-config.pl100
1 files changed, 79 insertions, 21 deletions
diff --git a/scripts/dmvpn-config.pl b/scripts/dmvpn-config.pl
index 02df73c..8a8c1ff 100755
--- a/scripts/dmvpn-config.pl
+++ b/scripts/dmvpn-config.pl
@@ -43,6 +43,7 @@ my $clustering_ip = 0;
my $dhcp_if = 0;
my $genout;
my $genout_secrets;
+my $dh_disable;
# Set $using_klips to 1 if kernel IPsec support is provided by KLIPS.
# Set it to 0 if using NETKEY.
@@ -274,6 +275,10 @@ if ( $vcVPN->exists('ipsec') ) {
"ipsec ike-group $ike_group proposal $ike_proposal dh-group"
);
+ if ( defined($dh_group) ) {
+ $dh_disable = 1;
+ }
+
#
# Write separator if not first proposal
#
@@ -290,23 +295,40 @@ if ( $vcVPN->exists('ipsec') ) {
if ( defined($encryption) && defined($hash) ) {
$genout .= "$encryption-$hash";
if ( defined($dh_group) ) {
- if ( $dh_group eq '2' ) {
+ if ($dh_group eq '2') {
$genout .= '-modp1024';
- }
- elsif ( $dh_group eq '5' ) {
+ } elsif ($dh_group eq '5') {
$genout .= '-modp1536';
+ } elsif ($dh_group eq '14') {
+ $genout .= '-modp2048';
+ } elsif ($dh_group eq '15') {
+ $genout .= '-modp3072';
+ } elsif ($dh_group eq '16') {
+ $genout .= '-modp4096';
+ } elsif ($dh_group eq '17') {
+ $genout .= '-modp6144';
+ } elsif ($dh_group eq '18') {
+ $genout .= '-modp8192';
+ } elsif ($dh_group eq '19') {
+ $genout .= '-ecp256';
+ } elsif ($dh_group eq '20') {
+ $genout .= '-ecp384';
+ } elsif ($dh_group eq '21') {
+ $genout .= '-ecp521';
+ } elsif ($dh_group eq '22') {
+ $genout .= '-modp1024s160';
+ } elsif ($dh_group eq '23') {
+ $genout .= '-modp2048s224';
+ } elsif ($dh_group eq '24') {
+ $genout .= '-modp2048s256';
+ } elsif ($dh_group eq '25') {
+ $genout .= '-ecp192';
+ } elsif ($dh_group eq '26') {
+ $genout .= '-ecp224';
}
elsif ( $dh_group ne '' ) {
- vpn_die(
- [
- "vpn", "ipsec",
- "profile", $profile,
- "bind", "tunnel",
- $tunnel
- ],
-"$vpn_cfg_err Invalid 'dh-group' $dh_group specified in "
- . "profile \"$profile\" for $tunKeyword. Only 2 or 5 accepted.\n"
- );
+ vpn_die(["vpn","ipsec","profile", $profile,"bind","tunnel", $tunnel],"$vpn_cfg_err Invalid 'dh-group' $dh_group specified in ".
+ "profile \"$profile\" for $tunKeyword. Only 2, 5, or 14 through 26 accepted.\n");
}
}
}
@@ -419,19 +441,55 @@ if ( $vcVPN->exists('ipsec') ) {
# Perfect Forward Secrecy
#
my $pfs = $vcVPN->returnValue("ipsec esp-group $esp_group pfs");
- if ( defined($pfs) ) {
- if ( $pfs eq 'enable' ) {
+ if (defined($pfs)) {
+ if ( $pfs eq 'enable' && defined($dh_disable) ) {
$genout .= "\tpfs=yes\n";
- }
- elsif ( $pfs eq 'dh-group2' ) {
+ } elsif ($pfs eq 'dh-group2') {
$genout .= "\tpfs=yes\n";
$genout .= "\tpfsgroup=modp1024\n";
- }
- elsif ( $pfs eq 'dh-group5' ) {
+ } elsif ($pfs eq 'dh-group5') {
$genout .= "\tpfs=yes\n";
$genout .= "\tpfsgroup=modp1536\n";
- }
- else {
+ } elsif ($pfs eq 'dh-group14') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=modp2048\n";
+ } elsif ($pfs eq 'dh-group15') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=modp3072\n";
+ } elsif ($pfs eq 'dh-group16') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=modp4096\n";
+ } elsif ($pfs eq 'dh-group17') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=modp6144\n";
+ } elsif ($pfs eq 'dh-group18') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=modp8192\n";
+ } elsif ($pfs eq 'dh-group19') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=ecp256\n";
+ } elsif ($pfs eq 'dh-group20') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=ecp384\n";
+ } elsif ($pfs eq 'dh-group21') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=ecp521\n";
+ } elsif ($pfs eq 'dh-group22') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=modp1024s160\n";
+ } elsif ($pfs eq 'dh-group23') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=modp2048s224\n";
+ } elsif ($pfs eq 'dh-group24') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=modp2048s256\n";
+ } elsif ($pfs eq 'dh-group25') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=ecp192\n";
+ } elsif ($pfs eq 'dh-group26') {
+ $genout .= "\tpfs=yes\n";
+ $genout .= "\tpfsgroup=ecp224\n";
+ } else {
$genout .= "\tpfs=no\n";
}
}