İçeriğe geç
academia.sh

Ders 14 / 20

Sanal Özel Ağlar

Tünelin açtığı erişim kapsamı üç yerleşimde koşturulur: uzak uç iç bölgeye indiğinde kaç kaleme doğrudan erişiliyor, ayrı bölgeye ve rol başına bölgeye indiğinde kaç kalem kapsam dışında kalıyor; bölünmüş tünel kaç bağlantıyı denetim dışında bırakıyor ve tek bir doğrulama kaç bağlantının özne kimliğini kanıtlanmış saymaya yetiyor.

İçindekiler

Buraya kadar sayılan her savunma trafiği ya bölgelere ayırdı, ya bir noktadan geçirdi, ya kaydetti ya da düşürdü. Hepsinin ortak varsayımı bağlanan tarafın ağın dışında durmasıydı. Tünel bu varsayımı kaldırır: uzaktaki bir uç doğrulandıktan sonra iç ağdan bir adres alır ve bölge grafiğinde bir düğüm hâline gelir. O andan sonra uzaklık bir güvenlik özelliği değildir.

Ölçülen üç şey var. Tünel açıldığında hangi bölgeye iniliyor ve oradan kaç kaleme erişiliyor; bölünmüş tünel kaç bağlantıyı tünelin dışında bırakıyor; ve tek bir doğrulama kaç bağlantının özne kimliğini kanıtlanmış saymaya yetiyor. Bulut ağlarında tünel ve özel bağlantı başka bir kursta ele alındı; buradaki eksen bağlantının kurulması değil, kurulduktan sonraki kapsamıdır.

  • CS29. Üç uzak uç sınıfı, kalem sayıları, bağlantı ve oturum sayıları kurgusal bölgesel ölçüm ağına aittir. Gerçek tünel kurulmuyor; ölçülen şey node ile kurulan modeldir.
  • CS30. Şifreleme, anahtar değişimi ve tünel protokolü modellenmedi. Tünelin kurulduğu ve içindeki trafiğin dışarıdan okunamadığı varsayıldı; kanıtın neye dayandığı bu kursun dışındadır.
  • CS31. Bölge içinde kısıt yok sayıldı: bir bölgeye inen uç o bölgenin bütün kalemlerine erişir. Doğrudan erişim, iniş bölgesi ile ondan çıkan kuralların hedefleri sayıldı.
  • CS32. Oturum süresi sekiz saat alındı ve her oturumun tam sürdüğü varsayıldı. Yeniden doğrulama, oturum yenileme ve boşta kalma zaman aşımı modellenmedi.
  • CS33. Bağlantıların kurum hedefli ve dış hedefli ayrımı elle işaretlendi; her koşum aynı sayıları üretir.

Tünelin İndiği Bölge

Uzaktan erişim tünelinin tek bir yapılandırma kalemi bütün kapsamı belirliyor: uzak ucun hangi bölgeden adres aldığı. En kolay yol onu çalışanların bulunduğu bölgeye indirmektir, çünkü o bölgenin kuralları zaten yazılmıştır ve hiçbir yeni satır gerekmez. Model üç yerleşimi karşılaştırıyor: iç bölgeye iniş, tek bir uzak erişim bölgesine iniş ve her uç sınıfının kendi bölgesine inişi.

// tunel.mjs — tunelin indigi bolge, erisim kapsami ve baglanti dagilimi; model, gercek tunel degil
export const KALEM = { dmz: 4, sube: 120, saha: 60, uygulama: 12, veri: 6, yonetim: 5, yedek: 3 };
const YONETIM = ['dmz', 'sube', 'saha', 'uygulama', 'veri', 'yedek'].map((b) => ['yonetim', b]);
export const TABAN = [['sube', 'dmz'], ['sube', 'uygulama'], ['saha', 'dmz'], ['dmz', 'uygulama'],
  ['uygulama', 'veri'], ['veri', 'yedek'], ...YONETIM];
// [sinif, uc sayisi, kurum hedefli baglanti, dis hedefli baglanti, donemdeki oturum]
export const UC = [
  ['saha dizustu', 40, 26400, 5100, 880], ['evden calisan', 25, 18600, 92000, 550],
  ['tedarikci', 6, 740, 0, 24],
];
// Uc sinifi hangi bolgeye iniyor ve o bolgeden hangi kurallar yaziliyor
export const YERLESIM = {
  duz: { inis: () => 'sube', ek: [] },
  'tek uzak bolge': { inis: () => 'uzak', ek: [['uzak', 'dmz'], ['uzak', 'uygulama']] },
  'rol basina bolge': {
    inis: (s) => ({ 'saha dizustu': 'uzak-saha', 'evden calisan': 'uzak-ofis', tedarikci: 'uzak-tedarik' })[s],
    ek: [['uzak-saha', 'dmz'], ['uzak-ofis', 'dmz'], ['uzak-ofis', 'uygulama'], ['uzak-tedarik', 'dmz']],
  },
};
export function ulasilan(kenar, bas) {
  const gor = new Set(), kuyruk = [bas];
  while (kuyruk.length) {
    const b = kuyruk.shift();
    for (const [x, y] of kenar) if (x === b && !gor.has(y)) { gor.add(y); kuyruk.push(y); }
  }
  return gor;
}
export const kalemi = (kume) => [...kume].reduce((a, b) => a + (KALEM[b] ?? 0), 0);
export const kapsam = (y, s) => {             // bir uc sinifinin tunel acikken erisebildigi kalem
  const kenar = [...TABAN, ...y.ek], bas = y.inis(s);
  const yakin = new Set([bas, ...kenar.filter(([x]) => x === bas).map(([, b]) => b)]);
  const tum = ulasilan(kenar, bas); tum.add(bas);
  return { bolge: [...tum].filter((b) => KALEM[b]).length, dogrudan: kalemi(yakin), gecisli: kalemi(tum) };
};
export const TOPLAM_KALEM = kalemi(Object.keys(KALEM));
export const OTURUM_SAAT = 8;                 // tek dogrulamayla acilan oturumun suresi
export const topla = (i) => UC.reduce((a, u) => a + u[i], 0);

Model iki ölçü veriyor ve ikisini karıştırmamak gerekiyor. Doğrudan erişilen kalem, tünelin indiği bölgenin kendi kalemleriyle o bölgeden çıkan kuralların hedeflerini toplar; geçişli erişilen kalem grafiğin tamamını yürür. Aradaki fark bir adım daha atmanın neye bağlı olduğudur: doğrudan erişilen kalem uzak ucun elindedir, geçişli olanlar arada bir uygulama akışının kullanılmasını gerektirir. Bölütleme dersinde aynı ayrım ilk atlama ile geçişli kalem olarak sayılmıştı.

// kosum1.mjs — tunel acikken uc sinifinin erisebildigi bolge ve kalem, uc yerlesimde
import { UC, YERLESIM, TABAN, kapsam, TOPLAM_KALEM } from './tunel.mjs';

console.log(`ic ag ${TOPLAM_KALEM} kalem, ${TABAN.length} bolge kurali\n`);
console.log('sutunlar: uc sinifi basina dogrudan / gecisli erisilen kalem');
console.log(`${'yerlesim'.padEnd(18)} ${'ek kural'.padStart(8)}` + UC.map((u) => u[0].padStart(16)).join(''));
for (const [ad, y] of Object.entries(YERLESIM))
  console.log(`${ad.padEnd(18)} ${String(y.ek.length).padStart(8)}` +
    UC.map((u) => { const k = kapsam(y, u[0]); return `${k.dogrudan}/${k.gecisli}`.padStart(16); }).join(''));
console.log(`\n${'yerlesim'.padEnd(18)} ${'ek kural'.padStart(8)} ${'en genis dogrudan'.padStart(17)} ` +
  `${'kapsam disi kalem'.padStart(17)} ${'kapali yol payi'.padStart(15)}`);
for (const [ad, y] of Object.entries(YERLESIM)) {
  const en = Math.max(...UC.map((u) => kapsam(y, u[0]).dogrudan));
  console.log(`${ad.padEnd(18)} ${String(y.ek.length).padStart(8)} ${String(en).padStart(17)} ` +
    `${String(TOPLAM_KALEM - en).padStart(17)} ${`%${((TOPLAM_KALEM - en) * 100 / TOPLAM_KALEM).toFixed(1)}`.padStart(15)}`);
}
const r = YERLESIM['rol basina bolge'];
console.log('\nrol basina bolgede sinif basina erisilen kalem:');
for (const u of UC) console.log(`  ${u[0].padEnd(14)} ${u[1]} uc  ${String(kapsam(r, u[0]).dogrudan).padStart(4)} dogrudan, ${String(kapsam(r, u[0]).gecisli).padStart(3)} gecisli kalem`);
ic ag 210 kalem, 12 bolge kurali

sutunlar: uc sinifi basina dogrudan / gecisli erisilen kalem
yerlesim           ek kural    saha dizustu   evden calisan       tedarikci
duz                       0         136/145         136/145         136/145
tek uzak bolge            2           16/25           16/25           16/25
rol basina bolge          4            4/25           16/25            4/25

yerlesim           ek kural en genis dogrudan kapsam disi kalem kapali yol payi
duz                       0               136                74           %35.2
tek uzak bolge            2                16               194           %92.4
rol basina bolge          4                16               194           %92.4

rol basina bolgede sinif basina erisilen kalem:
  saha dizustu   40 uc     4 dogrudan,  25 gecisli kalem
  evden calisan  25 uc    16 dogrudan,  25 gecisli kalem
  tedarikci      6 uc     4 dogrudan,  25 gecisli kalem

İlk satır hiç kural yazmamanın karşılığıdır. Tünel şube bölgesine indiğinde uzak uç o bölgenin yüz yirmi kalemiyle aynı düzlükte durur ve şube bölgesinden çıkan kuralları da devralır: doğrudan erişilen kalem yüz otuz altı, geçişli erişilen kalem yüz kırk beş. İki yüz on kalemlik ağın üçte ikisi tek bir tünelin arkasında. Tedarikçi ucu ile saha dizüstü ucu aynı sayıyı alıyor, çünkü kapsam ucun kim olduğuna göre değil, indiği bölgeye göre belirleniyor.

İkinci satır iki kural satırının karşılığıdır. Uzak uçlar kendi bölgesine indiğinde doğrudan erişilen kalem on altıya, geçişli erişilen kalem yirmi beşe iniyor; kapsam dışında kalan kalem yetmiş dörtten yüz doksan dörde çıkıyor. İki satır yüz yirmi kalemi kapsam dışına taşıyor. Bu dersin en yüksek getirili hamlesi budur ve maliyeti iki satırdır.

Üçüncü satır iki satır daha ekliyor ve toplam kapsamı hiç değiştirmiyor: geçişli erişim yine yirmi beş. Değişen şey sınıf başına doğrudan erişimdir. Saha dizüstü ile tedarikçi ucu on altı yerine dört kaleme doğrudan erişiyor; evden çalışanın kapsamı aynı kalıyor, çünkü onun işi uygulama bölgesindedir. Rol başına bölge, kapsamı toplamda daraltmıyor — en geniş kapsamı en az sayıda uca bırakıyor. Altmış beş ucun kırk altısı artık on altı yerine dört kalem görüyor.

Bu üç satırın ortak dersi, tünelin kendisinin bir güvenlik kalemi olmadığıdır. Üç yerleşimde de aynı tünel kuruluyor, aynı doğrulama yapılıyor ve içerideki trafik aynı biçimde taşınıyor. Ölçüyü belirleyen tek şey uzak ucun hangi bölgeden adres aldığı ve o bölgeden hangi kuralların yazıldığı. Tünel bir erişim aracıdır; kapsamı ise bir bölütleme kararıdır ve bölütleme kararı verilmediğinde varsayılan kapsam en geniş olanıdır.

Yerleşimlerin bedeli kural satırında görünüyor ama bir kalem daha var ve tabloda yok: uzak ucun hangi sınıfa ait olduğunun her oturumda belirlenmesi gerekiyor. İç bölgeye inen düzende bu soru hiç sorulmaz. Rol başına bölge düzeninde her oturumda bir eşleme yapılır ve eşlemenin dayandığı bilgi ucun kendi ilan ettiği bir şey değil, doğrulamanın döndürdüğü bir özelliktir. Dört kural satırının gerçek maliyeti bu eşlemenin bakımıdır: sınıf değiştiren bir uç, kural değişmeden kapsam değiştirir.

Bölünmüş Tünel ve Doğrulamanın Kapsamı

// kosum2.mjs — tam tunel ile bolunmus tunel: yogunlastirici yuku, denetim disi baglanti ve dogrulamanin kapsami
import { UC, OTURUM_SAAT, topla } from './tunel.mjs';

console.log(`${'uc sinifi'.padEnd(14)} ${'uc'.padStart(3)} ${'oturum'.padStart(6)} ${'kurum hedefli'.padStart(13)} ` +
  `${'dis hedefli'.padStart(11)} ${'tam tunel'.padStart(9)} ${'bolunmus'.padStart(8)} ${'oturum basina kanitsiz'.padStart(22)}`);
for (const [ad, uc, kurum, dis, oturum] of UC)
  console.log(`${ad.padEnd(14)} ${String(uc).padStart(3)} ${String(oturum).padStart(6)} ${String(kurum).padStart(13)} ` +
    `${String(dis).padStart(11)} ${String(kurum + dis).padStart(9)} ${String(kurum).padStart(8)} ` +
    `${(kurum / oturum).toFixed(1).padStart(22)}`);
const [uc, kurum, dis, oturum] = [topla(1), topla(2), topla(3), topla(4)];
console.log(`\n${'olcu'.padEnd(38)} ${'tam tunel'.padStart(10)} ${'bolunmus tunel'.padStart(14)}`);
for (const [ad, tam, bol] of [
  ['yogunlastiricidan gecen baglanti', kurum + dis, kurum],
  ['denetim disinda kalan baglanti', 0, dis],
  ['ayni anda iki agda duran uc', 0, uc],
  ['tek dogrulamayla acilan oturum', oturum, oturum],
  ['bir dogrulamanin kapsadigi saat', OTURUM_SAAT, OTURUM_SAAT],
  ['bir dogrulamanin kapsadigi baglanti', Math.round((kurum + dis) / oturum), Math.round(kurum / oturum)],
]) console.log(`${ad.padEnd(38)} ${String(tam).padStart(10)} ${String(bol).padStart(14)}`);
console.log(`\ntunel dustugunde kesilen baglanti  tam ${kurum + dis}  bolunmus ${kurum}`);
console.log(`donemde ${oturum} dogrulama yapiliyor; ${kurum + dis} baglantinin ozne kimligi bu ${oturum} kanita dayaniyor`);
uc sinifi       uc oturum kurum hedefli dis hedefli tam tunel bolunmus oturum basina kanitsiz
saha dizustu    40    880         26400        5100     31500    26400                   30.0
evden calisan   25    550         18600       92000    110600    18600                   33.8
tedarikci        6     24           740           0       740      740                   30.8

olcu                                    tam tunel bolunmus tunel
yogunlastiricidan gecen baglanti           142840          45740
denetim disinda kalan baglanti                  0          97100
ayni anda iki agda duran uc                     0             71
tek dogrulamayla acilan oturum               1454           1454
bir dogrulamanin kapsadigi saat                 8              8
bir dogrulamanin kapsadigi baglanti            98             31

tunel dustugunde kesilen baglanti  tam 142840  bolunmus 45740
donemde 1454 dogrulama yapiliyor; 142840 baglantinin ozne kimligi bu 1454 kanita dayaniyor

Tam tünel bütün trafiği yoğunlaştırıcıdan geçirir: yüz kırk iki bin sekiz yüz kırk bağlantı, denetim dışında sıfır. Bölünmüş tünel yalnız kurum hedefli olanı geçirir ve yük kırk beş bine iner — ama doksan yedi bin yüz bağlantı hiçbir denetimden geçmez. Bu sayının nereden geldiği ikinci satırda: evden çalışan sınıfının dış hedefli bağlantıları tek başına doksan iki bindir. Bölünmüş tünelin yükü üçte bire indirmesinin bütün kaynağı, denetimden çıkardığı bu kümedir.

Üçüncü satır bölünmüş tünelin asıl kalemidir. Bölünmüş tünelde yetmiş bir uç aynı anda iki ağda durur: iç ağdan adres almış hâlde ve doğrudan dış ağa bağlı. İki ağ arasında bir kural kümesi yok; ucun kendisi iki tarafa da bakan bir düğümdür. Bölge grafiğinde çizilen bütün sınırlar bu yetmiş bir noktada kesişiyor. Tam tünelde bu sayı sıfırdır — bedeli, dışarıya giden doksan yedi bin bağlantının da kurumun çıkışından geçmesi ve yoğunlaştırıcının üç kat yük almasıdır.

Son üç satır ölçünün kendisine dönüyor. Dönemde bin dört yüz elli dört doğrulama yapılıyor ve tünel açıldıktan sonra sekiz saat boyunca yeniden sorulmuyor. Tam tünelde bir doğrulama ortalama doksan sekiz bağlantıyı, bölünmüş tünelde otuz bir bağlantıyı kanıtlanmış sayıyor. İlk derste sayılan kırk sekiz iddianın üçü hiçbir neslin kanıtlayamadığı özne kimliğiydi; tünel onu bir kez kanıtlıyor ve sonraki doksan yedi bağlantı için o tek kanıta yaslanıyor. Kanıt yanlış çıkarsa — uç başkasının elindeyse — ağ bunu sekiz saat boyunca fark edecek bir yere sahip değildir, çünkü tünelin içindeki her bağlantı doğrulanmış bir oturumun parçası olarak görünür.

Sütunların ilkinde bir ayrıntı daha var. Oturum başına kanıtsız bağlantı sayısı üç sınıfta da otuz civarında: otuz, otuz üç virgül sekiz ve otuz virgül sekiz. Sayının sınıflar arasında değişmemesi, ölçünün uç sayısıyla ya da işin hacmiyle ilgili olmadığını gösteriyor. Belirleyen şey oturumun uzunluğudur; sekiz saatlik bir oturum, o sürede yapılan her işi tek bir kanıta bağlar. Oturum süresini yarıya indirmek bu sayıyı da yarıya indirir ve karşılığında doğrulama sayısını ikiye katlar — bedeli, dönemde bin dört yüz elli dört yerine iki bin dokuz yüz sekiz kez kimlik sorulmasıdır.

Tünel düştüğünde kesilen bağlantı sütunu bedelin son kalemidir. Yoğunlaştırıcı önceki derste ölçülen denetim noktalarıyla aynı sınıftandır: bir görünürlük kazancı ile bir kullanılabilirlik borcunun aynı hamlede alınması. Tam tünelde borç yüz kırk iki bin bağlantı, bölünmüş tünelde kırk beş bin. Seçim ikisi arasında değil, hangi sayının hangi tarafta yazılacağı üzerinedir.

Siteler arası tünel aynı ölçüyü başka bir ölçekte tekrarlar. Uzaktan erişim tünelinde tek bir uç bir bölgeye iner; siteler arası tünelde bütün bir ağ iner. Şube ağı ile merkezî bölge arasında kurulan bir tünel, iki ağı bölge grafiğinde tek bir kenara indirger ve o kenarın hangi kalemleri kapsadığı yine yazılan kurallara bağlıdır. Kural yazılmadığında iki ağ tek bir düzlük olur; ölçü yine doğrudan erişilen kalemdir ve şube ağının kalem sayısı bu kez uzak ucun değil, karşı tarafın kapsamına eklenir.

Özet

  • Tünel iç bölgeye indiğinde uzak uç 136 kaleme doğrudan, 145 kaleme geçişli erişiyor: 210 kalemlik ağın üçte ikisi. Kapsam ucun kim olduğuna değil, indiği bölgeye bağlı.
  • Ayrı bir uzak erişim bölgesi 2 kural satırıyla doğrudan erişimi 16’ya, geçişliyi 25’e indiriyor; kapsam dışındaki kalem 74’ten 194’e çıkıyor. En yüksek getirili hamle budur.
  • Rol başına bölge 2 satır daha ekleyip toplam kapsamı değiştirmiyor: en geniş kapsamı en az uca bırakıyor. 71 ucun 46’sı 16 yerine 4 kalem görüyor.
  • Bölünmüş tünel yoğunlaştırıcı yükünü 142.840’tan 45.740’a indiriyor; karşılığında 97.100 bağlantı hiçbir denetimden geçmiyor ve 71 uç aynı anda iki ağda duruyor.
  • Dönemde 1.454 doğrulama yapılıyor ve bir doğrulama 8 saati kapsıyor: tam tünelde ortalama 98, bölünmüş tünelde 31 bağlantı tek bir kanıta dayanıyor. Kanıt yanlış çıkarsa ağın bunu sekiz saat boyunca fark edeceği bir yer yok.

Sonraki Adım

Altı derstir yazılan her savunma sonunda aynı şeye indi: bir kural listesi. Bölge sınırları on beş satır, uzak erişim bölgeleri dört satır, denetim noktası ve engelleme listeleri kendi satırları. Bütün bu satırlar tek bir kutuda yan yana durur ve bir paket geldiğinde hepsine birden bakılmaz — sırayla bakılır ve ilk eşleşen kazanır. Sonraki dersin sorusu hangi kuralın yazıldığı değil, hangisinin önce geldiğidir: bilinen bir akış kümesinde her akış için ilk eşleşen kural bulunur ve listenin sırası değiştiğinde kaç akışın sonucunun değiştiği sayılır.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat