Skip to the content.

Firewall Rules for Inter-Site Connections

Skupper’s core design principle is no VPNs, no special firewall rules. Links are established as outbound connections, so in most deployments you don’t need to open any inbound ports.

The Golden Rule

The site that creates the link needs only outbound connectivity. The site that accepts the link needs its router ports (55671/45671) reachable.

Site A (behind firewall)          Site B (public cloud)
┌──────────────────┐             ┌──────────────────┐
│  skupper-router ──┼────────────→│  skupper-router   │
│  (outbound only)  │  TLS conn   │  linkAccess:      │
│                   │             │    default         │
└──────────────────┘             └──────────────────┘
     No inbound needed            Must be reachable

Choose link direction based on which site has easier inbound accessibility.

Decision Matrix

Scenario Firewall Rules Needed?
Site A links out to Site B (public cloud K8s) ❌ None
Site A links out through a corporate proxy ❌ None on firewall — configure proxy on Link
Site A (bare Linux) accepts inbound links ✅ Open 55671 and/or 45671 inbound
Site A (K8s with LoadBalancer) accepts links ✅ Cloud security group must allow inbound to LB
Site A (OpenShift with Route) accepts links Usually ❌ — router typically allows 443
Both sites behind firewalls ⚠️ Use a relay site in the cloud
Port Protocol Purpose
55671 TCP (AMQPS) Inter-router links (interior ↔ interior)
45671 TCP (AMQPS) Edge links (edge → interior)
# Example: firewalld on Linux
sudo firewall-cmd --permanent --add-port=55671/tcp
sudo firewall-cmd --permanent --add-port=45671/tcp
sudo firewall-cmd --reload

Kubernetes AccessType and Firewall

accessType What to Ensure
loadbalancer Cloud security group allows inbound to LB on 55671/45671
route (OpenShift) Usually port 443 (TLS passthrough) — typically already open
ingress Ingress controller must be reachable — typically 443
local No external access (cluster-internal only)

HTTP Proxy Tunneling

When your network requires routing through a corporate proxy, Skupper supports HTTP CONNECT tunneling:

# Proxy Secret
apiVersion: v1
kind: Secret
metadata:
  name: my-proxy-config
type: kubernetes.io/basic-auth
stringData:
  host: proxy.example.com
  port: "3128"
  username: myuser       # Remove if no auth needed
  password: mypassword
# Link with proxy
apiVersion: skupper.io/v2alpha1
kind: Link
metadata:
  name: link-to-remote-site
spec:
  endpoints:
    - host: remote-site.example.com
      name: inter-router
      port: "55671"
    - host: remote-site.example.com
      name: edge
      port: "45671"
  tlsCredentials: link-to-remote-site
  settings:
    proxy-configuration: my-proxy-config

Proxy must allow HTTP CONNECT to Skupper ports. Example Squid config:

acl skupper_ports port 55671 45671
http_access allow CONNECT skupper_ports

Both Sites Behind Firewalls

Deploy a relay site in the cloud:

Site A (firewall) ──outbound──→ Cloud Relay ←──outbound── Site B (firewall)
                                (linkAccess: default)

Both sites link outbound to the relay. Traffic flows: Site A → Relay → Site B.