Her bağlantıdan sonra yazılan rota anı çözer, haftayı değil. macOS'te kalıcı seçim genellikle VPN hizmetiyle birlikte saklanan bir önektir, çünkü hizmet onu her bağlantıda yeniden kurar ve hizmet kapalıyken kaldırır. Alternatifler test için geçici bir route add ve yalnızca görüşmeden sonra bilinen adresler için bir bağlantı kancasıdır.

Rotanın hizmete mi yoksa oturuma mı ait olduğuna karar verin

Önekin neye bağlı olduğunu sorun. Yerel bir VPN hizmetinin arkasındaki sabit özel ağsa, rota o hizmete aittir. Her bağlantıda değişen bir eş adresine bağlıysa, bir kanca veya durum güdümlü bir iş daha iyi sahip olabilir. Yalnızca önümüzdeki beş dakika için bir yolu denetliyorsanız, geçici bir rota yeterlidir.

Hizmete bağlı rota en temiz yaşam döngüsüne sahiptir. Hizmetle birlikte görünür ve hizmet bağlı değilken kaybolur, bu nedenle işaret ettiği tünelden daha uzun yaşayamaz. Bu özellik tek satırlık bir komutun rahatlığından daha değerlidir.

Oturuma bağlı rota arayüze aittir ve bu numara haber verilmeden değişir. Yeniden bağlantı tünele önceki oturumun kullandığından farklı bir utun adı verebilir; bu da sabit kodlanmış bir komutu hiçbir yeri göstermeyen ya da daha kötüsü başka bir tüneli gösteren bir rotaya dönüştürür.

Geçerli rota ve hizmet durumunu okuyun

Sistemin gerçekten kullandığı adlarla başlayın. Ağ ayarlarındaki hizmet adı aşağıdaki komutların tanımlayıcısıdır ve geçerli rota tablosu bağlı istemcinin ne kurduğunu gösterir. Tünel açıkken ikisini de okuyun.

scutil --nc list
networksetup -listnetworkserviceorder
netstat -rn | head -30
route get 10.20.5.5

Bu arama çekirdeğin bu adres için şu anda hangi ağ geçidini ve arayüzü seçeceğini gösterir. Zaten tüneli seçiyorsa önek kapsanmıştır ve yeni bir rota gereksiz olur. Yerel yönlendiriciyi seçiyorsa tünelde o önek yoktur.

Bağlıyken eş adresini not edin. Hizmete bağlı rotada ağ geçidi değeri olur ve genellikle netstat -rn içinde tünelin varsayılan rotası için gösterilen hedeftir.

Öneki networksetup ile saklayın

networksetup aracı bir ağ hizmetine ek rotalar bağlar. OfficeVPN adlı bir hizmet ve tünelin eşi üzerinden erişilen özel bir önek için biçim şöyledir:

sudo networksetup -setadditionalroutes OfficeVPN 10.20.0.0 255.255.0.0 10.8.0.6
networksetup -getadditionalroutes OfficeVPN

Hizmet adından sonraki her üçlü bir hedef, ağ maskesi ve ağ geçidi olarak tünelin eşini verir. Tek bir çağrı birkaç önek taşıyabilir ve boş bir çağrı saklanan listeyi siler. Okuyucu doğrulama adımıdır; liste boşsa ayar düşündüğünüz hizmete uygulanmamıştır.

Ağ geçidi tünelin eşi olmalıdır, fiziksel yönlendirici değil. Yerel ağ geçidini adlandıran rota özel öneki fiziksel arayüzden dışarı gönderir; bu, ek adımlarla birlikte özgün hatadır. Eski bir eş, doğru görünen bir rotanın hiç trafik taşımamasının en yaygın nedenidir. Eski bir nottan adres kopyalamak yerine eşi bağlı durumdan yeniden okuyun.

route add komutunu yalnızca test için kullanın

Doğrudan rota, bir öneki kalıcı hale getirmeden önce çalıştığını kanıtlamak için yararlıdır. Arayüz biçimi bir ağ geçidi aramasından kaçınır:

sudo route -n add -net 10.20.0.0/16 -interface utun4

Rota bir sonraki yeniden bağlantıda kaybolur ve bugün var olan arayüz numarasına bağlıdır. Bu onu bir tanılama yapar, dağıtım değil. Test çalışıyor ve hizmete bağlı rota çalışmıyorsa önce ağ geçidi değerini karşılaştırın; en sık yanlış olan alan budur.

Bölünmüş davranışı zorlamak için VPN'in varsayılan rotasını değiştiren tavsiyelere dikkat edin. Tam tünel uygulayan bir istemci, yeniden bağlantı veya politika yenilemesinden sonra rotalarını yeniden kurabilir, bu nedenle elle yapılan değişiklik sessizce geri alınır. Birkaç özel önek bir yönlendirme sorunudur; tüm internet trafiğini tam tünel politikasına karşı yerel tutmak sunucu tarafında bir karardır.

Kancayı yalnızca adres görüşüldüğünde seçin

PPP tabanlı bağlantılar için, örneğin L2TP, macOS bağlantı kurulduğunda /etc/ppp/ip-up komutunu çalıştırır. Betik arayüz adını ve görüşülen yerel ile uzak adresleri alır, böylece sunucunun atadığı eşe bağlı bir rota ekleyebilir. Sabit bir hizmet rotasının ifade edemeyeceği durum tam olarak budur.

IKEv2 ve üretici istemcileri bu PPP yolunu hiç kullanmayabilir; bu da betiğin oturum boyunca sessiz kalabileceği anlamına gelir. Bu olduğunda, scutil --nc status komutunu sorgulayan ve durum değişikliğine tepki veren bir launchd işi eşdeğer mekanizmadır; küçük bir gecikmeyle.

Hangi kancayı kullanırsanız kullanın, onu idempotent yapın ve yalnızca kendi oluşturduğu rotaları kaldırmasını sağlayın. Tüneli anan her rotayı silen bir betik eninde sonunda VPN sunucusunu erişilebilir tutan rotayı da silecek ve bağlantı başarılı olur olmaz düşecektir.

Özel hedefi, normal gezinmeyi ve bir yeniden bağlantı ya da uyku döngüsünü denetleyerek bitirin. Ardından scutil --dns komutunu inceleyin, çünkü ad çözümlemesi ayrı bir politikadır ve çalışan bir rota özel adların çözüldüğünü kanıtlamaz.

İlgili makaleler