diff --git a/xos/observers/vpn/steps/sync_vpntenant.py b/xos/observers/vpn/steps/sync_vpntenant.py
index b12180c..bd8e9f9 100644
--- a/xos/observers/vpn/steps/sync_vpntenant.py
+++ b/xos/observers/vpn/steps/sync_vpntenant.py
@@ -29,10 +29,13 @@
         return objs
 
     def get_extra_attributes(self, o):
-        return {"server_key": o.server_key.splitlines()}
+        return {"server_key": o.server_key.splitlines(),
+                "is_persistent": o.is_persistent,
+                "can_view_subnet": o.can_view_subnet}
 
     def generate_client_conf(self, tenant):
-        conf = "remote " + tenant.nat_ip + "\n"
+        # tenant.nat_ip maybe None when the first line executes
+        conf = "remote " + str(tenant.nat_ip) + "\n"
         conf += "dev tun\n"
         conf += "ifconfig " + tenant.client_address + " " + tenant.server_address + "\n"
         conf += "secret static.key\n"
diff --git a/xos/observers/vpn/steps/sync_vpntenant.yaml b/xos/observers/vpn/steps/sync_vpntenant.yaml
index a8c3e71..da18ebd 100644
--- a/xos/observers/vpn/steps/sync_vpntenant.yaml
+++ b/xos/observers/vpn/steps/sync_vpntenant.yaml
@@ -22,7 +22,7 @@
     shell:
        |
        printf "dev tun
-       ifconfig 10.8.0.1 10.8.0.2
+       ifconfig {{ server_address }} {{ client_address }}
        secret static.key
        keepalive 10 60
        ping-timer-rem
diff --git a/xos/services/vpn/admin.py b/xos/services/vpn/admin.py
index 0c666f9..4b84299 100644
--- a/xos/services/vpn/admin.py
+++ b/xos/services/vpn/admin.py
@@ -44,6 +44,8 @@
     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)
+    is_persistent = forms.BooleanField()
+    can_view_subnet = forms.BooleanField()
 
     def __init__(self, *args, **kwargs):
         super(VPNTenantForm, self).__init__(*args, **kwargs)
@@ -61,12 +63,16 @@
             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
+            self.fields['is_persistent'].initial = self.instance.is_persistent
+            self.fields['can_view_subnet'].initial = self.instance.can_view_subnet
 
         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"
+            self.fields['is_persistent'].initial = True
+            self.fields['can_view_subnet'].initial = False
             if VPNService.get_service_objects().exists():
                 self.fields["provider_service"].initial = VPNService.get_service_objects().all()[0]
 
@@ -75,6 +81,8 @@
         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.is_persistent = self.cleaned_data.get('is_persistent')
+        self.instance.can_view_subnet = self.cleaned_data.get('can_view_subnet')
         return super(VPNTenantForm, self).save(commit=commit)
 
     def generate_VPN_key(self):
@@ -92,7 +100,8 @@
     fieldsets = [(None, {'fields': ['backend_status_text', 'kind',
                                     'provider_service', 'instance', 'creator',
                                     'server_key', 'client_conf',
-                                    'server_address', 'client_address'],
+                                    'server_address', 'client_address',
+                                    'is_persistent', 'can_view_subnet'],
                          '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 befc586..edcae50 100644
--- a/xos/services/vpn/models.py
+++ b/xos/services/vpn/models.py
@@ -25,7 +25,9 @@
     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'}
+                          'client_address': '10.8.0.2',
+                          'can_view_subnet': False,
+                          'is_persistent': True}
 
     def __init__(self, *args, **kwargs):
         vpn_services = VPNService.get_service_objects().all()
@@ -106,6 +108,26 @@
     def client_conf(self, value):
         self.set_attribute("client_conf", value)
 
+    @property
+    def is_persistent(self):
+        return self.get_attribute(
+            "is_persistent",
+            self.default_attributes['is_persistent'])
+
+    @is_persistent.setter
+    def is_persistent(self, value):
+        self.set_attribute("is_persistent", value)
+
+    @property
+    def can_view_subnet(self):
+        return self.get_attribute(
+            "can_view_subnet",
+            self.default_attributes['can_view_subnet'])
+
+    @can_view_subnet.setter
+    def can_view_subnet(self, value):
+        self.set_attribute("can_view_subnet", value)
+
 
 def model_policy_vpn_tenant(pk):
     # This section of code is atomic to prevent race conditions
