Instrada il traffico dal jail 1 al jail 2 sull'host


2

Di recente ho iniziato a utilizzare questo fantastico sistema operativo e mentre ho un background nella rete di Windows, sono molto nuovo su come posso realizzare determinate attività su FreeNAS 9.3 (FreeBSD), specialmente con le jail.

Fondamentalmente sto cercando di capire come instradare il traffico da una jail all'altra, tutto gestito e configurato dal sistema host stesso (preferibilmente un set di regole, quindi devo solo connettermi all'host e configurare tutto lì se arrivano delle modifiche) .

Quindi ecco il mio layout (default-gateway è il mio router a .1):

FreeBSD ip = .50 igb0 ipfw0 bridge0 epair0a epair1a default-gw = .1 -> openvpn-client-jail ip = .201 epair0b default-gw = .1 -> other-jail ip = .200 epair1b default-gw = .1

Quindi quello che voglio ottenere è che l '"altro jail" a .200 non comunica attraverso il mio router, ma invece invia tutto il traffico al "openvpn-jail" a .201

Attualmente ho abilitato pf sul mio host (.50), ma non ho ancora creato alcuna regola. Questa è la parte in cui sarei felice se qualcuno potesse tenermi per mano e spiegarmelo con degli esempi.

  1. Presumo che dovrò cambiare il gateway predefinito per "other-jail" in .201, o dovrebbe essere l'host a .50, che alla fine è dove avrei impostato le regole, giusto?

  2. Devo solo abilitare il gateway ipv4 (sull'host o sulla jail proxy?) E quindi creare una regola "rdr" su quella macchina? Qualcosa di simile a:

    rdr su epair1a inet proto tcp alla porta {porta applicazione personalizzata} -> epair0a

Quindi ho provato a farlo e ho modificato il mio rc.conf sul mio host come segue:

pf_enable="YES"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
gateway_enable="YES"

#alias
ifconfig_igb0_alias0="inet 192.168.1.201 netmask 255.255.255.0"
ifconfig_igb0_alias1="inet 192.168.1.200 netmask 255.255.255.0"

Ho quindi aggiunto .201 (jail openvpn) come gateway predefinito per .200 (altra jail), ma ho avuto problemi con la connettività, quindi sono andato nel jail openvpn e l'ho aggiunto a rc.conf e ho riavviato il jail:

gateway_enable="YES"

Le jail possono ora eseguire correttamente il ping a vicenda e anche l'host può eseguire il ping di ciascuna di esse. Un'altra macchina all'interno di questa rete può anche vedere entrambe le jail in questo modo. L'esecuzione di un traceroute sull'altro jail mostra che sta attraversando il carcere openvpn .201. Tuttavia, non è in grado di comunicare con il mondo esterno, pertanto il ping di Google o Yahoo non va da nessuna parte.

Ma .. risulta, se interrompo il servizio openvpn, la mia altra prigione può raggiungere il mondo esterno e traceroute mostra che prende la rotta .201 -> .1, che è corretta e funziona. Ma una volta avviato il servizio openvpn, l'altro jail non può comunicare con nulla all'esterno, ma solo con dispositivi sulla mia LAN. In questo caso traceroute mostra .201 come primo hop, ma dopo è solo * * *, * * * ...

Devo impostare una regola pf? Ma funziona già senza uno se il demone openvpn viene arrestato, potrebbe avere qualcosa a che fare con openvpn che non consente a un'altra macchina di inviare il suo traffico attraverso un client come questo?


"sysctl net.inet.ip.forwarding"; "sysctl net.inet.ip.forwarding = 1"
TOOGAM

@TOOGAM sysctl net.inet.ip.forwarding era già impostato su 1 nella jail openvpn. Ho provato a impostarlo su 1 sull'altro jail e sull'host e ho riavviato per essere sicuro, ma nessuna modifica.
Jack Skinner,

Ho eseguito un tcpdump sulla jail openvpn e ho avviato un ping sull'altra jail. Ecco come appare con openvpn avviato: IP 192.168.1.200> google-public-dns-a.google.com: richiesta echo ICMP, id 7519, seq 2, lunghezza 64; --- con openvpn interrotto --- IP 192.168.1.201> google-public-dns-a.google.com: richiesta echo ICMP, id 53087, seq 0, lunghezza 64; IP openvpn.18121> google-public-dns-a.google.com.domain: 64744+ PTR? 201.1.168.192.in-addr.arpa. (43); ARP, Request who-have 192.168.1.201 tell 192.168.1.1, length 46; IP google-public-dns-a.google.com.domain> openvpn.18121: 64744 NXDomain 0/0/0 (43);
Jack Skinner,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.