diff --git a/xos/services/vpn/admin.py b/xos/services/vpn/admin.py
index 608f97e..8691a24 100644
--- a/xos/services/vpn/admin.py
+++ b/xos/services/vpn/admin.py
@@ -50,8 +50,8 @@
         server_address (forms.GenericIPAddressField): The ip address on the VPN of this Tenant.
         client_address (forms.GenericIPAddressField): The ip address on the VPN of the client.
         is_persistent (forms.BooleanField): Determines if this Tenant keeps this connection alive through failures.
-        can_view_subnet (forms.BooleanField): Determins if this Tenant makes it's subnet available to the client.
-
+        can_view_subnet (forms.BooleanField): Determines if this Tenant makes it's subnet available to the client.
+        port_number (forms.PositiveSmallIntegerField): The port to use for this Tenant.
     """
     creator = forms.ModelChoiceField(queryset=User.objects.all())
     server_network = forms.GenericIPAddressField(
@@ -59,6 +59,7 @@
     vpn_subnet = forms.GenericIPAddressField(protocol="IPv4", required=True)
     is_persistent = forms.BooleanField(required=False)
     clients_can_see_each_other = forms.BooleanField(required=False)
+    port_number = forms.PositiveSmallIntegerField(required=True)
 
     def __init__(self, *args, **kwargs):
         super(VPNTenantForm, self).__init__(*args, **kwargs)
@@ -77,6 +78,7 @@
             self.fields[
                 'clients_can_see_each_other'].initial = self.instance.clients_can_see_each_other
             self.fields['is_persistent'].initial = self.instance.is_persistent
+            self.fields['port_number'].initial = self.instance.port_number
 
         if (not self.instance) or (not self.instance.pk):
             self.fields['creator'].initial = get_request().user
@@ -95,6 +97,7 @@
         self.instance.server_network = self.cleaned_data.get('server_network')
         self.instance.clients_can_see_each_other = self.cleaned_data.get(
             'clients_can_see_each_other')
+        self.instance.port_number = self.cleaned_data.get('port_number')
 
         if (not self.instance.script):
             self.instance.script = str(time.time()) + ".vpn"
diff --git a/xos/services/vpn/models.py b/xos/services/vpn/models.py
index 65e04e7..33a4b3a 100644
--- a/xos/services/vpn/models.py
+++ b/xos/services/vpn/models.py
@@ -31,7 +31,8 @@
                           'clients_can_see_each_other': True,
                           'is_persistent': True,
                           'script': None,
-                          'ca_crt': None}
+                          'ca_crt': None,
+                          'port': None}
 
     def __init__(self, *args, **kwargs):
         vpn_services = VPNService.get_service_objects().all()
@@ -137,6 +138,16 @@
     def ca_crt(self, value):
         self.set_attribute("ca_crt", value)
 
+    @property
+    def port_number(self):
+        """int: the integer representing the port number for this server"""
+        return self.get_attribute("port", self.default_attributes['port'])
+
+    @port_number.setter
+    def port_number(self, value):
+        self.set_attribute("port", value)
+
+
 
 def model_policy_vpn_tenant(pk):
     """Manages the contain for the VPN Tenant."""
