16
Server / Port forward na Wireguard klienta
« kdy: 14. 09. 2022, 11:35:20 »
Zdravím páni, potrebujem poradiť lebo som sa nejak zasekol.
Mám VPS s Ubuntu na ktorom beží Wireguard server. Na ten Wireguard server sa pripojím z Wireguard klienta vo Widnows 10, ktorý beží na prípojke s privátnou IP. Na windowse je potom program, ktorý ma WebUI na porte 8080. Mojim cieľom je forwardnúť port 8080 z verejnej IP VPS na IP Wireguard klienta vo Windowse aby WebUI daného programu bolo dostupné z internetu. Ping z WG klienta na WG server a naopak mi beží.
Verejná IP VPS: 144.10.20.30.
VPS nemá verejnú adresu priamo na svojom rozhraní. Medzi VPS a verejnou IP je ešte akýsi network manager s firewalom, kde je NAT 1:1 a vo firewale sú otvorené všetky porty. Toto funguje.
IP na sieťovke VPS: 10.1.1.1/24
IP WG servera: 10.2.3.1/24
IP WG klienta: 10.2.3.2/24
Služba vo windows beží na porte 8080 a pomocou "curl 10.2.3.2:8080" z VPS sa na ňu dostanem.
Rovnakú službu som nainštaloval aj na VPS (na testovanie priechodnosti) ale na porte 9090. Na tú sa z Widowsu cez 10.2.3.1:9090 nedostanem.
Vygooglil som, že aby som sa dostal z verejnej IP na službu za WG klientom, musím do iptable pridať pravidlo:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -d 10.1.1.1 -p tcp --dport 8080 -j DNAT --to-dest 10.2.3.2:8080
iptables -t nat -A POSTROUTING -d 10.2.3.2 -p tcp --dport 8080 -j SNAT --to-source 10.2.3.1
Po pridaní sa na službu ale nedostanem, tak som skúsil pridať pravidlo vďaka ktorému by som sa mal dostať na WebUI služby bežiacej priamo na VPS pod portom 9090:
iptables -A INPUT -p tcp --dport 9090 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9090 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Táto služba nie je dostupná na Windowse cez 10.2.3.1:9090 ani cez 144.10.20.30:9090. Ak ale pridám do iptables pravidlo:
iptables -I INPUT -j ACCEPT
tak sa na WebUI bežiacom na VPS pod portom 9090 dostanem cez 10.2.3.1:9090 aj cez 144.10.20.30:9090. Na službu na WG klientovi sa ale nedostanem. Dokonca ani cez "curl 10.1.1.1:8080" alebo "curl 144.10.20.30:8080"
Viete ma prosím nasmerovať, kde robím chybu alebo ako diagnostikovať na čom to stojí? S iptables robím prvý krát, samozrejme ich zadávam so sudo. Celé sa mi to javí ako by žiadne z tých pravidiel okrem "iptables -I INPUT -j ACCEPT" nemalo žiaden účinok.
Ďakujem
Mám VPS s Ubuntu na ktorom beží Wireguard server. Na ten Wireguard server sa pripojím z Wireguard klienta vo Widnows 10, ktorý beží na prípojke s privátnou IP. Na windowse je potom program, ktorý ma WebUI na porte 8080. Mojim cieľom je forwardnúť port 8080 z verejnej IP VPS na IP Wireguard klienta vo Windowse aby WebUI daného programu bolo dostupné z internetu. Ping z WG klienta na WG server a naopak mi beží.
Verejná IP VPS: 144.10.20.30.
VPS nemá verejnú adresu priamo na svojom rozhraní. Medzi VPS a verejnou IP je ešte akýsi network manager s firewalom, kde je NAT 1:1 a vo firewale sú otvorené všetky porty. Toto funguje.
IP na sieťovke VPS: 10.1.1.1/24
IP WG servera: 10.2.3.1/24
IP WG klienta: 10.2.3.2/24
Služba vo windows beží na porte 8080 a pomocou "curl 10.2.3.2:8080" z VPS sa na ňu dostanem.
Rovnakú službu som nainštaloval aj na VPS (na testovanie priechodnosti) ale na porte 9090. Na tú sa z Widowsu cez 10.2.3.1:9090 nedostanem.
Vygooglil som, že aby som sa dostal z verejnej IP na službu za WG klientom, musím do iptable pridať pravidlo:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -d 10.1.1.1 -p tcp --dport 8080 -j DNAT --to-dest 10.2.3.2:8080
iptables -t nat -A POSTROUTING -d 10.2.3.2 -p tcp --dport 8080 -j SNAT --to-source 10.2.3.1
Po pridaní sa na službu ale nedostanem, tak som skúsil pridať pravidlo vďaka ktorému by som sa mal dostať na WebUI služby bežiacej priamo na VPS pod portom 9090:
iptables -A INPUT -p tcp --dport 9090 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9090 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Táto služba nie je dostupná na Windowse cez 10.2.3.1:9090 ani cez 144.10.20.30:9090. Ak ale pridám do iptables pravidlo:
iptables -I INPUT -j ACCEPT
tak sa na WebUI bežiacom na VPS pod portom 9090 dostanem cez 10.2.3.1:9090 aj cez 144.10.20.30:9090. Na službu na WG klientovi sa ale nedostanem. Dokonca ani cez "curl 10.1.1.1:8080" alebo "curl 144.10.20.30:8080"
Viete ma prosím nasmerovať, kde robím chybu alebo ako diagnostikovať na čom to stojí? S iptables robím prvý krát, samozrejme ich zadávam so sudo. Celé sa mi to javí ako by žiadne z tých pravidiel okrem "iptables -I INPUT -j ACCEPT" nemalo žiaden účinok.
Ďakujem