SSH üzerinden VPN bağlantısı kurma

By samed, 2 August, 2013

VPN (Virtual Private Network, Sanal Özel Ağlar), temek olarak birbirinden uzak iki farklı ağın internet üzerinden veri paketlerini tünelleyerek aynı ağdaymışçasına haberleşmelerini sağlayan bir sistemdir. Veri ve ağ güvenliğinin sağlanması için yaygın olarak kullanılırlar. Bunlara günlük hayattan örnekler vermek gerekirse bankamatik, netmatik cihazları, kiosklar, şirketlerin müşteri ofislerini örnek olarak verebiliriz. Son zamanlarda internet trafiğinin izlenmesini engellemek ve servis sağlayıcılar tarafından engellenmiş olan bağlantıları kurmak amacıyla kullanılmaktadır.

Ücretli ve ücretsiz olmak üzere birçok paket çözümleri mevcuttur. En bilinen örnekleri Cisco VPN (ücretli) ve OpenVPN'dir (ücretsiz).

Bu yazımızda P2P (Peer-to-Peer, noktadan noktaya) olarak SSH servisi üzerinden VPN bağlantısı kurmayı anlatacağım.

Sunucu Tarafı Yapılandırmaları
Bu yazımızda sunucu tarafında Centos 6, istemci tarafında OpenSUSE 13 kullanılmıştır. Bu bağlantının kurulabilmesi için her iki taraftada root yetkilerine sahip olunmalı, root olarak sunucuya oturum açılabiliyor ve sunucunun tünellemeye izin veriyor olması gerekir. Bunları sshd_config dosyanızın sonuna aşağıdaki satırları ekleyerek gerçekleştirebilirsiniz.

PermitRootLogin Yes
PermitTunnel Yes

P2P Bağlantısının Kurulması
Aşağıdaki komutların girilmesi ile sunucu ve istemci arasında sanal tun5 arabirimi üzerinden P2P bağlantısı kurulmuş oldu. Artık sunucuya istemci 10.0.0.1 IP adresi üzerinden doğrudan erişebilir.

istemci# ssh -l root sunucu.ip -w 5:5 -f true
istemci# ifconfig tun5 10.0.0.2/30
sunucu# ifconfig tun5 10.0.0.1/30

Rota Yapılandırması
İki ağı birbirine bağlamak bana yetmez ben internete de sunucu üzerinden çıkmak istiyorum derseniz ek olarak birkaç ayarlama daha yapmanız gerekecektir.

  • Sunucuda NAT ayarlarının yapılması

    sunucu# sysctl -w net.ipv4.ip_forward=1
    sunucu# iptables -t nat -A POSTROUTING -s 10.0.0.0/30 -o eth0 -j MASQUERADE
  • İstemcide Rota ayarlarının yapılması

    istemci# route add -host reddoc.net gw 160.75.207.254 dev eth0
    istemci# route add default gw 10.0.0.1 dev tun5
    istemci# route del default gw 160.75.207.254