Ülkemizde artık VPN’in ne olduğunu bilmeyen kalmamıştır 🙂 . Yasaklı sitelere erişmenin yanında VPN, bağlantımızı şifrelediği için umumi yerlerde kişisel verilerimizin güvenliğini koruma amaçlı da kullanılabilir. Bu yazıda Raspberry Pi kullanarak VPN üzerinden bağlantı kuran bir WiFi hotspot yapmayı anlatacağım. Bu proje, Linux’a alışık olmayanlar ve terminal ile işlem yapmayı sevmeyenler için karmaşık gelebilir.
Not: VPN bağlantı kurmak istemeseniz dahi Raspberry Pi’nizi bu rehberi kullanarak kablosuz erişim noktasına dönüştürebilirsiniz. Sadece OpenVPN ile ilgili kısımları atlamanız yeterlidir.
Öncelikle ihtiyacımız olanlar:
- Raspberry Pi
- WiFi dongle (AP modunu desteklemesi gerekli)
- Ethernet bağlantısı
- Bir OpenVPN sunucuya bağlantı imkanı
- Bol sabır 🙂
Bu proje için en uygun işletim sisteminin Raspbian Minimal olduğunu düşünüyorum. Minimal imajda masaüstü bulunmadığından, daha az sistem kaynağı tüketecektir. Zaten Pi’mizde grafik masaüstü ortamına ihtiyaç duymayacağız.
İmajı indirip SD karta yazdıktan sonra raspi-config ile SD kartın tamamını kullanmasını sağlıyoruz. Ayrıca güvenlik açısından autologin’i kapatmanızı ve pi kullanıcısının şifresini değiştirmenizi öneririm.
OpenVPN İstemcisi Kurulumu:
openvpn istemcisini aşağıdaki komut ile kuruyoruz:
sudo apt-get install openvpn
Bir sonraki adımda, sunucumuzdan edineceğimiz client.ovpn dosyasını, Pi’mize kopyalamamız gerekiyor. Bu işlem için ben kişisel sunucumdan indirdiğim dosyayı WinSCP ile Raspberry Pi’ye kopyaladım. Autologin konfigürasyonunu indirmemiz daha mantıklı olacaktır, çünkü Pi’mizin açılışta VPN sunucumuza otomatik olarak bağlanmasını istiyoruz.
Pi tarafında ise client.ovpn dosyasını, client.conf ismi ile /etc/openvpn klasörü altına taşıyoruz:
sudo mv client.ovpn /etc/openvpn/client.conf
Daha sonraki adımda
sudo nano /etc/default/openvpn
komutu ile OpenVPN varsayılan konfigürasyon dosyasını açıyoruz ve #AUTOSTART=”all” yazan satırın başındaki # işaretini kaldırıyoruz:
OpenVPN istemicimizin ayarları tamam. İstemcinin daemon olarak başlangıçta çalışması için
sudo systemctl enable openvpn
komutunu veriyoruz. Sistemimizi yeniden başlatıp ip adresimizi şu komutla kontrol edebiliriz:
wget -q -O - http://icanhazip.com/ | tail
Eğer VPN sunucumuzun adresini görüyosak, istemci sorunsuz olarak çalışıyor demektir.
WiFi Erişim Noktası Kurulumu:
Raspberry Pi’mizin VPN sunucumuza bağlanmasını sağladık. Şimdiki adımda bu bağlantıyı Pi üzerinden kablosuz şekilde dağıtacağız. Bunun için Pi’mizde bir DHCP sunucu (dnsmasq), WiFi erişim noktası programı (hostapd) ve bağlantıyı yönlendirebilmemiz için iptables yüklememiz gerekiyor:
sudo apt-get install hostapd dnsmasq iptables
Dikkat! Eğer RTL8188 çipsete sahip bir WiFi dongle kullanıyorsanız (örneğin TP-Link TL-WN725N) aşağıdaki adımları uygulamanız gereklidir. WiFi dongle’ınızın çipsetini öğrenmek için lsusb komutunu kullanabilirsiniz.
Bu adaptörü çalıştırmak için gerekli adımlar sırasıyla şu şekildedir:
wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip unzip hostapd.zip sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak sudo mv hostapd /usr/sbin/hostapd.edimax sudo ln -sf /usr/sbin/hostapd.edimax /usr/sbin/hostapd sudo chown root.root /usr/sbin/hostapd sudo chmod 755 /usr/sbin/hostapd
WiFi erişim noktası konfigürasyonu için
sudo nano /etc/hostapd/hostapd.conf
komutunu veriyoruz ve açılan dosyaya aşağıdaki gibi konfigürasyonu giriyoruz:
interface=wlan0 driver=rtl871xdrv ssid=RPi VPN Router hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=cokgizlisifre wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
Buradaki ssid=RPi VPN Router ve wpa_passphrase=cokgizlisifre satırlarını değiştirerek oluşturacağımız kablosuz ağın ismini ve bağlantıda kullanılacak şifreyi değiştirebilirsiniz.
Sonraki adımda
sudo nano /etc/default/hostapd
komutu verip, bu dosyanın içerisindeki #DAEMON_CONF= satırını şu şekilde değiştiriyoruz:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Konfigürasyonu tamamladıktan sonra yine bu programın da başlangıçta çalışması için
sudo systemctl enable hostapd
komutunu veriyoruz.
DHCP Sunucu Kurulumu:
dnsmasq isimli program, Pi’mize kablosuz olarak bağlanan cihazlara otomatik olarak IP adresi verme görevini gerçekleştirecek. Konfigürasyon dosyasını
sudo nano /etc/dnsmasq.conf
komutu ile açıp, dosyanın en sonuna aşağıdaki satırları ekliyoruz:
server=8.8.8.8 server=8.8.4.4 no-dhcp-interface=eth0 addn-hosts=/etc/hosts.dns dhcp-range=192.168.1.50,192.168.1.75,12h
Burada dikkat etmemiz gereken nokta, dhcp-range= olarak belirttiğimiz adres aralığının mevcut ağımızdan farklı bir subnet’e dahil olması. Yani Ethernet bağlantımız 192.168.2.x şeklinde IP adresine sahipse, bu aralığı 192.168.1.x şeklinde seçebiliriz.
Bu adımdan sonra bu programı da sistem açılışında çalışacak şekilde ayarlamak için şu komutu veriyoruz:
sudo systemctl enable dnsmasq
Sistemimize bağlı olan kablosuz ağ adaptörünün IP adresini sabitlememiz gerekiyor. Bunun için
sudo nano /etc/network/interfaces
komutunu vererek allow-hotplug wlan0, iface wlan0 inet manual ve wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf satırlarını siliyoruz. Onların yerine bu satırları ekliyoruz:
iface wlan0 inet static address 192.168.1.1 netmask 255.255.255.0
Dosyanın son hali aşağıdaki gibi olmalıdır:
Bu işlemden sonra,
sudo nano /etc/dhcpcd.conf
komutu ile açtığımız dosyanın en alt kısmına
interface wlan0 static ip_address=192.168.1.1/24 static routers=192.168.1.1 static domain_name_servers=8.8.8.8,8.8.4.4
satırlarını ekliyoruz. dosyanın son hali şu şekilde olmalıdır:
Dikkat: DHCP sunucu konfigürasyonu sırasında 192.168.1.x haricinde bir IP seti kullandıysanız, bu son iki adımdaki adresi ona karşılık düşecek şekilde değiştirmeniz gereklidir.
NAT Yönlendirme ve iptables:
Bu aşamaya kadar geldiysek, elimizde VPN sunucuya bağlanabilen ve kablosuz ağ üzerinden bağlanan cihazlara IP verebilen bir sisteme sahibiz demektir. Fakat, Pi üzerindeki internet bağlantısını kablosuz ağa yönlendirmediğimiz için, bu ağa bağlanacak cihazlar internet erişimine sahip olmayacaktır. NAT yönlendirmeyi sistem açılışında başlatmak için
sudo nano /etc/init.d/ip_forward
komutu ile bir başlangıç script dosyası oluşturuyoruz ve içine aşağıdaki satırları ekliyoruz:
#!/bin/bash ### BEGIN INIT INFO # Provides: ip_forward # Required-Start: $remote_fs $syslog $network $openvpn # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
Not: Eğer VPN bağlantısı olmadan yanlızca WiFi erişim noktası yapmak istiyosanız,
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
satırını
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
olarak değiştirin.
Bu komutun da sistem açılışında otomatik başlaması için
sudo chmod +x /etc/init.d/ip_forward sudo systemctl enable ip_forward
komutlarını veriyoruz.
Eğer sabırlı bir şekilde adımların hepsini düzgün şekilde yaptıysak, Pi’mizi yeniden başlattığımızda diğer kablosuz cihazlar tarafından görünebilir durumda bir erişim noktası mevcut olmalıdır:
Raspberry Pi Hakkında Daha Fazlasını Öğrenmeye Devam Et
Raspberry Pi pek çok yönüyle avantaj sahibi ve geliştiriciler tarafından çok sevilen bir platform. Elektronik projelerinde, bilgisayar bilimlerinde ve robotik çalışmalarında sağladığı destek ve rahatlık ile öğrenmeyi sevdiren Raspberry Pi hergün daha da çok gelişiyor. Peki siz de daha fazla gelişmek istemez misiniz? Linux bilginizi geliştirmek, elektronik dünyasına atılmak ve eğlenceli projelere imza atmak için sizi Raspberry Pi ile yolculuğa çıkarıyoruz! Sizler için hazırladığımız Raspberry Pi eğitim serisine devam edin :
Raspberry Pi ile FM Verici Yapalım
Raspberry Pi ve sadece 1 adet 20 cm uzunluğunda kablo ile basit bir FM verici yapmanın mümkün olduğunu biliyor muydunuz? Raspberry Pi ile FM Verici Yapalım yazımızda sizlere nasıl FM Verici yapabileceğinizi tarif ettik.
Klavyenize sağlık. Teşekkürler anlatımınız için..
Bu uygulamayı adsl modemi devreden çıkarıp Pi’yi direkt adsl modem olarak kullanabilirmiyiz?
İnternet bağlantısı için bir modeme her zaman ihtiyacınız olacaktır. Fakat bağlantıyı dağıtma işlemini gören router yerine Pi’yi kullanabilirsiniz.
Mobil veride nasıl kullanabilirim?
Merhaba raspberry pi yi firewall olarak kullanmak için nasıl bir yol izlemek gerekir yardımcı olursanız sevinirim
ufw ve iptables kullanarak yapabilirsiniz zannediyorum ama malesef firewall kurma konusunda herhangi bir tecrübeye sahip olmadığımdam malesef doğrudan yardımcı olamıyorum.
İptablesi kurdum ama sistemi her restart ettiğimde tanımladıgım tüm kurallar sıfır lanıyor bu neden olur bir bilginiz varmı
ben bu şekilde raspberry pi ile bir wifi araba yapmak istiyorum bu anlattığınız şekilde rpi yi wifi ile telefonuma bağlayarak ona komut gönderebilir miyim ?
Gönderebilirsiniz, fakat bahsettiğiniz uygulamanın bu proje ile alakası yoktur. Çok daha farklı bir yol izlemeniz gerekecektir.
Raspberry Pi 3 ile bir ip-router yapılabildiğine göre ağdaki internet akışını kontrol eden ve log tutan bir cihaz yapılabilir sanırım. Tek problem bu iş için yeterli performans gösterip gösteremiyeceği. Bu konuda görüşlerinizi almak isterim.
İşlemci olarak 4 çekirdekli ARMv7 mimariye sahip BCM2837 entegresi yeterli gelecektir, fakat kart üzerindeki ethernet portu, diğer USB portları gibi tek port üzerinden dönüştürücü ile kullanıldığından performansı limitleyebilir. WiFi’de ise böyle bir limitleme bulunmamaktadır.
O halde bu projeyle ilgili kart seçerken araştırmam gereken nokta ethernet portu ve onun karta bağlantı mimarisi gibi görünüyor. Teşekkürler.
Birşey soracağım ben bahsettiğiniz client.ovpn dosyasını bulamadım link koymanızı rica etsem
Bu dosyayı sahip olduğunuz VPN sağlayıcıdan temin etmeniz gereklidir.
Merhabalar Kerem hocam,öncelikle elinize sağlık çok güzel bir yazı olmuş. Acaba böyle bir yapıyı wireless olarak değil de doğrudan ethernet portu üzerinden yapmak istesek kullanabileceğimiz minimum kart ne olabilir.
Merhaba, elinize sağlık güzel bir yazı olmuş. Yalnız ethernet girişi olan bir cihaza raspberry pi’nin wi-fi ile bağlı olduğu ağdaki internete erişmesini sağlamak istesek nasıl bir yol izlememiz gereken yol farklı mı olmalı?
client.ovpn nasıl oluşturacağım, yardımcı olur musunuz? şimdiden teşekkür ederim
Güzel bir çalışma. Ama güncel vpn protokolü wireguard ile ilgili bir çalışma yapsanız keşke. Ben sizin çalışmanız ve ingilizce wireguard vpn çalışmalarını karıştırıp ortak yönlerini alarak birşey yapmaya çalıştım. Sonuç network komple gitti. Yeni yükleme yapmadan geri yükleme imkanı var mı bilmiyorum. Aksi halde tekrar kurulum yapacağım.