Oppsett av lokal socket-proxy

Hvordan sette opp en lokal socket-proxy p? en Linux-maskin

1???Problemstilling

En lokal socket-proxy kan brukes til ? l?se f?lgende problem:

  • Maskin A ?nsker ? kommunisere med maskin B p? en spesifikk port
  • Denne kommunikasjonen er sperret i firewall

Man kan da sette opp en socket-proxy p? en tredje maskin C p? en alternativ port, dersom firewall tillater at maskin A kan kommunisere med maskin C p? den alternative porten, og at maskin C kan kommunisere med maskin B p? den orginale porten.

2???L?sning

2.1???Sette opp proxy

P? maskinen som skal v?re proxy, kalt maskin C i problemstillingen over, opprettes et par filer:

/etc/systemd/system/<name>.service

Denne filen skal ha innhold:

[Unit]
Description=<desc>
Requires=network.target
After=network.target
Requires=<name>.socket
After=<name>.socket

[Service]
ExecStart=/usr/lib/systemd/systemd-socket-proxyd <address>:<port>

[Install]
WantedBy=multi-user.target

Bytt ut:

  • <desc> - en beskrivelse av tjenesten
  • <name> - et beskrivende navn p? tjenesten
  • <address> - adressen til tjenesten man proxyer til
  • <port> - porten til tjenesten man proxyer til
/etc/systemd/system/<name>.socket

Denne filen skal ha samme navn som filen over, men ende p? .socket istedenfor .service, og ha innhold:

[Socket]
ListenStream=<listen-ip>:<port>

# Simple ACL for this forwarding service
IPAddressDeny=any
IPAddressAllow=localhost
# Allow IP addresses or ranges
IPAddressAllow=<cidr>
IPAddressAllow=<cidr>

[Install]
WantedBy=sockets.target

Bytt ut:

  • <listen-ip> - IP-nummeret som proxyen skal lytte p? (normalt IP-adressen til maskinen hvor proxy kj?rer)
  • <port> - Porten hvor proxyen skal lytte
  • <cidr> - IP-nummer eller CIDR-adresse som skal tillates ? benytte proxy-tjenesten

Husk ? ?pne i firewall for proxy-tjenesten. Det kan f.eks. gj?res slik:

firewall-cmd --add-port <port>
firewall-cmd --add-port <port> --permanent

Sannsynligvis m? man ogs? endre SELinux slik at porten kan brukes av systemd-socket-proxyd:

setsebool -P systemd_socket_proxyd_connect_any 1

Da kan tjenesten startes, samt settes til ? starte ved boot:

systemctl daemon-reload
systemctl enable --now <name>.socket <name>.service

2.2???Teste / bruke proxy

Den nye proxyen kan deretter brukes fra maskin A ved ? bruke IP og port for proxyen til ? kommunisere med maskin B. Dette kan f.eks. testes slik:

yum -y install telnet
telnet <proxy-ip> <proxy-port>
Av Trond Hasle Amundsen
Publisert 29. mai 2024 14:38