diff --git a/docs/features/vpn-tunnels.md b/docs/features/vpn-tunnels.md
index a89265ec2..ae6df70c8 100644
--- a/docs/features/vpn-tunnels.md
+++ b/docs/features/vpn-tunnels.md
@@ -1,6 +1,6 @@
# Tunnels
-NetBox can model private tunnels formed among virtual termination points across your network. Typical tunnel implementations include GRE, IP-in-IP, or IPSec. A tunnel may be terminated to two or more device or virtual machine interfaces.
+NetBox can model private tunnels formed among virtual termination points across your network. Typical tunnel implementations include GRE, IP-in-IP, and IPSec. A tunnel may be terminated to two or more device or virtual machine interfaces.
```mermaid
flowchart TD
diff --git a/docs/models/vpn/tunneltermination.md b/docs/models/vpn/tunneltermination.md
index 8bcfd11c4..8400eaa86 100644
--- a/docs/models/vpn/tunneltermination.md
+++ b/docs/models/vpn/tunneltermination.md
@@ -21,7 +21,7 @@ The functional role of the attached interface. The following options are availab
!!! note
Multiple hub terminations may be attached to a tunnel.
-### Interface
+### Termination
The device or virtual machine interface terminated to the tunnel.
diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py
index 2e3395a43..1df07bb9b 100644
--- a/netbox/dcim/models/device_components.py
+++ b/netbox/dcim/models/device_components.py
@@ -551,11 +551,6 @@ class BaseInterface(models.Model):
blank=True,
verbose_name=_('bridge interface')
)
- tunnel_terminations = GenericRelation(
- to='vpn.TunnelTermination',
- content_type_field='interface_type',
- object_id_field='interface_id'
- )
class Meta:
abstract = True
diff --git a/netbox/templates/vpn/tunnel.html b/netbox/templates/vpn/tunnel.html
index 2d9274ad9..544ffadae 100644
--- a/netbox/templates/vpn/tunnel.html
+++ b/netbox/templates/vpn/tunnel.html
@@ -26,6 +26,10 @@
{% trans "Status" %} |
{% badge object.get_status_display bg_color=object.get_status_color %} |
+
+ {% trans "Description" %} |
+ {{ object.description|placeholder }} |
+
{% trans "Encapsulation" %} |
{{ object.get_encapsulation_display }} |
@@ -34,6 +38,10 @@
{% trans "IPSec profile" %} |
{{ object.ipsec_profile|linkify|placeholder }} |
+
+ {% trans "Tunnel ID" %} |
+ {{ object.tunnel_id|placeholder }} |
+
{% trans "Tenant" %} |
@@ -43,18 +51,6 @@
{{ object.tenant|linkify|placeholder }}
|
-
- {% trans "Pre-shared key" %} |
- {{ object.preshared_key|placeholder }} |
-
-
- {% trans "Tunnel ID" %} |
- {{ object.tunnel_id|placeholder }} |
-
-
- {% trans "Description" %} |
- {{ object.description|placeholder }} |
-
diff --git a/netbox/vpn/api/serializers.py b/netbox/vpn/api/serializers.py
index 881d3d0c0..1a517fe59 100644
--- a/netbox/vpn/api/serializers.py
+++ b/netbox/vpn/api/serializers.py
@@ -148,7 +148,7 @@ class IPSecProposalSerializer(NetBoxModelSerializer):
model = IPSecProposal
fields = (
'id', 'url', 'display', 'name', 'description', 'encryption_algorithm', 'authentication_algorithm',
- 'sa_lifetime_data', 'sa_lifetime_seconds', 'tags', 'custom_fields', 'created', 'last_updated',
+ 'sa_lifetime_seconds', 'sa_lifetime_data', 'tags', 'custom_fields', 'created', 'last_updated',
)
diff --git a/netbox/vpn/filtersets.py b/netbox/vpn/filtersets.py
index d601eeeeb..8a474b987 100644
--- a/netbox/vpn/filtersets.py
+++ b/netbox/vpn/filtersets.py
@@ -145,7 +145,7 @@ class IKEPolicyFilterSet(NetBoxModelFilterSet):
class Meta:
model = IKEPolicy
- fields = ['id', 'name']
+ fields = ['id', 'name', 'preshared_key']
def search(self, queryset, name, value):
if not value.strip():
diff --git a/netbox/vpn/forms/bulk_edit.py b/netbox/vpn/forms/bulk_edit.py
index 9dee70418..a7b097b5c 100644
--- a/netbox/vpn/forms/bulk_edit.py
+++ b/netbox/vpn/forms/bulk_edit.py
@@ -70,9 +70,6 @@ class TunnelTerminationBulkEditForm(NetBoxModelBulkEditForm):
)
model = TunnelTermination
- fieldsets = (
- (None, ('role',)),
- )
class IKEProposalBulkEditForm(NetBoxModelBulkEditForm):
diff --git a/netbox/vpn/forms/bulk_import.py b/netbox/vpn/forms/bulk_import.py
index b912153d2..5b42cc761 100644
--- a/netbox/vpn/forms/bulk_import.py
+++ b/netbox/vpn/forms/bulk_import.py
@@ -190,7 +190,7 @@ class IPSecProposalImportForm(NetBoxModelImportForm):
class IPSecPolicyImportForm(NetBoxModelImportForm):
pfs_group = CSVChoiceField(
- label=_('PFS group'),
+ label=_('Diffie-Hellman group for Perfect Forward Secrecy'),
choices=DHGroupChoices
)
proposals = CSVModelMultipleChoiceField(
diff --git a/netbox/vpn/tables.py b/netbox/vpn/tables.py
index a174c5a43..304467586 100644
--- a/netbox/vpn/tables.py
+++ b/netbox/vpn/tables.py
@@ -48,7 +48,7 @@ class TunnelTable(TenancyColumnsMixin, NetBoxTable):
'pk', 'id', 'name', 'status', 'encapsulation', 'ipsec_profile', 'tenant', 'tenant_group', 'tunnel_id',
'termination_count', 'description', 'comments', 'tags', 'created', 'last_updated',
)
- default_columns = ('pk', 'name', 'status', 'encapsulation', 'tenant', 'terminations_count')
+ default_columns = ('pk', 'name', 'status', 'encapsulation', 'ipsec_profile', 'tenant', 'terminations_count')
class TunnelTerminationTable(TenancyColumnsMixin, NetBoxTable):