Com vaig resoldre l'IP Allowlisting obligatori a Marketing Cloud Engagement com a freelance
Una guia pas a pas per a consultors que treballen amb diverses instàncies de MCE, amb IP dinàmica i des de qualsevol lloc.
Per què ho necessitava
Salesforce farà obligatori l'IP Allowlisting en mode bloqueig (Log Violations and Deny Access) a tots els comptes de Marketing Cloud Engagement. Afecta tant l'accés a la interfície com l'accés per API, no hi ha opt-out i s'està aplicant per onades fins al gener de 2027. Cada compte rep un correu amb la seva data. Alguns comptes passen a bloqueig el 15 d'octubre de 2026.
Aquell dia, Salesforce aplica una llista inicial de rangs d'IP basada en els accessos correctes dels darrers sis mesos. Si entres des d'una IP que no hi és, et bloqueja.
És un problema real si:
- treballes amb diversos clients, cadascun amb el seu compte de MCE,
- tens IP dinàmica a casa,
- vols treballar des d'un hotel, un aeroport o un coworking,
- i no vols dependre de la VPN corporativa de cada client.
El meu objectiu era senzill: una IP fixa que pugui donar a tots els meus clients, que funcioni des de qualsevol lloc i que només afecti el trànsit de Marketing Cloud.
La solució d'un cop d'ull
Portàtil ──(WireGuard)──> Servidor UE, IP fixa ──> Marketing Cloud
│
└──(directe)──> Tota la resta (Salesforce core, YouTube...)
- Un servidor cloud petit a la UE amb una IPv4 pública fixa.
- Un túnel privat WireGuard entre el meu portàtil i aquest servidor.
- Un petit proxy al servidor, accessible només des de dins del túnel.
- Un fitxer PAC que diu al navegador: els dominis de Marketing Cloud van pel proxy i tota la resta va directa.
- Postman i els scripts d'API fan servir el mateix proxy.
El resultat: Marketing Cloud sempre veu la mateixa IP. La meva navegació normal, les videotrucades i les orgs de Salesforce core continuen sortint per la connexió de sempre.
Abans de començar
Per què no una VPN comercial? Les IP de les VPN compartides canvien i les fan servir milers de persones. Afegir-les a un allowlist li treu tot el sentit. A més, des de l'abril de 2026 Salesforce core bloqueja les connexions des de VPN anonimitzadores i IP d'alt risc, i pot congelar l'usuari. Amb aquest muntatge, el trànsit de core no passa mai pel servidor, així que aquest risc no existeix.
Què necessites:
- Un Mac o un PC amb Windows. Jo el vaig muntar en un Mac, així que els passos principals fan servir macOS. La part del servidor és igual per a qualsevol sistema, i després del pas 6 hi ha una secció amb els equivalents per a Windows.
- Unes dues hores.
- Un compte en un proveïdor cloud. Jo vaig fer servir Hetzner Cloud (Alemanya). OVHcloud o Scaleway també serveixen. Tria un servidor a la UE si als teus clients els importa el RGPD.
- Una mica de soltesa amb el Terminal.
Cost (octubre de 2026): el servidor més petit que vaig poder contractar em va sortir per uns 14,50 € al mes amb IVA (servidor i IPv4), facturat per hores i sense permanència. Com a autònom, és una despesa de l'activitat. Hi ha plans més econòmics, però no tenien disponibilitat quan el vaig muntar.
Pas 1. Crea una clau SSH al teu Mac
Al Terminal:
ssh-keygen -t ed25519 -C "you@yourdomain.com"
cat ~/.ssh/id_ed25519.pub
- Prem Enter per acceptar la ubicació per defecte. Si et pregunta si vols sobreescriure una clau existent, respon n i fes servir la que ja tens.
- Posa-hi una passphrase i desa-la al teu gestor de contrasenyes.
- Copia la línia que comença per
ssh-ed25519. És la clau pública i es pot compartir. La privada no surt mai del teu Mac.
Per no haver d'escriure la passphrase cada vegada:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Pas 2. Crea el servidor
A la consola del teu proveïdor:
- Tipus: el pla més petit de vCPU compartida. No necessites CPU dedicada; WireGuard gairebé no consumeix.
- Ubicació: UE.
- Imatge: Ubuntu LTS.
- Xarxa: activa una IPv4 pública. És la IP que donaràs als teus clients.
- Clau SSH: enganxa la teva clau pública.
- Crea el servidor i apunta't la seva IPv4.
Després, dos ajustos importants:
- Firewall: crea'n un que només permeti l'entrada per TCP 22 (SSH) i UDP 51820 (WireGuard), i aplica'l al servidor.
- Protegeix la IP: activa la protecció contra l'esborrat de la IPv4 i, si el teu proveïdor ho permet, desactiva l'esborrat automàtic. Si la IP canvia, hauràs de demanar a tots els teus clients que actualitzin el seu allowlist.
Activa també l'autenticació en dos passos al compte del proveïdor i guarda bé els codis de recuperació. Qui controli aquest compte controla la IP en què confien els teus clients.
Pas 3. Configura el servidor
Connecta't des del teu Mac:
ssh root@YOUR_SERVER_IP
I enganxa aquest bloc sencer. Instal·la WireGuard i el proxy, aplica un enduriment bàsic i, al final, mostra la configuració per al teu portàtil.
export DEBIAN_FRONTEND=noninteractive
apt update && apt -y upgrade
apt -y install wireguard tinyproxy unattended-upgrades
dpkg-reconfigure -f noninteractive unattended-upgrades
# SSH with keys only
echo "PasswordAuthentication no" > /etc/ssh/sshd_config.d/99-hardening.conf
# Prefer IPv4 for outgoing connections (your allowlist uses the IPv4)
echo "precedence ::ffff:0:0/96 100" >> /etc/gai.conf
SERVER_IP=$(curl -4 -s https://ifconfig.me)
# WireGuard keys and config
mkdir -p /etc/wireguard && cd /etc/wireguard
( umask 077
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee laptop.key | wg pubkey > laptop.pub
cat > wg0.conf <<EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = $(cat server.key)
[Peer]
PublicKey = $(cat laptop.pub)
AllowedIPs = 10.8.0.2/32
EOF
)
systemctl enable --now wg-quick@wg0
# Proxy, only listening inside the tunnel
cat > /etc/tinyproxy/tinyproxy.conf <<EOF
User tinyproxy
Group tinyproxy
Port 8888
Listen 10.8.0.1
Timeout 600
LogLevel Info
MaxClients 50
Allow 10.8.0.0/24
ConnectPort 443
EOF
mkdir -p /etc/systemd/system/tinyproxy.service.d
printf "[Unit]\nAfter=wg-quick@wg0.service\nRequires=wg-quick@wg0.service\n" \
> /etc/systemd/system/tinyproxy.service.d/override.conf
# PAC file, served only inside the tunnel
mkdir -p /srv/pac
cat > /srv/pac/mc.pac <<'EOF'
function FindProxyForURL(url, host) {
if (dnsDomainIs(host, ".exacttarget.com") ||
dnsDomainIs(host, ".marketingcloudapis.com") ||
dnsDomainIs(host, ".marketingcloudapps.com") ||
dnsDomainIs(host, ".exct.net")) {
return "PROXY 10.8.0.1:8888";
}
return "DIRECT";
}
EOF
chmod 755 /srv/pac && chmod 644 /srv/pac/mc.pac
cat > /etc/systemd/system/pac-server.service <<'EOF'
[Unit]
Description=PAC file server
After=wg-quick@wg0.service
Requires=wg-quick@wg0.service
[Service]
ExecStart=/usr/bin/python3 -m http.server 8080 --bind 10.8.0.1 --directory /srv/pac
User=nobody
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now tinyproxy pac-server
systemctl restart tinyproxy
echo "=========== CONFIG FOR THE WIREGUARD APP ON YOUR MAC ==========="
cat <<EOF
[Interface]
PrivateKey = $(cat /etc/wireguard/laptop.key)
Address = 10.8.0.2/32
[Peer]
PublicKey = $(cat /etc/wireguard/server.pub)
Endpoint = ${SERVER_IP}:51820
AllowedIPs = 10.8.0.1/32
PersistentKeepalive = 25
EOF
Important: el bloc que surt al final conté la clau privada del teu portàtil. Copia'l directament a l'app de WireGuard (pas següent). No l'enganxis en un xat, un tiquet ni un correu. Si ho fas per error, genera un parell de claus nou.
Quan el tinguis a l'app, esborra la còpia del servidor:
rm /etc/wireguard/laptop.key
Pas 4. Configura WireGuard al teu Mac
- Instal·la WireGuard des de la Mac App Store.
- Prem la fletxeta al costat del + (a baix a l'esquerra) i tria Afegir túnel buit. No facis servir "Importar des de fitxer", que et demana un fitxer.
- Esborra el contingut per defecte i enganxa el bloc sencer del pas anterior, amb les seccions
[Interface]i[Peer]. - Posa-li nom, activa Sota demanda per a Wi-Fi i Ethernet amb Qualsevol SSID, i desa.
- Activa'l. Si macOS et demana permís per afegir una configuració VPN, accepta-ho.
Per què és important AllowedIPs = 10.8.0.1/32: només el trànsit cap al proxy passa pel túnel. Res més. Per això pot estar sempre actiu sense afectar la teva connexió.
Comprova que funciona:
curl -x http://10.8.0.1:8888 https://ifconfig.me/ip
Hauria de tornar la IPv4 del teu servidor. Al servidor, wg show hauria de mostrar el teu peer amb un latest handshake recent.
Pas 5. Envia només Marketing Cloud pel servidor
A les versions recents de macOS, els ajustos de proxy que canvies des de Wi-Fi → Detalls poden quedar lligats només a la xarxa actual. Perquè funcioni a qualsevol Wi-Fi, configura-ho per interfície des del Terminal.
Primer, llista les teves interfícies:
networksetup -listallnetworkservices
Després, aplica el fitxer PAC a les que facis servir (Wi-Fi, el teu adaptador Ethernet USB o Thunderbolt, iPhone USB...). No l'apliquis al túnel de WireGuard ni a Thunderbolt Bridge.
for svc in "Wi-Fi" "USB 10/100/1000 LAN" "iPhone USB"; do
sudo networksetup -setautoproxyurl "$svc" http://10.8.0.1:8080/mc.pac
sudo networksetup -setautoproxystate "$svc" on
echo "== $svc"; networksetup -getautoproxyurl "$svc"
done
Ajusta els noms als de la teva llista. Cadascuna hauria de mostrar la URL del PAC i Enabled: Yes. Reinicia el navegador (Cmd+Q).
Els portals captius (Wi-Fi d'hotel o aeroport amb pàgina d'accés) no són cap problema: fins que el túnel connecta, el fitxer PAC no és accessible i el Mac navega directe. Tan bon punt el túnel està actiu, Marketing Cloud passa pel servidor.
Pas 6. Postman i scripts
Postman no fa servir fitxers PAC. A l'app d'escriptori:
Settings → Proxy
- Desactiva "Use the system proxy".
- Activa "Use custom proxy configuration".
- Proxy type: HTTP i HTTPS.
- Proxy server:
10.8.0.1, port 8888 (no el 8080, que és el del servidor del PAC). - Proxy bypass:
localhost,127.0.0.1
Tot el trànsit de Postman anirà pel servidor. No passa res: el volum és mínim.
Per als teus propis scripts:
export HTTPS_PROXY=http://10.8.0.1:8888
Si fas servir Windows en lloc d'un Mac
Jo el vaig muntar en un Mac. Els passos per a Windows segueixen exactament la mateixa lògica, però no els he executat jo, així que avisa'm si al teu equip alguna cosa és diferent. Els passos 2, 3 i 8 (servidor i MCE) no canvien.
Pas 1 (clau SSH). Windows 10 i 11 inclouen OpenSSH. A PowerShell:
ssh-keygen -t ed25519 -C "you@yourdomain.com"
type $env:USERPROFILE\.ssh\id_ed25519.pub
Copia la línia que comença per ssh-ed25519 i fes-la servir al pas 2. Per connectar-te al servidor al pas 3, fes servir ssh root@YOUR_SERVER_IP des de PowerShell.
Pas 4 (WireGuard).
- Descarrega WireGuard per a Windows des del web oficial, wireguard.com.
- Prem la fletxa al costat d'Add Tunnel i tria Add empty tunnel.
- Esborra el contingut per defecte, enganxa el bloc sencer del pas 3 (
[Interface]i[Peer]), posa-li nom i desa. - Si veus l'opció Block untunneled traffic (kill-switch), assegura't que està desmarcada. Si no, bloquejaria tot el que no passi pel túnel.
- Prem Activate. A Windows, el túnel funciona com a servei i continua actiu després de reiniciar.
Pas 5 (fitxer PAC). Aquesta part és més senzilla que al Mac, perquè a Windows l'ajust s'aplica a totes les xarxes alhora:
- Ves a Configuració → Xarxa i Internet → Servidor intermediari.
- A Utilitza un script de configuració, activa-ho.
- Adreça de l'script:
http://10.8.0.1:8080/mc.pac - Desa.
Chrome i Edge fan servir aquest ajust directament. A Firefox, comprova als paràmetres de xarxa que fa servir la configuració del servidor intermediari del sistema.
Pas 6 (Postman i scripts). Postman es configura exactament igual. Per a scripts a PowerShell:
$env:HTTPS_PROXY = "http://10.8.0.1:8888"
Comprovació. A PowerShell, fes servir curl.exe (amb .exe, perquè curl sol pot ser un àlies d'una altra ordre):
curl.exe -x http://10.8.0.1:8888 https://ifconfig.me/ip
Hauria de tornar la IPv4 del teu servidor.
Pas 7. Comprova que tot funciona
- Obre
https://ifconfig.meal navegador. Hauria de mostrar la teva IP normal, no la del servidor. - Al servidor, observa el proxy:
journalctl -u tinyproxy -f - Obre
https://mc.exacttarget.com. Hauries de veure líniesCONNECTcap a dominis deexacttarget.comimarketingcloudapps.com. - A Postman,
GET https://ifconfig.me/iphauria de tornar la IP del servidor.
A MCE, la pàgina d'ajustos de l'allowlist també mostra la teva IP actual. Hauria de ser la del servidor.
Pas 8. Afegeix la IP a cada compte de MCE
- Afegeix la IPv4 del teu servidor a l'allowlist de cada compte, com a rang d'una sola IP (inici i final iguals).
- No activis tu el mode bloqueig abans de la teva data, i no acceptis a cegues els rangs recomanats. Salesforce demana esperar fins després de la data per canviar la configuració.
- El dia de la teva data, comprova que la teva IP continua a la llista després que Salesforce apliqui la seva configuració, i revisa l'Access Log per confirmar que els teus accessos arriben des de la IP del servidor.
- Als comptes que gestiona una altra persona, envia la teva IP al seu administrador amb antelació.
Pla B: si algun dia et quedes fora
Desactiva el túnel a l'app de WireGuard. Sense túnel, el fitxer PAC no es carrega i el navegador surt directe amb la teva IP normal. Si has entrat des de casa sovint, aquesta IP probablement és a la llista inicial de Salesforce. Entra, torna a afegir la IP del servidor i activa de nou el túnel.
A més, demana a cada client que tingui un segon administrador que entri des d'una IP fixa d'oficina. Ser l'únic administrador és un risc, amb aquest canvi o sense.
Notes de seguretat
- El trànsit de Marketing Cloud ja va xifrat amb HTTPS d'extrem a extrem. El servidor només reenvia trànsit xifrat: no pot llegir les teves dades i no hi desa res.
- El risc real és que algú prengui el control del servidor, perquè els teus clients confien en la seva IP. Per això: SSH només amb clau, firewall tancat excepte WireGuard i SSH, actualitzacions de seguretat automàtiques, cap altre servei al servidor i autenticació en dos passos al compte del proveïdor.
- Tria una ubicació a la UE i accepta el contracte d'encarregat del tractament del teu proveïdor, per poder respondre les preguntes dels teus clients sobre el RGPD.
El que em va fallar (perquè no et falli a tu)
- El meu trànsit sortia per IPv6. La primera prova va tornar la IPv6 del servidor en lloc de la IPv4. La línia de
gai.confdel pas 3 ho soluciona. - El fitxer PAC tornava un 404. Els fitxers creats després d'un
umask 077només els podia llegir root. Les línieschmoddel pas 3 ho solucionen. - El túnel es quedava a "Reiniciant". En editar el túnel, vaig esborrar sense voler la secció
[Peer]. Hi han de ser les dues seccions. - Postman tornava "Unsupported method CONNECT". Havia posat el port 8080 (servidor del PAC) en lloc del 8888 (proxy).
- Els ajustos de proxy només s'aplicaven a una Wi-Fi. Fes servir
networksetupper interfície, com al pas 5.
Reflexió final
Continuo pensant que la seguretat d'una plataforma no hauria de dependre de la configuració de xarxa de cada client, i que l'allowlisting hauria de ser una opció més, no l'única. Però el bloqueig ja és aquí i, amb una mica de preparació, no t'ha d'impedir treballar.
Si el teu compte és en una de les primeres onades, no esperis al darrer dia. Revisa la teva llista d'IP ara.
Pep Aguiló, arquitecte freelance de Salesforce Marketing Cloud, treballant amb Marketing Cloud des de 2013.
Preus i disponibilitat de proveïdors a octubre de 2026. Aquest muntatge és el que em funciona a mi; revisa'l tenint en compte els requisits de seguretat dels teus clients.