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>