Puncte:0

Wireguard limitează accesul la servicii și mașini din rețeaua locală

drapel ua

Rulez un „Server” Wireguard în rețeaua mea locală, la care ajung de la distanță prin IP-ul meu public static. Vreau să pot limita accesul la colegii Wireguard la distanță la serviciile/mașinile din lan-ul meu, unde găzduiesc alt server.

Exemplu: Server 1 (192.168.1.23 | 10.0.0.1) cu Wireguard instalat + Nextcloud + Jellyfin în aceeași mașină Server 2 (192.168.1.62) cu Photoprism

Peer la distanță 1 (10.0.0.2 | ip dinamic) Peer la distanță 2 (10.0.0.3 | ip dinamic)

Vreau sa:

1- Permiteți peer1 (10.0.0.2) să acceseze Server 1 Nextcloud + Jellyfin și să acceseze Server 2 la Photoprism.

2- Permiteți lui Peer2 (10.0.0.3) să acceseze numai Serverul 1 Nextcloud, dar nu Jellyfin și să blocheze accesul la Server 2

În acest moment, pot accesa toate mașinile din lanțul meu de la toți Peers.

Reguli Iptables:

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s7 -j MASQUERADE; iptables -t nat -A POSTROUTING -o wg0
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s7 -j MASQUERADE; iptables -t nat -D POSTROUTING -o wg0

Am urmat asta tutorial, din Justin Ludwig deoarece topologia Site to Point este foarte asemănătoare cu a mea. Așa că am încercat să reproduc regulile Iptables cu aceste reguli:

# mascarada
PreUp = iptables -t mangle -A PREROUTING -i wg0 -j MARK --set-mark 0x200
PreUp = iptables -t nat -A POSTRUTING ! -o wg0 -m mark --mark 0x200 -j MASQUERADE
PostDown = iptables -t mangle -D PREROUTING -i wg0 -j MARK --set-mark 0x200
PostDown = iptables -t nat -D POSTROUTING ! -o wg0 -m mark --mark 0x200 -j MASQUERADE

# intrare wireguard
PreUp = iptables -I INPUT -p udp --dport 2332 -j ACCEPT
PostDown = iptables -D INTRARE -p udp --dport 2332 -j ACCEPT

# firewall de site
PreUp = iptables -N wg0-filter
PreUp = iptables -N la-fotoprismă
PreUp = iptables -N la-jellyfin
PreUp = iptables -N to-nextcloud

PreUp = iptables -I INPUT -i wg0 -j wg0-filtru
PreUp = iptables -I FORWARD -i wg0 -j wg0-filtru
PreUp = iptables -I FORWARD -o wg0 -j wg0-filter
PreUp = iptables -I OUTPUT -o wg0 -j wg0-filtru

PreUp = iptables -A wg0-filter -m state --state ESTABLISHED,RELATED -j ACCEPT
PreUp = iptables -A wg0-filter -d 192.168.1.63 -p tcp --dport 2342 -j to-photoprism
PreUp = iptables -A wg0-filter -d 192.168.1.23 -p tcp --dport 8096 -j to-jellyfin
PreUp = iptables -A wg0-filter -d 192.168.1.23 -p tcp --dport 80 -j to-nextcloud
PreUp = iptables -A wg0-filter -j REJECT

PreUp = iptables -A to-photoprism -s 10.0.0.2 -j ACCEPT

PreUp = iptables -A to-jellyfin -s 10.0.0.2 -j ACCEPT
PreUp = iptables -A to-jellyfin -s 10.0.0.3 -j ACCEPT

PreUp = iptables -A to-nextcloud -s 10.0.0.2 -j ACCEPT
PreUp = iptables -A to-nextcloud -s 10.0.0.3 -j ACCEPT

PostDown = iptables -D INPUT -i wg0 -j wg0-filtru
PostDown = iptables -D FORWARD -i wg0 -j wg0-filter
PostDown = iptables -D FORWARD -o wg0 -j wg0-filter
PostDown = iptables -D OUTPUT -o wg0 -j wg0-filter

PostDown = iptables -F to-photoprism
PostDown = iptables -F la-jellyfin
PostDown = iptables -F to-nextcloud

PostDown = iptables -X la-fotoprismă
PostDown = iptables -X la-jellyfin
PostDown = iptables -X to-nextcloud

Asta nu a funcționat, Peer 1 și Peer 2 pot ajunge la Server 1, ambele servicii, dar nu și la Server 2.

Nu sunt atât de priceput să înțeleg ce trebuie să schimb pentru ca acest lucru să funcționeze, m-aș bucura dacă cineva poate interveni.

Mulțumesc anticipat

Puncte:0
drapel cn

În general, regulile tale iptables îmi par bine; cu toate că:

  1. În descrierea întrebării, menționați că Server 2 are o adresă IP de 192.168.1.62; dar în regulile iptables, se pare că folosești 192.168.1.63 pentru aceasta:

     iptables -A wg0-filter -d 192.168.1.63 -p tcp --dport 2342 -j to-photoprism
    

    Este o greșeală de tipar într-un loc sau altul?

  2. În descriere, menționezi Peer 2 (10.0.0.3) nu ar trebui să aibă acces la Jellyfin; dar în regulile iptables, îi acordați acces cu această linie:

     iptables -A to-jellyfin -s 10.0.0.3 -j ACCEPT
    

    Poate ai vrut să elimini această regulă?

  3. Nu văd niciunul PostDown comenzi de a dărâma wg0-filtru lanț, la fel ca și pentru celelalte lanțuri personalizate; asigurați-vă că le includeți:

     PostDown = iptables -F wg0-filter
     PostDown = iptables -X wg0-filter
    

    Fără aceste comenzi de demontare, dacă faceți modificări și reporniți, wg0-lanţ poate ajunge să folosească vechile reguli din încercările anterioare, în loc de actualizări mai noi. (Și asigurați-vă că urmați Efectuarea modificărilor de configurare sfat din articol, să închideți interfața WireGuard înainte de a face modificări de configurare și de a reporni -- rulați sudo iptables-save când interfața trebuie să verifice de două ori dacă aveți reguli vechi sau lanțuri care nu au fost curățate.)

drapel ua
Îți mulțumesc mult pentru că ți-ai dat dovadă de a răspunde la postarea mea neglijentă. Îmi pare foarte rău că sunt neglijent. IP-ul a fost într-adevăr greșit în fișierul meu wg0.conf. „PostDown = iptables -X wg0-filter” a fost doar o greșeală de tipar la postare. Nu funcționează așa cum ar trebui. Mulțumim pentru tutorialele și scrierile minunate!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.