Accesarea unui sistem FreeBSD situat dupa un NAT folosind vtunel

Sunt situatii cand avem un sistem pe care ruleaza freeBSD situat dupa un echipament care face NAT. Daca dorim sa accesam acest sistem din exterior ( pentru administrare prin ssh de exemplu) suntem nevoiti sa facem port forwarding pe echipamentul care face NAT. De multe ori nu avem insa aceasta posibilitate deoarece acel echipament este administrat de providerul nostru de internet. Solutia este sa facem un tunel intre sistemul din spatele NAT si sistemul de pe care dorim sa ne conectam.

dupanat

Pe sistemul 1 ruleaza freeBSD si se afla dupa NAT iar sistemul 2 este conectat direct la internet, avand un ip public si pe care ruleaza tot freeBSD.
O modalitate simpla de a realiza tunelul este sa folosim vtun.
Incepem cu configurarea sistemului 2. Acesta va avea rolul de server.

A. Instalam vtun din porturi:

cd /usr/ports/net/vtun
make
make install

B. In fisierul de configurare /usr/local/etc/vtund.conf scriem:

options {
port 5000; # Listen on this port.
syslog daemon;
ppp /usr/sbin/pppd;
ifconfig /sbin/ifconfig;
route /sbin/route;
}

default {
compress zlib:0; # Compression is off by default
speed 0; # By default maximum speed, NO shaping
}

Tunnel1 {
pass oparolaaleasa; # Password
stat yes;
type tun; # IP tunnel
proto tcp; # UDP protocol
comp zlib:0; # LZO compression level 9
encr yes; # Encryption
keepalive yes; # Keep connection alive

up {
ifconfig "%% 10.100.1.1 10.100.1.2 netmask 255.255.255.252 mtu 1450";
route "add 10.100.1.2 10.100.1.1";
};
down {
ifconfig "%% down";
ifconfig "%% delete";
};
}

C. In /etc/rc.conf adaugam linia:

vtund_enable=YES

D. Pornim serverul vtun folosind:

/usr/local/etc/rc.d/vtund.sh start

Pe sistemul 1 il vom configura pe post de client.

A. Instalam din porturi vtun:

cd /usr/ports/net/vtun
make
make install

B. In fisierul de configurare /usr/local/etc/vtund.conf scriem:

options {
port 5000;# Connect to this port.
timeout 60;# General timeout
ppp/usr/sbin/pppd;
ifconfig/sbin/ifconfig;
route/sbin/route;
}
Tunnel1 {
pass oparolaaleasa;# Password
persist keep;# Persist mode
type tun;
proto tcp;
encr no;
comp zlib:9;
up {
ifconfig "%% 10.100.1.2 10.100.1.1 mtu 1450";
};
}

C. In fisierul /etc/rc.conf adaugam liniile:

vtunclient_enable="YES"
vtunclient_flags="<session> <server address>"

unde: <session>=Tunnel1 si <server address> este adresa IP a sistemului 2

D. Pornim clientul cu comanda:

/usr/local/etc/rc.d/vtunclient.sh start

In acest moment tunelul ar trebui sa fie functional.
Pe sistemul 2 cu rol de server atunci cand dam comanda ifconfig ar trebui sa avem:

tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1450
inet6 fe80::206:5bff:fea7:8402%tun0 prefixlen 64 scopeid 0x4
inet 10.100.1.1 –> 10.100.1.2 netmask 0xfffffffc
Opened by PID 36937

Pe sistemul 1 cu rol de client, comanda ifconfig trebuie sa ne dea:

tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1450
inet 10.100.1.2 –> 10.100.1.1 netmask 0xff000000
inet6 fe80::20e:a6ff:fe79:b2b9%tun0 prefixlen 64 scopeid 0x5
Opened by PID 527

In locul de portul 5000 folosit in acest exemplu se poate alege un alt port care nu este blocat de catre providerul de internet. Pe ambele sisteme trebuie configurat acelasi port.

Daca nu exista restrictie impusa de provider legata de ICMP putem da ping de pe sistemul 2 catre sistemul 1:

ping 10.100.1.2
PING 10.100.1.2 (10.100.1.2): 56 data bytes
64 bytes from 10.100.1.2: icmp_seq=0 ttl=64 time=41.713 ms
64 bytes from 10.100.1.2: icmp_seq=2 ttl=64 time=41.732 ms
64 bytes from 10.100.1.2: icmp_seq=3 ttl=64 time=41.790 ms

Articole asemanatoare:

Bogdan Turcanu

Bogdan Turcanu

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.