OpenSSH ile VPN Kurulumu

Ilk ciktiginda nasil yapilacagi konusunda birseyler yazmistim burada bulunmasinda da fayda gordugum icin tekrar yaziyorum.  Linux-FreeBSD arasinda OpenSSH’i kullanarak pointo-to-point VPN yapmak icin asagidaki adimlari izlemeniz yeterli olacaktir.

Not-1:noktadan noktaya VPN kurulumu icin sshd-config dosyasinda PermitTunnel secenegi yes olmali.
Not-2: VPN Tüneli kurulabilmesi için SSH’in root kullanıcısına izin vermiş olması gerekir. Bunun için sshd_config dosyasındaki PermitRootLogin yes olmalıdır.

PermitTunnel yes
PermitRootLogin yes

Örnek;

Site1(++)–GW1–internet--GW2(5.6.7.1)–Site2(++)
yukarıdaki sistemde site1 ile site2 arasında VPN yapmak istiyoruz.
Bunun için gerekli ssh ve ip yapilandirmasi..

Site1;

#ssh -w0:0 5.6.7.1

bu adimdan sonra her iki tarafta tun0 arabirimleri açılacak ve up hale gelecektir.

–w0:0 parametresindeki 0:0 local ve uzak sistemdeki tun arabirimlerinin isimlendirmesini sağlar. Yani her iki tarafta da oluşacak arabirimler tun0 olacaktır.

Bundan sonraki işlem bu arabirimlere uygun IP adresleri atamaktir..

Site1(Linux) icin IP tanimlamasi;

#ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
POINTOPOINT NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

#ifconfig tun0 10.10.10.2 netmask 255.255.255.252 pointopoint 10.10.10.1

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.10.10.2 P-t-P:10.10.10.1 Mask:255.255.255.252
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:123 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:336 (336.0 b) TX bytes:20414 (19.9 KiB)

Site2(FreeBSD) icin IP tanimlamasi;

#ifconfig tun0 10.10.10.1/30 10.10.10.2

tun1: flags=8051 mtu 1500
inet 10.10.10.1 –> 10.10.10.2 netmask 0xfffffffc
Opened by PID 82453

ayarlari kalici hale getirmek icin kullanlian Linux/UNIX dagitima gore gerekli islemler yapilmali.
Bu ayarlari tamamladiktan sonra tunelin iki ucu birbirini gorur vaziyettedir. Bunu bir uctan digerine ping atarak sınayabiliriz. (sistemdeki Firewall vs nin tun0 icin engelleme yapmadigini varsayiyoruz.)

# ping 10.10.10.1
PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data.
64 bytes from 10.10.10.1: icmp_seq=1 ttl=64 time=220 ms

Bundan sonra yapilacak ayarlar VPN’i ne amacla kullanacaginiza bagli olarak degisir. Yine yukaridaki cizime gore devam edecek olursak. Site1’in site2’ye ulasmasi icin;

Site1 gatewayinde

#route add -net SİTE2 gw 10.10.10.1 dev tun0

komutunu vermeliyiz. Boylece ssh kurulu gateway’e gelen paketler dogru araibirimden yonlendirilerek karsi sisteme ulasacaktir. Ayni sekilde site2’ye ulasan paketlerin geri donebilmesi icin Site2 gatewayinde

#route add -net SİTE1 gw 10.10.10.2 dev tun0

komutu verilmeli ve son olarak IP forwarding aktif edilmeli.

sysctl net.inet.ip.forwarding=1 (*BSD sistemler icin),

linux icin

echo 1 > /proc/sys/net/ipv4/ip_forward komutu da ise yarar.

ya da ihtiyaca gore NAT yapilabilir.

Ek bilgi icin:

man ssh_config
-w tunnel:tunnel
Requests a tun(4) device on the client (first tunnel arg) and
server (second tunnel arg). The devices may be specified by nu-
merical ID or the keyword “any”, which uses the next available

tunnel device. See also the Tunnel directive in ssh_config(5).

man sshd_config

PermitTunnel
Specifies whether tun(4) device forwarding is allowed. The argu-
ment must be “yes”, “point-to-point”, “ethernet”, or
“no”. The default is “no”.

This entry was posted in FreeBSD, System Security, VPN. Bookmark the permalink.

4 Responses to OpenSSH ile VPN Kurulumu

  1. Mehmet Güner says:

    Yazınız güzel olmuş, Hüzeyfe bey.
    Yalnız bir sorum olacaktı. Şimdi biz bu config ile internete şu şekilde çıkabilir miyiz??

    [email protected] (LAN IP)->ROUTER->INTERNET (LAN IP)
    Yani internete LAN IP’si ile çıkabiliyor muyuz?

  2. Huzeyfe ONAL says:

    Cikamazsiniz. Yukaridaki yapilandirma iki farkli LAN’i internet uzerinden haberlestirmek icin yazilmis. LAN IP adresini kullanarak internete cikmaniz icin kullandiginiz ip adreslerinin gercek ip adresleri olmasi ve gerekli yonlendiricilerden size dogru yonlendirilmis olmasi gerekir.

  3. Mehmet Zahid Öğrenç says:

    Huzeyfe hocam,

    Pf üzerinde yapmamız gereken kurallar nedir acaba?

  4. Huzeyfe ONAL says:

    Eger filtreleme yapmak istiyorsaniz(VPNle baglanan su su adreslere ulassin/ulasamasin seklinde) tun0 uzerinde filtreleme yapin. VPN’le gelenleri internete cikarmak istiyorsaniz cikis arabirimi uzerinden nat yapilabilir.

Leave a Reply

Your email address will not be published. Required fields are marked *

11 − nine =