Bu sorunu çözmek için hem iptables hem de yönlendirme kurallarını ayarlamanız gerekir . Karşılaştığınız özel sorun, giden SSH paketlerinin Ethernet arabiriminiz yerine anonim VPN tünel arabiriminiz aracılığıyla yönlendirilmesidir. Bunun nedeni, VPN yazılımınızın, işlenmemiş tüm trafiği tünel arabirimi üzerinden göndermek için bir yönlendirme kuralı oluşturmasıdır. Ağ trafiğinizi anonimleştirmek için iyi; bilgisayarınıza SSH bağlantısı kurmak için kötü.
Bu sorunu çözmenin birkaç yolu var, ancak aynı durumda benim için çalışanı sizinle paylaşacağım. Yapmamız gerekenler:
- VPN dışı trafiği işlemek için yeni bir IP kural tablosu oluşturun
- Belirli bir netfilter maskesiyle işaretlenmiş paketler için VPN olmayan masamıza bakmak için bir IP kuralı ekleyin
- VPN olmayan tablomuzdaki tüm trafiği tünel yerine Ethernet arayüzünüzü kullanacak şekilde yönlendiren bir IP yolu ekleyin
- Tüm SSH trafiğini belirlenmiş netfilter maskemizle işaretlemek için bir iptables kuralı ekleyin
Not: Aşağıdakileri yaparken Raspbian ile çalışıyordum, bu yüzden dağıtımınıza uyacak şekilde komutları biraz ayarlamanız gerekebilir .
Yeni bir IP kural tablosu oluşturma
İproute2'nin tablo tanım dosyasını inceleyerek başlayın. Mevcut kural tablolarının adını veya numarasını kullanmadığımızdan emin olmak istiyoruz.
cat /etc/iproute2/rt_tables
Muhtemelen şu satırlarda bir şeyler göreceksiniz:
# reserved values
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
Yeni kural tablonuz için rasgele bir sayı ve ad seçin - yukarıda kullanılmayan herhangi bir şey. novpn
Bu cevabın geri kalanı için 201 sayısını ve adını kullanacağım .
Bir tanımı doğrudan tanım dosyasına ekleyin veya istediğiniz metin düzenleyicide düzenleyin:
echo "201 novpn" >> /etc/iproute2/rt_tables
VPN olmayan tabloyu aramak için yeni bir IP kuralı ekleyin
Netfilter maskeleriyle ilgili mevcut ip kurallarını kontrol edin:
ip rule show | grep fwmark
Eğer grep hiçbir şey yapmazsa, netsiniz demektir. Bazı satırlar yazdırıyorsa fwmark
, her satırdaki kelimenin sağındaki onaltılık sayıyı not edin . Şu anda kullanılmayan bir numara seçmeniz gerekecektir. Mevcut herhangi bir fwmark kuralı olmadığım için 65 sayısını seçtim.
ip rule add fwmark 65 table novpn
Bunun yaptığı, netfilter maskeli 65 herhangi bir paketin novpn
, paketleri nasıl yönlendireceğine ilişkin talimatlar için yeni masamıza bakmasına neden olur .
Ethernet arayüzünü kullanmak için yeni tablomuzdaki tüm trafiği yönlendirin
ip route add default via YOUR.GATEWAY.IP.HERE dev eth0 table novpn
Burada dikkat edilmesi gereken önemli nokta dev eth0
. Bu, novpn
tablodan geçen tüm trafiği, VPN'nizin oluşturduğu sanal tünel arabirimi yerine yalnızca donanım Ethernet arabirimini kullanmaya zorlar .
Şimdi, yeni kurallarınızın ve rotalarınızın hemen etkili olmasını sağlamak için iproute önbelleğinizi temizlemek için iyi bir zaman olacaktır:
ip route flush cache
Güvenlik duvarı kuralına, tüm SSH trafiğini belirlenen netfilter maskesi ile işaretlemesi talimatını verin
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65
Burada herhangi bir derinlemesine açıklamak için çok fazla seçenek var. Burada neler olup bittiğini anlamak için iptables için manuel sayfayı okumanızı şiddetle tavsiye ederim:
man iptables
Özetle: Güvenlik duvarının mandal tablosuna (özel paket kullanımı için), kaynak port 22'den kaynaklanan tüm TCP paketlerini belirlenmiş netfilter maskemiz 65 ile işaretlemesini söyleyen bir çıkış kuralı ekliyoruz.
Sırada ne var?
Bu noktada, SSH'yi test etmeye hazır olmalısınız. Her şey yolunda giderse, "" farklı oturum açma "istemiyle karşılaşmanız gerekir.
Güvenlik uğruna, güvenlik duvarınıza tünel arayüzünden gelen SSH isteklerini bırakmasını bildirmenizi öneririm:
iptables -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j DROP
Yukarıdaki tüm talimatların geçici olduğunu unutmayın (kural tablosu kimliğinin oluşturulması hariç) - bilgisayarınızı bir sonraki başlatmanızda bunlar silinecektir. Onları kalıcı kılmak sana bıraktığım bir egzersiz.