Uh oh!
There was an error while loading. Please reload this page.
Updated StrongSwan VPN Implementation - #1741
Conversation
swill
commented
Oct 27, 2016
@rhtyd & @jburwell this PR requires a new System VM template to function. I have a XenServer test environment which I have been using where I deploy RPMs and the System VM which I build with Jenkins for this PR. My current test setup is not implemented in Marvin, but instead uses my The current status of this PR is:
How do you guys recommend we get this PR through the official testing and validation process? I should be able to setup a modified Bubble environment that uses my System VM in order to do the current Marvin tests against KVM. Can BlueO test PRs that require a new System VM? Cheers... |
yadvr
commented
Oct 28, 2016
@swill we had lost our Jenkins setup, while I've built all I could not get a systemvmbuilder job setup yet, so let me do that first so we can build systemvmtemplates once again. blueorangutan acts like a translator that in the background kicks a Jenkins-trillian job, Trillian is general purpose and can accept a custom systemvmtemplate option (in Jenkins but not via the github bot). Can you write tests using Marvin, as it could be easier to run them instead of setup something new. You may modify Marvin to include more dependencies etc. I'll keep you posted once I'm able to build systemvmtemplates. |
yadvr
commented
Oct 28, 2016
@blueorangutan package |
blueorangutan
commented
Oct 28, 2016
@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress. |
yadvr
commented
Oct 28, 2016
@swill I've kicked new systemvmtemplate build jobs based on your PR, I've also included @wido 's systemvm template to include qemu-guest-agent from #1545 : https://github.com/shapeblue/cloudstack/commits/strongswan-sysvm |
blueorangutan
commented
Oct 28, 2016
Packaging result: ✔centos6 ✔centos7 ✔debian. JID-111 |
yadvr
commented
Oct 28, 2016
I've built systemvm templates with strongswan here: http://hydra.scale.ninja/strongswan |
jayapalu
commented
Oct 28, 2016
@swill I will test with latest template in the coming week |
swill
commented
Oct 28, 2016
Thanks guys. :) |
swill
commented
Oct 28, 2016
I am troubleshooting an issue right now behaves as follows.
I will keep you guys posted with the details. I have noted that the PF IP is now the main IP on the |
swill
commented
Nov 2, 2016
I have isolated and fixed the issue where the reboot through the API results in the Remote Access VPN no longer working if either a PF rule or Static NAT rule is defined. The problem existed because the public IPs on I have done basic testing to verify this fixes the problem. We are doing more extensive testing now... |
jburwell
commented
Nov 3, 2016
@murali-reddy did you also fix some issues around source NAT? |
murali-reddy
commented
Nov 3, 2016
swill
commented
Nov 3, 2016
@murali-reddy I will check isolated guest networks today. |
swill
commented
Nov 3, 2016
@murali-reddy I have tested with Isolated Guest Networks. The problem that we experienced with the SourceNAT IP not being primary on the public nic if more than one public IP exists does not exist for Isolated Guest Networks. I have tested my change to the We are currently going through the I am also going to see if I can upgrade the IKE policy to IKEv2 instead of IKEv1 for Remote Access VPN since it provides better security. I am also looking to see if I can change the hashing algorithm from I will not be able to make these change for S2S VPN initially because the configuration fields are different enough between IKEv1 and IKEv2 in that case that I would have to go through and modify a lot more code. That will have to wait for phase two of this implementation. We are continuing to test and improve the implementation, but it is looking pretty good so far. |
apache#1741 Updated StrongSwan VPN Implementation -- (partial merge)
jayapalu
commented
Dec 6, 2016
@rhtyd |
kiwiflyer
commented
Dec 6, 2016
swill
commented
Dec 6, 2016
Rebased against master and fixed merge conflicts... |
swill
commented
Dec 7, 2016
Rebased again because changes in #1659 caused the fixes to |
swill
commented
Dec 7, 2016
@jayapalu were you working off the latest version of my PR? I have fixed the issue of the IP being out of order on reboot in this PR. |
We are running this PR as well as #1706 in production and the merge conflict for merging the two PRs together is quite complicated. Because we had to do the merge conflict for our production of these two PRs, I decided to add it to this PR so other people who don't have an environment to test against don't have to be responsible for figuring out the merge conflict. This PR now includes:
|
28262cd to
f045d65Compareswill
commented
Feb 2, 2017
Rebased against current master to try to fix new issues with tomcat. |
borisstoyanov
commented
Feb 6, 2017
@swill blueorangutan package builds a yum repo from the PR, but it doesn't build new system vms, we'll need to build them manually, build an env with the packages, update the ssvm and kick the tests manually AFAIK. |
swill
commented
Feb 6, 2017
@borisstoyanov thanks. Yes, that explains why there are failures. When I ran my tests, I did it with a system VM built from this PR: #1741 (comment) Is it possible to manually build the system VM template and specify it when testing with Trillian. I can see if I can build and expose publicly templates for Xen and KVM if that helps. |
DaanHoogland
commented
Feb 8, 2017
@blueorangutan package |
blueorangutan
commented
Feb 8, 2017
@DaanHoogland a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress. |
blueorangutan
commented
Feb 8, 2017
Packaging result: ✔centos6 ✔centos7 ✔debian. JID-474 |
DaanHoogland
commented
Feb 8, 2017
@blueorangutan test |
blueorangutan
commented
Feb 8, 2017
@DaanHoogland a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests |
swill
commented
Feb 8, 2017
@DaanHoogland I don't think this will work. I think you have to manually specify a SystemVM template built from this PR in order for the tests to work. I don't think a SystemVM from this PR is used by default. |
swill
commented
Feb 9, 2017
CI RESULTSSummary of the problem(s): Associated Uploads
Uploads will be available until Comment created by |
swill
commented
Feb 9, 2017
Here is the CI run for this PR using my KVM Bubble environment. This CI run is using a SystemVM built from this PR branch (required for a valid test) and since we have not been able to do that with Trillian (so far), only my CI runs are actually testing this functionality correctly (so far). The failures listed are not associated with my PR. Historically, I have had some trouble with consistency with connectivity inside a bubble CI run, so it is possible that could be coming into play as well. I think this PR is ready. We have been running this PR in production for two months now and it fixes a lot of problems. Can I please get some LGTM on this so we can get it into 4.10? |
DaanHoogland
commented
Feb 9, 2017
via email
I started a build yesterday but am not at my computer today. I'll look at
the results later.
Biligual auto correct use. Read at your own risico …On 8 Feb 2017 4:58 pm, "Will Stevens" ***@***.***> wrote:
@DaanHoogland <https://github.com/DaanHoogland> I don't think this will
work. I think you have to manually specify a SystemVM template built from
this PR in order for the tests to work. I don't think a SystemVM from this
PR is used by default.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1741 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ACXysTl0u14tUk1K6hyzSfJpgR07rG7gks5raeYPgaJpZM4KiVbU>
.
|
swill
commented
Feb 9, 2017
@DaanHoogland did you make the test run in Trillian install a SystemVM built from this PR? If you didn't it won't actually be a valid test run... |
DaanHoogland
commented
Feb 9, 2017
via email
@swill I know and work needs done. On the other hand, you mentioned you
wanted to see this run in trillian. You still want that? Else I will skip
and just review the code tomorrow.
Biligual auto correct use. Read at your own risico …On 9 Feb 2017 6:29 pm, "Will Stevens" ***@***.***> wrote:
@DaanHoogland <https://github.com/DaanHoogland> did you make the test run
in Trillian install a SystemVM built from this PR? If you didn't it won't
actually be a valid test run...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1741 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ACXysUVYKVbIJIXDlnrSXhez12lK23GKks5ra00HgaJpZM4KiVbU>
.
|
swill
commented
Feb 9, 2017
@DaanHoogland: yes, I want it run in Trillian, but my understanding is that manual steps need to be taken in the test setup for Trillian in order to first build the SystemVM from this PR and then use that SystemVM in the Trillian test run. That has not been done, and any test done by Trillian without that done is not a valid test of the PR. Make sense? So yes, I would like to have this run against Trillian, but it is only valid if the run includes the SystemVM from this PR. |
jayapalu
commented
Feb 10, 2017
@swill I have tested this PR with systemvm template with strongswan installed long back. The s2s vpn worked fine. |
asfbot
commented
Feb 10, 2017
Rajani Karuturi on dev@cloudstack.apache.org replies: ~ Rajani http://cloudplatform.accelerite.com/ On February 10, 2017 at 2:24 PM, Daan Hoogland(daan.hoogland@shapeblue.com) wrote: sorry to keep you guys waiting, I am struggling my way back in daan.hoogland@shapeblue.com |
swill
commented
Feb 10, 2017
Here is another set of tests run to validate all the settings (in addition to the normal tests). Still looking for one more review... |
deepthimachiraju
commented
Feb 14, 2017
@swill Would do some basic testing of the PR and update the results. |
swill
commented
Feb 14, 2017
@deepthimachiraju remember that you need a new system vm built from this PR for this functionality to work. |
karuturi
commented
Feb 14, 2017
It has required LGTMs and tests. I am merging this. |
Updated StrongSwan VPN ImplementationThis PR is a merge of @jayapalu changes in #872 and the changes I had to make to get the functionality working. I have done pretty extensive testing of this code so far and we are looking to be in pretty good shape. One thing to note is that a `Diffie-Hellman` group **is required** in order for this feature to work correctly. It is not highlighted in the tests below, but I have shown that the `PFS` is not required for this feature to work. In #872 I have shown a more exhaustive set of tests of this code, but I have limited this set of tests to a recommended `IKE` and `ESP` configuration in order to reduce the noise and test the other areas of functionality. **Test Results** I am testing this functionality by creating two VPCs with VMs in each and creating a S2S VPN connection between the two VPCs. Then I SSH into a VM in one VPC and I ping the private IP of a VM in the other VPC. Then I tear it down and try a different configuration. _Setup_ ``` VPC 1 VPC 2 ===== ===== VPN Gateway VPN Gateway VPN Customer Gateway VPN Customer Gateway VPN Connection <---> VPN Connection - Passive = True - Passive = False ``` _Legend_ `SKIP` => At least one of the VPN Connections did not come up, so no test was run. `OK` => The ping test was successful over the S2S VPN connection. `FAIL` => The ping test failed over the S2S VPN connection. `Passive` => Specifies if either the `<vpc_1> : <vpc_2>` sides of the VPN Connection is set to passive. `Conn State` => Specifies the connection status of the `<vpc_1> : <vpc_2>` VPN Connection in the UI. `Requires Reset` => If the ping test does not result in an `OK`, then a VPN Connection Reset is performed on either `<vpc_1> : <vpc_2>` sides of the VPN Connection based on which side is not showing `Connected`. The results in the `Status` column is the final result after the reset is performed. _Results_ ``` +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | Status | IKE & ESP | DPD | Encap | IKE Life | ESP Life | Passive | Conn State | Requires Reset | +========+======================+=======+=======+==========+==========+===============+=============================+================+ | OK | aes128-sha1;modp1536 | True | False | 86400 | 3600 | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | True | 86400 | 3600 | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | | 3600 | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | 86400 | | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | | | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | 86400 | 3600 | False : False | Connected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | 86400 | 3600 | True : True | Disconnected : Disconnected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | 86400 | 3600 | False : True | Connected : Disconnected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | False | False | 86400 | 3600 | False : False | Connected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | False | False | 86400 | 3600 | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | False | False | 86400 | 3600 | True : True | Disconnected : Disconnected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | False | False | 86400 | 3600 | False : True | Connected : Disconnected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | SKIP | aes128-sha1 | True | False | 86400 | 3600 | True : False | Disconnected : Error | True : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | SKIP | aes128-sha1 | False | False | 86400 | 3600 | True : False | Disconnected : Error | True : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | FAIL | aes128-sha1 | True | False | 86400 | 3600 | True : True | Disconnected : Disconnected | True : True | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | SKIP | aes128-sha1 | True | False | 86400 | 3600 | False : False | Connected : Error | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ ``` * pr/1741: complete implementation of the StrongSwan VPN feature Signed-off-by: Rajani Karuturi <rajani.karuturi@accelerite.com>
yadvr
commented
Feb 15, 2017
swill
commented
Feb 15, 2017
thank you sir. :) |
Updated StrongSwan VPN ImplementationThis PR is a merge of @jayapalu changes in apache#872 and the changes I had to make to get the functionality working. I have done pretty extensive testing of this code so far and we are looking to be in pretty good shape. One thing to note is that a `Diffie-Hellman` group **is required** in order for this feature to work correctly. It is not highlighted in the tests below, but I have shown that the `PFS` is not required for this feature to work. In apache#872 I have shown a more exhaustive set of tests of this code, but I have limited this set of tests to a recommended `IKE` and `ESP` configuration in order to reduce the noise and test the other areas of functionality. **Test Results** I am testing this functionality by creating two VPCs with VMs in each and creating a S2S VPN connection between the two VPCs. Then I SSH into a VM in one VPC and I ping the private IP of a VM in the other VPC. Then I tear it down and try a different configuration. _Setup_ ``` VPC 1 VPC 2 ===== ===== VPN Gateway VPN Gateway VPN Customer Gateway VPN Customer Gateway VPN Connection <---> VPN Connection - Passive = True - Passive = False ``` _Legend_ `SKIP` => At least one of the VPN Connections did not come up, so no test was run. `OK` => The ping test was successful over the S2S VPN connection. `FAIL` => The ping test failed over the S2S VPN connection. `Passive` => Specifies if either the `<vpc_1> : <vpc_2>` sides of the VPN Connection is set to passive. `Conn State` => Specifies the connection status of the `<vpc_1> : <vpc_2>` VPN Connection in the UI. `Requires Reset` => If the ping test does not result in an `OK`, then a VPN Connection Reset is performed on either `<vpc_1> : <vpc_2>` sides of the VPN Connection based on which side is not showing `Connected`. The results in the `Status` column is the final result after the reset is performed. _Results_ ``` +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | Status | IKE & ESP | DPD | Encap | IKE Life | ESP Life | Passive | Conn State | Requires Reset | +========+======================+=======+=======+==========+==========+===============+=============================+================+ | OK | aes128-sha1;modp1536 | True | False | 86400 | 3600 | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | True | 86400 | 3600 | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | | 3600 | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | 86400 | | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | | | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | 86400 | 3600 | False : False | Connected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | 86400 | 3600 | True : True | Disconnected : Disconnected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | True | False | 86400 | 3600 | False : True | Connected : Disconnected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | False | False | 86400 | 3600 | False : False | Connected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | False | False | 86400 | 3600 | True : False | Disconnected : Connected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | False | False | 86400 | 3600 | True : True | Disconnected : Disconnected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | OK | aes128-sha1;modp1536 | False | False | 86400 | 3600 | False : True | Connected : Disconnected | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | SKIP | aes128-sha1 | True | False | 86400 | 3600 | True : False | Disconnected : Error | True : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | SKIP | aes128-sha1 | False | False | 86400 | 3600 | True : False | Disconnected : Error | True : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | FAIL | aes128-sha1 | True | False | 86400 | 3600 | True : True | Disconnected : Disconnected | True : True | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ | SKIP | aes128-sha1 | True | False | 86400 | 3600 | False : False | Connected : Error | False : False | +--------+----------------------+-------+-------+----------+----------+---------------+-----------------------------+----------------+ ``` * pr/1741: Including the fix from 1706 since the merge conflict is complicated removed deprecated options fixed the incorrect ordering of public IPs on eth1 after a VR reboot merging jayapalu and swill's strongswan vpn changes into a single commit Signed-off-by: Patrick Dube <pdube@cloudops.com>
This PR is a merge of @jayapalu changes in #872 and the changes I had to make to get the functionality working.
I have done pretty extensive testing of this code so far and we are looking to be in pretty good shape. One thing to note is that a
Diffie-Hellmangroup is required in order for this feature to work correctly. It is not highlighted in the tests below, but I have shown that thePFSis not required for this feature to work. In #872 I have shown a more exhaustive set of tests of this code, but I have limited this set of tests to a recommendedIKEandESPconfiguration in order to reduce the noise and test the other areas of functionality.Test Results
I am testing this functionality by creating two VPCs with VMs in each and creating a S2S VPN connection between the two VPCs. Then I SSH into a VM in one VPC and I ping the private IP of a VM in the other VPC. Then I tear it down and try a different configuration.
Setup
Legend
SKIP=> At least one of the VPN Connections did not come up, so no test was run.OK=> The ping test was successful over the S2S VPN connection.FAIL=> The ping test failed over the S2S VPN connection.Passive=> Specifies if either the<vpc_1> : <vpc_2>sides of the VPN Connection is set to passive.Conn State=> Specifies the connection status of the<vpc_1> : <vpc_2>VPN Connection in the UI.Requires Reset=> If the ping test does not result in anOK, then a VPN Connection Reset is performed on either<vpc_1> : <vpc_2>sides of the VPN Connection based on which side is not showingConnected. The results in theStatuscolumn is the final result after the reset is performed.Results