From f45767b6a6dd476b4f262b2bd5734deae8fbcc98 Mon Sep 17 00:00:00 2001 From: Ben Smithurst Date: Mon, 27 Jan 2025 15:33:29 +0000 Subject: [PATCH 1/6] security/tailscale: make login timeout (tailscale up --timeout parameter) configurable (#4490) --- .../controllers/OPNsense/Tailscale/forms/settings.xml | 9 ++++++++- .../mvc/app/models/OPNsense/Tailscale/Settings.xml | 4 ++++ .../service/templates/OPNsense/Tailscale/rc.conf.d | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml b/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml index 38d929de3..e2e14c102 100644 --- a/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml +++ b/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml @@ -5,10 +5,17 @@ checkbox This will activate the Tailscale service. + + settings.loginTimeout + + text + true + Maximum time to wait for successful login, in seconds. Set to 0 to wait indefinitely, however this may prevent OPNsense booting completely if the Tailscale control plane is unavailable. Default is 10 seconds. + settings.listenPort - text + text UDP port to listen on for WireGuard and peer-to-peer traffic. diff --git a/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml index e23c5d4a6..82bd86a96 100644 --- a/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml +++ b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml @@ -6,6 +6,10 @@ 0 Y + + 10 + Y + 41641 Y diff --git a/security/tailscale/src/opnsense/service/templates/OPNsense/Tailscale/rc.conf.d b/security/tailscale/src/opnsense/service/templates/OPNsense/Tailscale/rc.conf.d index 500a34c52..6d1632304 100644 --- a/security/tailscale/src/opnsense/service/templates/OPNsense/Tailscale/rc.conf.d +++ b/security/tailscale/src/opnsense/service/templates/OPNsense/Tailscale/rc.conf.d @@ -10,6 +10,7 @@ tailscaled_enable="YES" tailscaled_port="{{ OPNsense.tailscale.settings.listenPort }}" {% endif %} {% set up_args = [] %} +{% do up_args.append("--timeout=" + OPNsense.tailscale.settings.loginTimeout + "s") %} {% if helpers.exists('OPNsense.tailscale.settings.advertiseExitNode') and OPNsense.tailscale.settings.advertiseExitNode|default("0") == "1" %} {% do up_args.append("--advertise-exit-node") %} {% else %} From 4dce2f33d91660dd218bd4c2d34e53ca4266fd51 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Mon, 27 Jan 2025 16:34:42 +0100 Subject: [PATCH 2/6] security/tailscale: add a version (and bump it) --- .../src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml index 82bd86a96..2ca43451b 100644 --- a/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml +++ b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml @@ -1,6 +1,7 @@ //OPNsense/tailscale/settings Tailscale general settings + 1.0.1 0 From 068f22ce541fc010ef96405434c1689295dc08b1 Mon Sep 17 00:00:00 2001 From: Ben Smithurst Date: Mon, 27 Jan 2025 15:39:36 +0000 Subject: [PATCH 3/6] security/tailscale: Allow use of an exit node (#4438) --- .../OPNsense/Tailscale/forms/settings.xml | 6 ++++ .../Tailscale/FieldTypes/ExitNodeField.php | 31 +++++++++++++++++++ .../models/OPNsense/Tailscale/Settings.xml | 1 + .../views/OPNsense/Tailscale/settings.volt | 1 + .../app/views/OPNsense/Tailscale/status.volt | 10 ++++++ .../templates/OPNsense/Tailscale/rc.conf.d | 3 ++ 6 files changed, 52 insertions(+) create mode 100644 security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/FieldTypes/ExitNodeField.php diff --git a/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml b/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml index e2e14c102..4cdef72dc 100644 --- a/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml +++ b/security/tailscale/src/opnsense/mvc/app/controllers/OPNsense/Tailscale/forms/settings.xml @@ -30,6 +30,12 @@ checkbox Offer to be an exit node for outbound internet traffic from the Tailscale network. + + settings.useExitNode + + dropdown + Route traffic to the specified exit node. Note that this only affects traffic routed into your Tailscale interface, which you will have to configure separately using firewall rules and hybrid outbound NAT rules. + settings.acceptSubnetRoutes diff --git a/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/FieldTypes/ExitNodeField.php b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/FieldTypes/ExitNodeField.php new file mode 100644 index 000000000..f886f6069 --- /dev/null +++ b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/FieldTypes/ExitNodeField.php @@ -0,0 +1,31 @@ +configdRun('tailscale tailscale-status')), true); + $exitNodes = ['' => gettext('None')]; + + if (is_array($response) && array_key_exists('Peer', $response) && is_array($response['Peer'])) { + foreach ($response['Peer'] as $peer) { + if ($peer['ExitNodeOption']) { + $exitNodes[$peer['TailscaleIPs'][0]] = $peer['HostName']; + } + } + } + + self::$internalCacheOptionList = $exitNodes; + } + $this->internalOptionList = self::$internalCacheOptionList; + } +} diff --git a/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml index 2ca43451b..e6d8f962e 100644 --- a/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml +++ b/security/tailscale/src/opnsense/mvc/app/models/OPNsense/Tailscale/Settings.xml @@ -23,6 +23,7 @@ 0 Y + 0 Y diff --git a/security/tailscale/src/opnsense/mvc/app/views/OPNsense/Tailscale/settings.volt b/security/tailscale/src/opnsense/mvc/app/views/OPNsense/Tailscale/settings.volt index aee1bd69f..e5141b0fc 100644 --- a/security/tailscale/src/opnsense/mvc/app/views/OPNsense/Tailscale/settings.volt +++ b/security/tailscale/src/opnsense/mvc/app/views/OPNsense/Tailscale/settings.volt @@ -1,6 +1,7 @@