diff --git a/xos/observers/vpn/steps/sync_vpntenant.yaml b/xos/observers/vpn/steps/sync_vpntenant.yaml
index 4297fce..a8c3e71 100644
--- a/xos/observers/vpn/steps/sync_vpntenant.yaml
+++ b/xos/observers/vpn/steps/sync_vpntenant.yaml
@@ -8,13 +8,16 @@
   - name: install openvpn
     apt: name=openvpn state=present update_cache=yes
 
-  - name: clear key
-    shell: echo "" > "static.key"
+  - name: erase key
+    shell: rm static.key
 
   - name: write key
     shell: echo {{ '{{' }} item {{ '}}' }} >> static.key
     with_items: "{{ server_key }}"
 
+  - name: erase config
+    shell: rm server.conf
+
   - name: write config
     shell:
        |
diff --git a/xos/services/vpn/admin.py b/xos/services/vpn/admin.py
index f8a1e94..2a53bc5 100644
--- a/xos/services/vpn/admin.py
+++ b/xos/services/vpn/admin.py
@@ -41,11 +41,15 @@
 class VPNTenantForm(forms.ModelForm):
     creator = forms.ModelChoiceField(queryset=User.objects.all())
     server_key = forms.CharField(required=False, widget=forms.Textarea)
+    client_conf = forms.CharField(required=False, widget=forms.Textarea)
+    server_address = forms.GenericIPAddressField(protocol='IPv4', required=True)
+    client_address = forms.GenericIPAddressField(protocol='IPv4', required=True)
 
     def __init__(self, *args, **kwargs):
         super(VPNTenantForm, self).__init__(*args, **kwargs)
         self.fields['kind'].widget.attrs['readonly'] = True
         self.fields['server_key'].widget.attrs['readonly'] = True
+        self.fields['client_conf'].widget.attrs['readonly'] = True
         self.fields[
             'provider_service'].queryset = VPNService.get_service_objects().all()
 
@@ -54,16 +58,24 @@
         if self.instance:
             self.fields['creator'].initial = self.instance.creator
             self.fields['server_key'].initial = self.instance.server_key
+            self.fields['client_conf'].initial = self.instance.client_conf
+            self.fields['server_address'].initial = self.instance.server_address
+            self.fields['client_address'].initial = self.instance.client_address
 
         if (not self.instance) or (not self.instance.pk):
             self.fields['creator'].initial = get_request().user
             self.fields['server_key'].initial = self.generate_VPN_key()
+            self.fields['server_address'].initial = "10.8.0.1"
+            self.fields['client_address'].initial = "10.8.0.2"
             if VPNService.get_service_objects().exists():
                 self.fields["provider_service"].initial = VPNService.get_service_objects().all()[0]
 
     def save(self, commit=True):
         self.instance.creator = self.cleaned_data.get("creator")
         self.instance.server_key = self.cleaned_data.get("server_key")
+        self.instance.server_address = self.cleaned_data.get("server_address")
+        self.instance.client_address = self.cleaned_data.get("client_address")
+        self.instance.client_conf = self.generate_client_conf()
         return super(VPNTenantForm, self).save(commit=commit)
 
     def generate_VPN_key(self):
@@ -71,6 +83,17 @@
         (stdout, stderr) = proc.communicate()
         return stdout
 
+    def generate_client_conf(self):
+        conf = "remote " + self.instance.nat_ip + "\n"
+        conf += "dev tun\n"
+        conf += "ifconfig " + self.instance.client_address + " " + self.instance.server_address + "\n"
+        conf += "secret static.key\n"
+        conf += "keepalive 10 60\n"
+        conf += "ping-timer-rem\n"
+        conf += "persist-tun\n"
+        conf += "persist-key"
+        return conf
+
     class Meta:
         model = VPNTenant
 
@@ -80,7 +103,8 @@
     list_display_links = ('id', 'backend_status_icon', 'instance')
     fieldsets = [(None, {'fields': ['backend_status_text', 'kind',
                                     'provider_service', 'instance', 'creator',
-                                    'server_key'],
+                                    'server_key', 'client_conf',
+                                    'server_address', 'client_address'],
                          'classes': ['suit-tab suit-tab-general']})]
     readonly_fields = ('backend_status_text', 'instance')
     form = VPNTenantForm
diff --git a/xos/services/vpn/models.py b/xos/services/vpn/models.py
index c6d0d11..befc586 100644
--- a/xos/services/vpn/models.py
+++ b/xos/services/vpn/models.py
@@ -22,7 +22,10 @@
 
     sync_attributes = ("nat_ip", "nat_mac",)
 
-    default_attributes = {'server_key': 'Error key not found'}
+    default_attributes = {'server_key': 'Error key not found',
+                          'client_conf': 'Configuration not found',
+                          'server_address': '10.8.0.1',
+                          'client_address': '10.8.0.2'}
 
     def __init__(self, *args, **kwargs):
         vpn_services = VPNService.get_service_objects().all()
@@ -73,6 +76,36 @@
     def nat_mac(self):
         return self.addresses.get("nat", (None, None))[1]
 
+    @property
+    def server_address(self):
+        return self.get_attribute(
+            'server_address',
+            self.default_attributes['server_address'])
+
+    @server_address.setter
+    def server_address(self, value):
+        self.set_attribute("server_address", value)
+
+    @property
+    def client_address(self):
+        return self.get_attribute(
+            'client_address',
+            self.default_attributes['client_address'])
+
+    @client_address.setter
+    def client_address(self, value):
+        self.set_attribute("client_address", value)
+
+    @property
+    def client_conf(self):
+        return self.get_attribute(
+            "client_conf",
+            self.default_attributes['client_conf'])
+
+    @client_conf.setter
+    def client_conf(self, value):
+        self.set_attribute("client_conf", value)
+
 
 def model_policy_vpn_tenant(pk):
     # This section of code is atomic to prevent race conditions
