EE Smart 4G Hub IPv4 / IPv6 Issues

Spent a couple of hours troubleshooting an interesting EE Smart 4G Hub with strange intermittent routing issues.

Some sites would work fine and the end user could connect into our IPv4 Citrix ADC fine but our IPv4 Cisco AnyConnect VPN failed each time with the hub’s DNS refusing to return the IPv4 address and so was attempting to route via IPv6 to nowhere.

Resolution was to switch off the very broken dual stack and add an additional profile set to IPv4 only and select that as the default.

Instructions on how to do this:

  • Log in to admin panel 192.168.1.1 (password is on bottom of router, if you don’t know it you will need to factory reset)
  • If it’s the first time logging in password change is enforced
  • Setup -> Profile Management
  • Create a new profile with all settings the same as the initial default profile apart from IP type, change to IPv4 instead of IPv4v6
  • Save and set as default

Instantly started working better and VPN connected through fine.

PowerShell Script: Citrix Workspace for Windows Remove CR and install LTSR

With the release of Citrix Workspace 2503 CR being a complete dustbin fire with no end of issues I’ve decided to move all our endpoints back to the LTSR edition in an attempt to try and get some stability.

PowerShell script is below to help with this transition if anyone else finds it useful, it checks the Citrix Workspace version installed on an endpoint and removes any incorrect version and installs 2402 LTSR.

$minimumVersion = [Version]"24.2.3001.9"
$installerPath = "C:\IT\CitrixWorkspaceApp2402LTSR.exe"

$registryPaths = @(
    "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
    "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
)

$needsReinstall = $true

foreach ($path in $registryPaths) {
    $app = Get-ItemProperty $path -ErrorAction SilentlyContinue |
        Where-Object { $_.DisplayName -like "Citrix Workspace*" } |
        Select-Object -First 1

    if ($app) {
        try {
            $installedVersion = [Version]$app.DisplayVersion
        } catch {
            Write-Output "Could not parse installed version: $($app.DisplayVersion)"
            continue
        }

        if ($installedVersion -eq $minimumVersion) {
            Write-Output "Citrix Workspace is already at an acceptable version: $($app.DisplayVersion)"
            $needsReinstall = $false
        } else {
            Write-Output "Incorrect version detected: $($app.DisplayVersion). Uninstalling..."
            Start-Process -FilePath $installerPath -ArgumentList "/silent", "/uninstall" -PassThru | Wait-Process
        }
        break
    }
}

if ($needsReinstall) {
    Write-Output "Installing Citrix Workspace version $minimumVersion"
    Start-Process -FilePath $installerPath -ArgumentList "/CleanInstall", "/silent", "/includeSSON", "/installMSTeamsPlugin" -PassThru | Wait-Process
    Write-Output "Installation complete."
}

Before running this I’ve set a Group Policy Object to copy the installer from a shared network drive to C:\IT\CitrixWorkspaceApp2402LTSR.exe – change the installer path as and when required.

If all your endpoints were local you could get away with running it direct from a network drive but ours are connected across an SD-WAN so for quickness better to get the installer on each device first before running the script.