---
title: 'VPN Teknolojileri'
source: 'https://academia.sh/tr/kurslar/kablosuz-ve-guvenlik/vpn-teknolojileri'
course: 'Kablosuz Ağlar ve Ağ Güvenliği'
language: tr
updated: '2026-08-17T18:07:22+00:00'
license: 'CC BY-SA 4.0'
---

# VPN Teknolojileri

Tünel bir yönlendirme kurgusudur: tünel seçici hangi hedefleri içeri alacağına karar verir, seçilmeyen akış sınırı hiç görmeden çıkar; kırk akışta dört seçici ve iki tünel kurgusu fazla geçen ile fazla duranı ayrı ayrı ölçer.

Kursun buraya kadarki dört dersi sınırı hep aynı yönde kullandı: dışarıyı içeriden ayırmak
için. Güvenlik duvarı türleri, kural dizisi, bölge grafiği ve tespit düzeneği, hepsi
"içeride olan" ile "dışarıda olan" ayrımını verili saydı ve o ayrımın üzerine karar kurdu.

Peki dışarıdaki bir uç **içeri alınmak zorundaysa**? Uzaktaki bir çalışanın makinesi, başka
bir yerleşkedeki bütün bir bölüt, ya da bir bulut sağlayıcının içindeki bir küme — bunların
hiçbiri fiziksel olarak içeride değildir ve içeride sayılmaları gerekir. **VPN (virtual
private network)** bu işi yapan teknoloji sınıfının adıdır. Bu dersin sorusu tünelin ne
koruduğu değil: tünelin **hangi akışları içeri aldığı**, ve içeri alınmayanların ne olduğu.

## Tünel Bir Yönlendirme Kararıdır

Tünel kurulduktan sonra ne yapılabildiği, yani erişimin kapsamı, Siber Güvenlik
müfredatının Çevre Savunması konusunda ölçüldü ve burada tekrarlanmaz. Burada ölçülen şey
tünelin **kurulmasından önceki** karardır ve o karar bir güvenlik kararı değil, bir
**yönlendirme** kararıdır.

Uzak uçta çalışan yazılım, gönderilecek her akış için tek bir soruya yanıt verir: bu akış
tünelden mi gidecek, yoksa yerel çıkıştan mı? Yanıt evetse akış sarmalanır ve tünelin öbür
ucundaki toplayıcıya taşınır; orada açılır ve **kurumun sınırına oradan** girer. Yanıt
hayırsa akış hiç sarmalanmaz, uzak ucun kendi bağlantısından doğrudan çıkar ve kurumun
sınırını **hiç görmez**.

Bu iki yolun ayrımı dersin tamamını taşır. Tünelden geçen akış kural dizisine tabidir.
Tünelden geçmeyen akış hiçbir kurala tabi değildir — çünkü kuralın yazıldığı yere hiç
uğramaz.

## Tünel Seçici

Bu kararı veren yapının adı **tünel seçici (tunnel selector)** olur. Seçici bir kural
dizisi değildir; eylem üretmez, yalnız bir küme tanımlar: hangi hedefler tünele girer.

```text
# ogretilen dokum , calistirilmamistir

tünel tanımı A
  kurgu        : uçtan uca
  seçici       : hedef bölgesi { ic }
  atanan bölge : ic
  seçilmeyen   : yerel çıkış

tünel tanımı B
  kurgu        : siteler arası
  seçici       : hedef bölgesi { ic, dmz, yonetim }
  atanan bölge : (yok; kaynak bölgesi korunur)
  seçilmeyen   : yerel çıkış
```

Seçicinin bütün hedefleri kapsadığı kuruluma **tam tünel**, bir bölümünü dışarıda bıraktığı
kuruluma **bölünmüş tünel (split tunnel)** denir. Bölünmüş tünelin gerekçesi taşımadır:
uzak ucun bütün trafiğini toplayıcıdan geçirmek, hiç ilgisi olmayan akışları da oradan
geçirmek demektir. Bu dersin sorduğu şey gerekçenin doğru olup olmadığı değil, bedelinin
hangi yönde ödendiğidir.

## Seçici Bir Yol Kümesidir

Seçicinin nereye yerleştiğini görmek, dersin geri kalanını okunur kılar. Anahtarlama ve
Yönlendirme kursunda bir paketin yolu, hedefine bakılarak seçilen **bir sonraki düğümle**
belirleniyordu. Tünel seçici tam olarak aynı yerde durur: tünel arayüzü bir sonraki düğüm
adaylarından biridir ve seçici, hangi hedefler için o adayın kazanacağını söyler. Bu yüzden
seçici **kural dizisinden önce** değerlendirilir — kural dizisi paketin sınıra ulaşmasını
bekler, seçici paketin sınıra doğru yola çıkıp çıkmayacağına karar verir.

Bunun iki sonucu vardır. Birincisi, seçicinin çözünürlüğü yönlendirmenin çözünürlüğüdür:
hedefe bakar. "Şu bağlantı noktası tünelden, şu bağlantı noktası yerel çıkıştan" biçiminde
bir ayrım, aynı hedefe giden iki akışı ayırmayı gerektirir ve bir yol kümesi bunu ifade
edemez. İkincisi, seçici uzak uçta durur. Toplayıcı onu tünel kurulurken gönderir, ama
seçilmeyen akışın yolunu belirleyen şey uzak ucun kendi yönlendirme tablosudur. Seçicinin
uzak uçta gevşetilmesi bir yapılandırma kusurudur ve sınır tarafında **hiçbir belirti
vermez**: sınır o akışı zaten hiç görmemektedir.

## İki Kurgu: Siteler Arası ve Uçtan Uca

İki tünel kurgusu arasındaki fark seçicide değil, **kaynak kimliğindedir**.

**Siteler arası (site-to-site)** tünelde iki uç da gerçek bir bölgedir. Bir yerleşkenin iç
bölütü ile bir başkasınınki birbirine bağlanır; her akış kendi bölgesiyle gelir ve sınır onu
kendi bölgesiyle değerlendirir. Tünel yalnız yolu değiştirir, akışın kim olduğunu
değiştirmez.

**Uçtan uca (remote access)** tünelde uzak ucun bir bölgesi yoktur. Tek bir makinedir,
değişken bir yerden bağlanır ve sınır onu hangi bölgeye koyacağını bilmez. Bu yüzden tünel
ona bir bölge **atar**: tünelden çıkan her akış, toplayıcının verdiği bölgeyle sınıra girer.
Atama bir kolaylık değil, zorunluluktur — kural dizisi `kaynak` ölçütünü okuyor ve okuyacak
bir şey bulması gerekiyor.

Ölçümün varsayımları:

- **AG51** — Kırk akış kursun ortak kurgusundan üretilir; her akışın kaynağı, hedefi ve
  bağlantı noktası kurgudandır. Kâhin `politika` işlevidir ve kurguyu biz yazdığımız için
  bilinir. `politika` bu derste **değiştirilmez**.
- **AG52** — Tünele giren akış toplayıcıda açılır ve sınıra oradan girer; sınır onu
  `politika` ile değerlendirir. Uçtan uca kurguda değerlendirme, kaynağı **atanan bölgeyle
  değiştirilmiş** kayıt üzerinde yapılır. Değiştirilen şey kayıttır, işlev değildir.
- **AG53** — Tünele girmeyen akış uzak ucun yerel çıkışından gider. Hedefi dış bölgeyse
  ulaşır; iç bölgelerden birine gidiyorsa hiç ulaşmaz. Bu akışlar kural dizisine hiç
  uğramaz.
- **AG54** — Dört seçici karşılaştırılır: tam tünel ve üç bölünmüş küme. Seçiciler yalnız
  **hedef bölgesine** bakar; kâhini kullanmazlar.
- **AG55** — Uçtan uca kurguda atanan bölge ikinci bir eksendir ve tek başına ölçülür;
  seçici o ölçümde tam tünelde sabitlenir.
- **AG56** — Küme kırk akıştır; ölçülebilen en küçük fark `1/40 = 0,025`. Bundan küçük bir
  fark bu kümeyle savunulmaz.

## Ölçüm

```python
"""Tunel bir yonlendirme kurgusudur: secici hangi hedefi iceri aliyor.

Bolum 1 - dort tunel secicisi, iki tunel kurgusunda.
Bolum 2 - ucdan uca tunelin atadigi bolge tek basina ne yapiyor.
"""
TOHUM = 20260811
BOLGELER = ("dis", "dmz", "ic", "yonetim")


def uretec(tohum):
    d = tohum % 2147483646 + 1

    def r(n):
        nonlocal d
        d = (d * 48271) % 2147483647
        return d % n
    return r


def akislar(sayi=40, tohum=TOHUM):
    r, liste = uretec(tohum), []
    for i in range(sayi):
        liste.append({"no": i + 1, "kaynak": BOLGELER[r(4)],
                      "hedef": BOLGELER[r(4)],
                      "bnokta": (80, 443, 22, 3306, 8080)[r(5)]})
    return liste


def politika(a):
    """Niyet: disaridan yalniz DMZ web kalemine; yonetime disaridan kimse."""
    if a["kaynak"] == "dis":
        return a["hedef"] == "dmz" and a["bnokta"] in (80, 443)
    if a["kaynak"] == "dmz":
        return a["hedef"] == "ic" and a["bnokta"] == 3306
    if a["kaynak"] == "yonetim":
        return True
    return a["hedef"] != "yonetim"


def fark(olaylar, niyet, duzenek):
    d = {"dogru_gecti": 0, "dogru_durdu": 0, "yanlis_gecti": 0, "yanlis_durdu": 0}
    for o in olaylar:
        n, g = niyet(o), duzenek(o)
        if n and g:
            d["dogru_gecti"] += 1
        elif not n and not g:
            d["dogru_durdu"] += 1
        elif g:
            d["yanlis_gecti"] += 1
        else:
            d["yanlis_durdu"] += 1
    return d


SECICILER = {"tam tünel": lambda a: True,
             "bölünmüş: iç": lambda a: a["hedef"] == "ic",
             "bölünmüş: iç, dmz": lambda a: a["hedef"] in ("ic", "dmz"),
             "bölünmüş: dış hariç": lambda a: a["hedef"] != "dis"}


def siteler_arasi(secici):
    """Iki uc de gercek bir bolge; tunel yalniz yolu secer."""
    def calis(a):
        if secici(a):
            return politika(a)
        return a["hedef"] == "dis"      # secilmeyen akis dogrudan disari cikar
    return calis


def uctan_uca(secici, atanan="ic"):
    """Uzak ucun kendi bolgesi yok; tunel ona bir bolge atar."""
    def calis(a):
        if secici(a):
            return politika({**a, "kaynak": atanan})
        return a["hedef"] == "dis"
    return calis


ak = akislar()
print(f"akış {len(ak)} | niyetin geçirdiği "
      f"{sum(1 for a in ak if politika(a))} | hedefi dış olan "
      f"{sum(1 for a in ak if a['hedef'] == 'dis')}")
print()
print(f"{'tünel seçici':<20s} {'seçilen':>7s} {'siteler arası':>25s}"
      f"{'uçtan uca':>26s}")
print(f"{'':20s} {'':7s} {'doğru':>8s} {'fazla g':>8s} {'fazla d':>8s}"
      f" {'doğru':>8s} {'fazla g':>8s} {'fazla d':>8s}")
for ad, s in SECICILER.items():
    x, y = fark(ak, politika, siteler_arasi(s)), fark(ak, politika, uctan_uca(s))
    print(f"{ad:<20s} {sum(1 for a in ak if s(a)):7d} "
          f"{x['dogru_gecti'] + x['dogru_durdu']:8d} {x['yanlis_gecti']:8d} "
          f"{x['yanlis_durdu']:8d} {y['dogru_gecti'] + y['dogru_durdu']:8d} "
          f"{y['yanlis_gecti']:8d} {y['yanlis_durdu']:8d}")

print()
print(f"{'atanan bölge':<14s} {'doğru':>6s} {'fazla geçen':>12s} "
      f"{'fazla duran':>12s}   (tam tünel, uçtan uca)")
for atanan in BOLGELER:
    d = fark(ak, politika, uctan_uca(SECICILER["tam tünel"], atanan))
    print(f"{atanan:<14s} {d['dogru_gecti'] + d['dogru_durdu']:6d} "
          f"{d['yanlis_gecti']:12d} {d['yanlis_durdu']:12d}")

print()
print(f"{'seçilmeyenler':<20s} {'sayı':>5s} {'doğrudan çıkan':>15s} "
      f"{'ulaşamayan':>11s}")
for ad, s in SECICILER.items():
    disarida = [a for a in ak if not s(a)]
    print(f"{ad:<20s} {len(disarida):5d} "
          f"{sum(1 for a in disarida if a['hedef'] == 'dis'):15d} "
          f"{sum(1 for a in disarida if a['hedef'] != 'dis'):11d}")
```

```
akış 40 | niyetin geçirdiği 22 | hedefi dış olan 11

tünel seçici         seçilen             siteler arası                 uçtan uca
                                doğru  fazla g  fazla d    doğru  fazla g  fazla d
tam tünel                 40       40        0        0       25       11        4
bölünmüş: iç              10       24        6       10       21        9       10
bölünmüş: iç, dmz         18       30        6        4       25       11        4
bölünmüş: dış hariç       29       34        6        0       25       11        4

atanan bölge    doğru  fazla geçen  fazla duran   (tam tünel, uçtan uca)
dis                22            0           18
dmz                20            0           20
ic                 25           11            4
yonetim            22           18            0

seçilmeyenler         sayı  doğrudan çıkan  ulaşamayan
tam tünel                0               0           0
bölünmüş: iç            30              11          19
bölünmüş: iç, dmz       22              11          11
bölünmüş: dış hariç     11              11           0
```

## Seçilmeyen Akış Nereye Gidiyor

Üst tablonun ilk satırı bir taban çizgisidir. **Siteler arası tam tünelde** kırk akışın
kırkı tünelden geçiyor, her biri kendi bölgesiyle sınıra giriyor ve sonuç **40 doğru, 0
fazla geçen, 0 fazla duran**. Tünel burada politikaya hiçbir şey eklemedi ve hiçbir şey
eksiltmedi; yalnız uzak bölütü sınırın önüne taşıdı.

Seçici daraldığında iki yön birden konuşmaya başlıyor ve **ikisi aynı kaynaktan gelmiyor**.

**Fazla duran**, tünele alınmayan ve hedefi bir iç bölge olan akışlardan geliyor. Yerel
çıkıştan gitmeye çalışıyorlar, kuruma ulaşamıyorlar ve niyet onların bir bölümünü
geçirecekti. `iç` seçicisinde **10**, `iç, dmz` seçicisinde **4**, `dış hariç`
seçicisinde **0**. Seçiciyi genişletmek bu yönü doğrudan düzeltiyor.

**Fazla geçen** ise seçici ne kadar genişlerse genişlesin **6'da sabit kalıyor**. Kaynağı
alt tablonun son satırında: her üç bölünmüş kurulumda da tünele girmeyen akışların
**11**'inin hedefi dış bölgedir ve bu on biri yerel çıkıştan gerçekten ulaşır. Kâhin
bunların **6**'sını durduracaktı — çünkü politika dış hedefli her akışı geçirmiyor. Seçiciyi
`iç`'ten `dış hariç`'e kadar genişletmek bu altısına dokunmuyor, çünkü üç seçicinin hiçbiri
dış hedefi tünele almıyor.

Örüntü şudur: **bölünmüş tünelde fazla duran seçicinin darlığından, fazla geçen ise
seçicinin dışında bırakılanın kural dizisini hiç görmemesinden doğar.** Birincisi seçici
genişletilerek kapanır, ikincisi kapanmaz — kapanması için seçicinin **dış hedefi de**
içine alması, yani bölünmüş tünelin bırakılıp tam tünele dönülmesi gerekir. `dış hariç`
satırı bunu birebir gösteriyor: fazla duran sıfırlanmış, fazla geçen hâlâ **6**.

Sayıların büyüklüğü de kayda değer. Kırk akışlık bir kümede ölçülebilen en küçük fark
`1/40 = 0,025`'tir. Sabit kalan altı fazla geçen bu kümede `0,150`, `iç` seçicisinin on
fazla duranı `0,250` eder; ikisi de bandın çok üstündedir. Tablodaki sıfırdan büyük her
satır farkı en az **iki akış**, yani `0,050`'dir; hiçbir okuma tek bir akışa dayanmıyor.
Ölçümün taşıdığı iddia yine de sayıların kendisi değil, **iki yönün ayrı kaynaklardan
gelmesidir**: biri seçicinin darlığından, öbürü seçicinin dışında kalanın denetime hiç
uğramamasından.

## Atanan Bölge Tek Başına Ne Yapıyor

Sağdaki üç sütun aynı seçicileri **uçtan uca** kurguda ölçüyor ve tablo değişiyor: tam
tünelde bile **25 doğru, 11 fazla geçen, 4 fazla duran**. Kırk akışın kırkı tünelden
geçmesine rağmen sonuç bozuldu, çünkü bu kurguda akışlar sınıra kendi bölgeleriyle değil,
**tünelin atadığı bölgeyle** giriyor. Kural dizisi `kaynak` ölçütünü okuyor ve artık hepsinde
aynı değeri okuyor.

Orta tablo bu eksenin tamamını açıyor. Atanan bölge `ic` iken **11 fazla geçen, 4 fazla
duran**. Atama `dis`'e çekilirse fazla geçen **0**'a iner ve fazla duran **18**'e çıkar:
tünelden gelen hiçbir akışa güvenilmemiş olur. Atama `yonetim`'e açılırsa fazla geçen
**18**, fazla duran **0** olur: her akış en geniş bölgeye yerleştirilmiştir. `dmz` ise iki
yönü birden kötüleştiriyor — **0** ve **20** — çünkü politikanın DMZ'ye verdiği yol dar bir
yoldur ve uzak uçların gerçek dağılımına uymaz.

Dört satırın hiçbiri sıfır–sıfır vermiyor. Bunun nedeni yapısaldır: kırk akış **dört ayrı
kaynak bölgesinden** geliyor ve tek bir atama onları tek bir bölgeye topluyor. Bir ayrımı
taşıyan bilgi, tek bir değere eşlendiğinde geri getirilemez. **Uçtan uca tünelin bedeli
taşıdığı bayt değil, sildiği ayrımdır.**

Silinen ayrımı geri getirmenin tek yolu, atamayı **tek bir değer olmaktan çıkarmaktır**:
her yetki kümesi için ayrı bir tünel kurmak ve her tünele kendi bölgesini atamak. Ölçüm bunu
doğrudan söylüyor — dört bölgeden gelen akış dört ayrı atama altında dört ayrı satır üretir
ve satırların hiçbiri öbürünün hatasını taşımaz. Bedeli kural tarafında görünür: tünel sayısı
kadar toplayıcı arayüzü, arayüz sayısı kadar `kaynak` değeri ve kural dizisinde o kadar
ayrı dal. Kural saymanın politikayı ölçmediğini kurs zaten söylemişti; burada tersi de
doğrudur — **kuraldan kaçınmak da politikayı ölçmez, yalnız ayrımı ucuza kapatır.**

## Özet

- Tünel, kurulmadan önce bir **yönlendirme** kararıdır: tünel seçici hangi hedeflerin içeri
  alınacağını belirler, seçilmeyen akış kural dizisine hiç uğramaz.
- Siteler arası tam tünelde kırk akış **40 doğru, 0 fazla geçen, 0 fazla duran** verir;
  tünel politikaya bir şey eklemez.
- Bölünmüş tünelde fazla duran seçicinin darlığından gelir ve genişletmeyle **10 → 4 → 0**
  iner; fazla geçen üç bölünmüş kurulumda da **6**'da sabit kalır çünkü kaynağı seçicinin
  dışında bırakılan **11** dış hedefli akıştır.
- Uçtan uca kurguda tünel akışa bir bölge atamak zorundadır; tam tünelde bile sonuç
  **25 doğru, 11 fazla geçen, 4 fazla duran**'a düşer.
- Atanan bölge tek başına iki yönü zıt yönlerde çeker: `dis` ile **0 / 18**, `yonetim` ile
  **18 / 0**. Dört bölgeden gelen akışı tek bir bölgeye toplamak, ayrımı geri getirilemez
  biçimde siler.

## Sonraki Adım

Uçtan uca tünelin bütün numarası, dışarıdaki bir ucu kural dizisine **içeriden gelmiş gibi**
göstermektir. Bu numaranın zorunlu olmasının nedeni tek bir satırdadır: kural dizisi hâlâ
`kaynak` ölçütünü okuyor ve okuyacak bir bölge bekliyor. Sonraki ders bu beklentiyi
kaldırdığında ne olduğunu ölçer — `kaynak` ölçütü kural dizisinden çıkarıldığında kural
sayısı ve iki yönlü hata nasıl değişir, ve konum ölçütünün yerine ne konmak zorunda kalır.
