diff --git a/ers5952-manager.jsx b/ers5952-manager.jsx
index e550435..977f648 100644
--- a/ers5952-manager.jsx
+++ b/ers5952-manager.jsx
@@ -1913,7 +1913,7 @@ function DeviceAccessTab({ session, onNeedAuth, backendOk }) {
// WIREGUARD TAB
// ══════════════════════════════════════════════════════════════════════════════
-function QRModal({ config, name, onClose }) {
+function QRModal({ config, name, ctrldNote, onClose }) {
// Render QR using a simple API since we can't use native qrencode in browser
const [qrUrl, setQrUrl] = useState('');
useEffect(() => {
@@ -1936,6 +1936,14 @@ function QRModal({ config, name, onClose }) {
maxHeight:120,overflowY:"auto",marginBottom:12}}>
{config}
+ {ctrldNote && (
+
+
ControlD DNS Setup
+ {ctrldNote}
+
+ )}
);
}
@@ -2533,6 +2547,7 @@ function WireGuardTab({ session, onNeedAuth, backendOk, vlans = [] }) {
function OPNsenseWGSection({
opnWg, opnLoading, opnError, opnSetup, setOpnSetup,
opnPeerName, setOpnPeerName, opnVlans, opnAdding,
+ opnDnsProfile, setOpnDnsProfile,
session, onNeedAuth, vlans,
onToggleVlan, onSetupServer, onDeleteServer,
onAddPeer, onRevokePeer, onShowConf, onRefresh,
@@ -2779,6 +2794,19 @@ function OPNsenseWGSection({
+
+
+
+ setOpnDnsProfile(e.target.value)}
+ placeholder="house"/>
+
+
+ VPN clients use OPNsense DNS → Unbound → ctrld → ControlD.
+ This profile applies to the WireGuard tunnel subnet.
+
+
+
{!session && (