Linux ve NAT
Giriş Yap Tema Rengi Konu Mesaj Üyeler
Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.
Kullanıcı Adı:
Şifre:

11201 22437 Toplam üye: 17919
Son üye: garret
 
Ana Sayfa Yardım Arcade Giriş Yap Kayıt
 

Reklamlar
Konu Bilgileri
Konu BasligiKonu: Linux ve NAT
Cevap SayisiCevap Sayisi: 0 cevap var
Okunma SayısıOkunma Sayısı 70 defa
Bu Konuyu Görüntüleyenler0 Üye ve 1 Ziyaretçi konuyu incelemekte.
Sayfa: [1]   Aşağı git
  Yazdır  
Gönderen Konu: Linux ve NAT  (Okunma Sayısı 70 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
faster-_-38
Ziyaretçi
« : 27 Mart 2008, 21:21:57 »

LINUX ve NAT

Konular :
Network Address Translation (NAT)
Nat Çesitleri
Nat ve Diger Protokoller
IPNATADM'nin kurulumu
Uygulamalar ve Ornekler
Ornek bir Yapı
Cıkabilecek Problemler
SONSOZ

Network Address Translation (NAT)
NAT(Network Address Translation) firewall mantıgına cok benzer. Zaten Firewall’ın bir parcası olarak DMZ veya local server’lar icin kullanılır. Bilindigi gibi herhangi bir gorevdeki server’ın Internet uzerinden herhangi bir istemci tarafına cevap verebilmesi icin real(internet uzerinde gecerli) bir ip adresi bulunmak zorundadır ve bu adresin aynı subnet uzerinde olması gerekir.
Bircok kurum local ip kullanmaktadir. Router ve ihtiyaci olan ISP tarafındaki ayarları yaptıktan sonra, icerdeki diger makinalarını internet’e cikarmak isterler. Bu local adresler 10/8, 172.16/12 ve 192.168/16 olabilirler fakat bu adreslerin internet uzerinde gercek bir rolu bulunmaz ki zaten dunyada bu ipleri kullanan binlerce makina vardir. Buna bildigimiz anlamda INTRANET denir.
Bu kombinasyon 192.168/16 agı 192.168.0.0 ve mask 255.255.0.0 ile aynı anlama gelir. Aynı zamanda 192.168.1/24 agı 192.168.1.0 ve mask 255.255.255.0 ile aynı manadadır. Netmask larla ilgili onlarca konbinasyon gerceklestirebilir ama standardı 2 bit ve carpanları olarak artar. Soyleki ; 2-4-8-16-32-64-128 bit
Bu durumda kullanılabilecek masklar soyle sıralanabilir. 192.168.1.0 networkunu ele alırsak ;
2 bit icin. Mask 255.255.255.254
------------------------------------
Network : 192.168.1.0 Broadcast : 192.168.1.1
Boyle bir durumda kullanabileceginiz ip yoktur. Ama 2 bitten baslar.
4 bit icin Mask 255.255.255.252
-----------------------------------
Network : 192.168.1.0 Broadcast: 192.168.1.3 Kullanılabilir ipler 192.168.1.1-2
Network : 192.168.1.4 Broadcast: 192.168.1.7 Kullanılabilir ipler 192.168.1.5-6
---------->>>>>

8 bit icin Mask 255.255.255.248
----------------------------------
Network : 192.168.1.0 Broadcast: 192.168.1.7 Kullanılabilir ipler 192.168.1.1-2-3-4-5-6
Network : 192.168.1.8 Broadcast: 192.168.1.15 Kullanılabilir ipler 192.168.1.9-10-11-12-13-14-15
Network : 192.168.1.16 Broadcast: 192.168.1.23 Kullanılabilir ipler 192.168.1.17-18-19-20-21-22
---------->>>>>

16 bit icin Mask 255.255.255.240
-----------------------------------
Network : 192.168.1.0 Broadcast: 192.168.1.15
Network : 192.168.1.16 Broadcast: 192.168.1.31
Network : 192.168.1.32 Broadcast: 192.168.1.47
---------->>>>>

32 bit icin Mask 255.255.255.224
------------------------------------
Network : 192.168.1.0 Broadcast: 192.168.1.31
Network : 192.168.1.32 Broadcast: 192.168.1.63
Network : 192.168.1.64 Broadcast: 192.168.1.95
---------->>>>>

64 bit icin Mask 255.255.255.224
-----------------------------------
Network : 192.168.1.0 Broadcast: 192.168.1.31
Network : 192.168.1.32 Broadcast: 192.168.1.63
Network : 192.168.1.64 Broadcast: 192.168.1.95
---------->>>>>

128 bit icin Mask 255.255.255.128
-------------------------------------
Network : 192.168.1.0 Broadcast: 192.168.1.127
Network : 192.168.1.128 Broadcast: 192.168.1.255

*Bunlar haricindeki netmask lar standart degildir ve problemler yarattıklarını gorursunuz. Anlasıldıgı gibi Network ve Broadcast adreslerini masklarin 0000 0001 0010 0100 1000 gibi ugrasinca anlamlı gelecek suit bitleri kullanır. Bu konunun detayına inmek isterseniz TCP/IP yi en bastan karistirmanizi tavsiye ederim cunki ondalik sayilar gibi bitlerden olusmuslardır. Fazla karistırmak istemiyorum acikcasi... Ama agınızda kullanabileceginiz standart masklar bunlardan ibarettir.
Netmasklar hakkında da kısaca bilgi verdikten sonra tekrar NAT’ı anlatmaya devam edelim.

Nat dısarı cıkan paketlerin kaynak ipsini alır ve bunu real bir ip’ye donusturur. Gelen paketler icin real hedef ip, local bir ip’ye donusturulur. Yani gercek bir ip , local bir ip’ye donusturulerek bir route yapılandırılmıs olur. Boylelikle NAT ile illegal kullandıgımız bir local ip yi internete gercek bir adresmis gibi gostererek basit bir network cozumu olarak kulllanabiliriz. Boylelikle illegal(local ip) tanımlı server’ımızını firewall’ın tum kurallarından yararlanmasını saglayabiliriz. NAT’ın birkac turevi bulunmaktadır. Bu yapi isletim sisteminden(aix,linux,vs) linux bazlı komutlar icin de farklılık gosterir az da olsa. Linux altında tavsiye edecegim IPNATADM isimizi kesinlikle gorecektir ki bu denenmis ve su an calismaktadır bile.

Nat Cesitleri
1)Map to Map

Birebir illegal ip kaynagını real(gercek) bir ip mis gibi gostermektir. Bu yontemle tek bir real ip tek bir local ipye birebir donustururulur ve bu esnada bir port kısıtlaması yapılmadıgı takdirde 65536 port icin de gecerli bir donusum gerceklesecektir.
2)NAPT (Network Address Port Translation)

Bu yontemde Map to Map gibi fakat port bazlı kullanılır. Yani tum portlar yerine belirlenen bir illegal ip’nin belirli bir portunu real bir ip’nin belirlenen bir portuna donusturur. Bu tavsiye edecegim bir yontemdir ki bu portları cogaltmanız mumkun. Yani real ip icin bircok portu donusturebilirsiniz. Boylelikle kucuk bir firewall uygularsınız.
3)Many to One

Bu yontemlede masquerading tarzı bir port forwarding uygulaması yaparsınız. Yani belirli bir real ip uzerinden tum local ip’lerinizi internet uzerinde gezinmelerini saglayabilirsiniz. Bu tur bir islemin masquerading den farkı local ip'lerin donusecegi ip'nin firewall'unkinden farklı olmasıdır. Boylelikte ortalıkta bos, ne pinglenen , ne tracesroute ile cozebildiginiz bir ip sunuculara girip cıkmaktadır. Firewall'ınızı bu tur islere karıstırmamak en mantılı olanıdır.

NAT ve Diger Protokoller
Nat ve ICMP
Daha onceki versiyonlarında desteklemedigi ICMP paketlerini yeni versiyonlarında destekliyor. Gerci yeni versiyon dedigim 1997 yapilmis en son. Yani nat’la translate ettiginiz bir ip’ye ping ve traceroute tarzı islemler yaptırabiliyorsunuz. Bu bence sakıncalı. Pinglenmeye hic bir server’in ihtiyaci yoktur ki Buyuk firmalar(NASA,Hotmail,vs) bile hacklandıktan sonra server’larından ping ve traceroute destegini kaldırdı. Basit gibi gorunsece bir cok is o kucuk ICMP paketlerinde gizli. Detaylar icin TCP/IP ile ilgili bircok kalın kitap inceleyebilirsiniz.
Nat ve FTP
Her makina uzerinde toplam 65536 adet port bulunur. Bunların ilk 1024 tanesi bilinen server’lar tarafından kullanılmaktadır. Yani geriye tek bir ip uzerinden donusturulecek 64000 kadar port kalmaktadır.
Bu donusturmeler TCP, UDP ve ICMP paketleri icin kullanılır. Fakat kesin FTP paketleri icin biraz daha guclesir cunki paketler acik kaynaklar icerebilirler.
Ornegin, FTP PORT komutu bir ip adresi ve ASCII icinde bir porttur. Bu numaralar NAPT ile buyuk olcude dogru olarak translate edilebilmekte. Sebepleri anlatamayacagım kadar karısık bir okadarda mantıklı inanın. Yalnızca FTP’nin kullandıgı UDP paketlerinin port numaraları ASCII ile belirtildiginden bazen donusturelemiyor veya gecikebiliyor. Bunuda Port bazlı ayarlamalarla halledebiliyor. Veya FTP Passive ile cozumu mumkun oluyor.
Nat ve DNS
Eger internal bir DNS server kullanıyorsanız disardaki isimleri cozmekte birtakım problemlerin cıktıgını belirtiyorlar. Bunu denemedim acikcasi. Acıklamalardan aynen tercume edicek olursam; problem cıkıyor ve bunu asmanın bir cozum yolu olarak ic network adres cozumu icin dns serverin local ipsini , real dns isimleri cozmek icinse NAT ile donusturulen ipsini kullanmanız gerektigi. Yani ic network icin makinanın gercek local ipsini disarısı icin o makinaya veridiginiz virtual NAT real ip adresini kullanın. Bunun sebebini cache de biriken pool’un(havuz) refresh(tazelenmesi) edilememesinden kaynaklandıgını soyluyorlar ve gene UDP'ye baglıyorlar . Cozumu icin ilerde gelicek Kernel parametrelerini bekliyorlar.....
IPCHAINS ve NAT
Ipchains ve Nat ‘ı aynı anda kullanabilirsiniz. Bu da cok iyi bir olanak . Yalnız dikkat edilmesi gereken bir nokta var. Kendinize has Rule’lar verirken ipchains ile sisteminize NAT ile translate ettiginiz gercek ip’ye degilde server’ınızın local ip(192.168.1.10) adresini kullanmalısınız. Bu atlanan cok onemli bir ayrıntı.
Nat ve MASQUERADING
En guzel taraflarından biride bu. Masq ve ipnatadm yi birlikte kullanabiliyorsunuz. İster masq ile local kullanıcılarınızı internet gezgini yapin ister ipnatadm. Masq kullandıgınızda elbetteki client'lerinizin ipsi disarida firewall'ın ipsi olarak gozukecektir.Burda en mantıklısı Ipnatadm ile belirli bir real ip'yi local client'lara paylastırmak. Boylece kotu niyetli kisiler ipnizi bulup ping , traceroute, vs yaptıklarında hic bir sey bulamayacaklar. Boslukta gibi..! Bu en guvenlisi ve tavsiye ettigim yoldur. Ancak yeterli bos ip'niz yoksa masq kullanmanız gerekebilir...
NAT ve Performans
Kendim sahsen soyle gercekci bir test yapmamama rahmen hiz ve performansi farkedebildim. En azından yuzeysel testlerle. Ama ben genede internet uzerinde yakaladıgım performans loglarından birkac alıntı vermek istiyorum. Daha once diyebilirim ki performans maximum %2-4 luk bir oran bunuda milisaniyeye carparsak 30- 200ms kadar dusuyor ki bu bence normal. Bu dusus ozellikle ICMP de fark ediliyor. Yalnızca kesin olarak soyleyebilecek tek sey teste baslarken ilk icmp leri gec daha sonradan toparlayıp normal bir local ip'ye icmp gonderir hızda karsılık verdigi. Tabii unutmamak lazim makiya yuklenme miktari ve konfigurasyonuda permormansı fazlasıyla etkiliyor. Asagıdaki tablo 50 adet rule uygulandıgında yapilmis 3 subnet li local bir test sonucu....
#
t1
t2
t3
t4
t5
t6
averange

seconds






1
43.43
43.27
39.05
36.94
37.88
37.90
39.75

40.39
41.31
39.66
37.29
34.95
34.80
38.07
2
40.57
38.86
36.17
37.70
35.94
37.08
37.72

40.24
41.06
40.10
35.68
35.22
34.42
37.79
3
45.70
44.64
42.25
38.84
39.86
38.79
41.68

40.54
43.03
39.43
37.42
35.85
35.44
38.62
4
49.27
48.96
41.85
39.97
39.20
39.94
43.20

41.57
42.19
40.73
36.44
35.79
36.25
38.83
5
52.90
44.45
43.21
44.88
45.11
48.35
46.48

45.82
45.80
42.39
40.75
41.02
41.93
42.95


#
t1
t2
t3
t4
t5
t6
average

Kbytes/sec (ca.)






1
482
484
536
567
553
553
527

519
507
528
562
599
602
550
2
516
539
579
556
583
565
555

520
510
522
587
595
608
554
3
458
469
496
539
525
540
502

517
487
531
560
584
591
542
4
425
428
500
524
534
524
485

504
496
514
575
585
578
539
5
396
471
485
467
464
433
451

457
457
494
514
510
499
487



IPNATADM'nin Kurulumu
Kurulumu oldukca basittir.Eger Kernel 2.4.x kullanmıyorsanız ufak bir patch'e ihtiyacınız olucaktır ve buraya tıklayarak nat-static-2.2.4.tar.gz ve kerrnel patch'ini indirebilirsiniz. Redhat 6.2 de biraz problem yasıyoruz ama Slackware 7.1 icin patch rahatlıkla kuruluyor. Dosyayı /usr/local dizini altina kopyalayip
gzip -cd nat-static-2.2.4.tar.gz | tar xfv -
komutuyla acin. Daha sonra /usr/src/linux dizinine girip
"patch -p1 < /usr/local/nat-static-2.2.4/kernel/patch-2.2.4-2" komutunu verin.

root *DRHP* /usr/src/linux-2.2.16=47 > patch -p1 < /usr/local/nat-static-2.2.4/
kernel/patch-2.2.4-2
patching file Documentation/Configure.help
Hunk #1 succeeded at 2350 with fuzz 2 (offset 71 lines).
patching file include/linux/ip_nat.h
patching file include/linux/proc_fs.h
patching file net/ipv4/Config.in
Hunk #1 succeeded at 12 with fuzz 1.
patching file net/ipv4/Makefile
patching file net/ipv4/ip_forward.c
Hunk #1 succeeded at 20 (offset 1 line).
Hunk #3 succeeded at 252 (offset -5 lines).
patching file net/ipv4/ip_input.c
Hunk #1 succeeded at 145 (offset 1 line).
Hunk #2 succeeded at 331 (offset 7 lines).
Hunk #3 succeeded at 489 with fuzz 2 (offset 45 lines).
patching file net/ipv4/ip_nat.c
patching file net/ipv4/ip_nat_stub.c
patching file net/ipv4/ip_output.c
patching file net/ipv4/ip_sockglue.c
Hunk #2 succeeded at 385 (offset 2 lines).
patching file net/socket.c
Hunk #2 succeeded at 1489 (offset 7 lines).

gibi bir cikti almalisiniz. En son satırda succeeded diye bir satır okursanız tebrikler. Eger alamazsanız bana bildirin ne gibi problemler cıktıgını. Henuz bir problemle karsılasmadıgım icin cozumde yok dogal olarak. Simdi make menuconfig ile kerneli derleyecegiz. "make menuconfig" komutu ile kernel configurasyon menusune girelim. Orada "Networking Options" Bolumunde su bolumler mutlaka secilmis olmalıdır.

* Paket socket
* Kernel/User netlink socket
* Routing messages
[M] Netlink device emulation
* Network firewalls
* Socket Filtering
* Unix domain sockets
* TCP/IP networking
* IP: multicasting
* IP: advanced router
* IP: network address translation (ipnatadm) (NEW)
* IP: firewalling
* IP: firewall packet netlink device
* IP: transparent proxy support (NEW) #İsteginize baglı
* IP: masquerading
* IP: optimize as router not host # en onemlisi bu
* IP: tunneling # isteginize baglı. Eger VPN kullanıcaksanız
* IP: ARP daemon support # mutlaka olmalı
* IP: Reserver ARP # Olsa cok iyi olur.

Dikkat ederseniz yeni bir bolum ciktı karsimiza network address translation isimli. Bunu Modul olarak da yukleyebilirsiniz.Daha sonra kerneli kaydedip cikin ve sira kernel derleme isine geldi ki bunu hepimiz biliyoruzdur sanırım ama genede kısaca anlatalim.
Eger REDHAT kullanıyorsanız tam olarak hatırlamıyorum ama rc.d lerin icinde biryerde depmod -a diye bir satır olucaktır. Bu satırın basina # isaretini koymalıyız. daha sonra "make dep;make clean;make bzImge" komutuyla kerlenlimizi derleyelim. islem bittikten sonra "cp /usr/src/linux/arch/i386/boot/bzImage /vmlinuz.new" komutyla derlenmis olan yeni kernelinizi kopyalayın. daha sonra tekrar "cp usr/src/linux/arch/i386/boot/System.map /boot/System.map" komutyla kaydedin. son olarak lilo.conf dosyasında gerekli degisiklikleri yapip lilo komutunu calistirin. sonra /usr/src/linux dizininde tekrar "make modules;make modules_install" komutunu verip makinanınızı resetleyin.... Artık nat'in yuklu olması gerekmektedir. Yani bu noktadan sonrra artık "ipnatadm" isimli bir komutumuz olusmustur...

UYGULAMALAR ve ORNEKLER
Gerekenler
Oncelikle bir firewall ve aynı subnet’te bulunan ve kullanılmayan bos real(gercek) iplere ihtiyacınız var. Bir tek real ip uzerinden birkac tane local makinıza server bazında map to map translate yapamazsınız. 2. gerekli sey ise client'larınız tabiki. Hepsi bu. Bundan sonrası inanın cok basit.
IPNATADM ve Paremetreleri

Kullanımı :
ipnatadm -I komut [secenekler] (input NAT)
ipnatadm -O komut [secenekler] (output NAT)
ipnatadm -F (Onceden yaratılmıs tum kurallar siler. Flush.)
ipnatadm -h (yardimci konfigurasyon gorunulenir.)

Komutları:
-i Yeni bir rule eklemek.(Insert Rule)
-a Varolan bir rule eklemeler yapar (Append Rule)
-d Bir rule siler (Delete Rule)
-l Varolan koyulmus kuralları listeler. (List rules)

Secenekler:
-Y id numarası
-P Protokol tcp,udp,icmp veya hepsi
-S adres[/mask] [port ....] (Kaynak(source) tarafi icin)
-D adres[/mask] [port] (Hedef(destination) tarafi icin)
-M adres[/mask] [port] (Yeni kaynak adresi ve/veya Port)
-N adres[/mask] [port] (Yeni hedef adresi ve/veya Port)
-V Network kartının adresi. Bu Hardware adresi anlamına geliyor.
-W Network kartının ismi. Bu eth0 , eth1 , ppp0 , wan olabilir.
-X [roro|byte|conn] (Virtual Server kuralı)
-w Numara agırlıgı (dogrusu hic kullanmadım)
-t Zamanaşımı(timeout). Belirlediginiz sure icinde paket alısverisi olmazsa istemci ve sunucu arasındaki baglantı kopacaktır.
Bu paremetreyi kullanmanız performansınızı iyi yonde etkileyecektir. Bir zamanasimi belirlemenizi oneririm.
-b bidirectional kural. Boylece yeni kaynak ve hedef adresi icin rule tanımlamadan sadece -S ve -M paretmetreleriyle donusum yapılır.
-s NAT'ı atla(skip nat). Belirli paketleri donusturmeme.
-n Adres ve portların rasyonel bazda ekran cikislari.
-o Belirtilen paketler icin kernel logunu kapatır.
-v ne yaptıgınızı gorme modu(Verbose mode). BUNU HERZAMAN KULLANIN....! Ne yaptıgızı herzaman gorun...


Many to One

Bu klasik bir nat uygulamasıdır. Local agınızdaki butun makinaları masq mantıgına benzer bir sekilde real bir ip uzerinden internette dolasımını saglar. Tum makinaların NAT ile belirttiginiz real ip ile local iplere donusturulmesi saglanır.
ipnatadm –O –i –b –S 212.23.13.0/24 –M 192.168.1.0/24
veya
ipnatadm –I –i –b –D 212.23.13.0/24 –N 192.168.1.0/24

Yukaridaki iki kural 212.23.13.0 Networkundeki tum ipleri(254 ip eder) , local kullanıcılarınız icin ihtiyac duyuldugunda bos olanı kullanarak internet cıkısını saglar. Bu iki kural da birbirnin aynısıdır. Bidirectional (-b) kullanıldıgında hedef(destination) , kaynak(source) , ag(network) kurallarını ayrı ayrı belirtmenize gerek yok. Sadece Source(kaynak) ve –M paremetresini kullanmanız yeterli. Tavsiyem –b paremetresini kullanmanız olucaktır. –b kullanılmadıgı tatirde 2 kural belirtmeniz gerekir buda –M –N –S –D yapılarıdır. Bunu tek bir real ip lede gerceklestirebilirsniz. Yani sınırlı sayıda ipniz varsa tum client'larınızı tek bir real ip uzerinden cikartabilirsiniz asagidaki kuralla ;

ipnatadm -O -i -b -S 212.23.13.44/32 -M 192.168.1.0/24

Boylelikle tum clientler internette 212.23.13.44 olarak gozukeceklerdir. Burda masquerading'i tercih etmemenizin iyi tarafını bir kez daha soylemek istiyorum. Firewall'ınız isin icine girmiyor. Baskalarının firewall'dan mumkun oldugu kadar az haberdar olması gerekir. Masquerading'i biraz daha performans sagladıgı icin terchi edebilirsiniz ama inanın bu fark buyutulecek kadar degil. Zaten ilk baglantı sırasında bir performans dusuklugu hissedeceksiniz.

Network Address Port Translation (NAPT)
Paketler sadece belirlenen portlar icin donusturulur. Boylelikle bir nevi firewall korumasıda yapmis olursunuz. En basit ve en etkileyicisi de bu. Kullanmanız gerekende budur bence cunki belirli portları actıgınız icin ipchains’le port kısıtlamaları yapmak zorunda kalmazsınız. Server’ınızın ihtiyacı olan portları acmanız en saglıklı ve akıllıca bir karar olur. Kullanımı ise ;
ipnatadm –v –O –i –D 192.168.1.10/32 80 –N 212.23.23.1/32 8888
ipnatadm –v –O –i –S 212.23.23.1/32 8888 –N 192.168.1.10/32 80
veya
ipnatadm –v –O –i –D 192.168.1.10/32 80 –N 212.23.23.1/32 80
ipnatadm –v –O –i –S 212.23.23.1/32 80 –N 192.168.1.10/32 80
Komutları ile local makinanın 80. portunu real ip'nin 8888. portuna translate etmis oldugumu gosterir. Boylelikle sanki o real ip'nin 8888. portundan servis yapiyormus gibi olur sunucu. Yanıltıcı ha....? Bunu 80. porta karsılık 80. port da yapabilirsiniz.(ikinci ornek) Karar sizin ama en guzeli bu elbetteki.

Iki Network Aynı Subneti paylasiyorsa

Bunu en guzel cizecegim sekil uzerinde gosterebilirim sanırım.(cizdigim tablonun cirkinligi icin ozur)

+-------------+ +-------------+ +-------------+
| Net A | 10.1.2.0 eth0 | NAT | eth1 10.1.3.0 | Net B |
| 10.1.1.0 | ----------------------- | Router |--------------------------- | 10.1.1.0 |
+-------------+ +-------------+ +-------------+
Route Tablosu
Net A(local): 10.1.1.0 10.1.2.0 eth0 Net B(local) : 10.1.1.0
Net B : 10.1.3.0 10.1.3.0 eth1 Net A : 10.1.2.0
Sanırım boyle bir kombinasyon oluyor. Iki aynı network kullanılan iki sube diyebiliriz bunlara ve biz onların ag yapisni degistirmeden araya bir Nat router koyup(linux) isimizi hallebiliyoruz. Hemen aklıma gelmisken soyleyeyim bazıları boyle bir yapinin henuz beta anlamda kullanılmasi gerektigini soyluyorlar. Evet boyle bir agı birlestirmemiz gerekirse sonuc olarak su iki rule isimizi gorecektir.

ipnatadm -I -b -W eth0 -S 10.1.1.0/24 -M 10.1.2.0/24
ipnatadm -I -b -W eth1 -S 10.1.1.0/24 -M 10.1.3.0/24

Boyle bir yapıyı 3-4-5-6-??? kadar aynı subnet kullanan network'ler icin kullanabilecegimiz konunun uzmanları tarafından soyleniyor.
Bu konuyla ilgili henuz deneme yapmadım baskalarının yalancısı olmak istemem.IPNATADM'yi yazmıs bile olsalar. Deneyip nasıl oldugunu gordukten sonra sizi bilgilendirecegimden emin olabilirsiniz. Ornek bir 3'lu subnet verirsek

Map to Map

Bu tam bir NAT klasigidir. Belirlenmis bir Real ip(gercek) , icerdeki networkunuze ait illegal bir ip'ye birebir map edilmistir. Port sınırlaması vesaire yoktur(belirtmedikten sonra).Illegal ipnizi sanki Real bir ip kullanıyormus gibi hissedersiniz. Tam bir routing diyebilirim.. Harika..! Ama gene tekrarlıyorum. Sadece ihtiyacınız olan portları acinki hem performansta artıs gorun hemde guvenlik acısından acik vermemis olun. Yani NAPT.
ipnatadm -v -O -i -b -S 10.1.1.100/32 -M 134.102.124.222/32

kuralı ile 10.1.1.100 cikan paketler icin 134.102.124.222 ip adresini , gelen paketler icinse bu ip'yi rezerve etmesini saglıyoruz. Bidirectional kural kullanmadan soyle de yapabilirdik ;

ipnatadm -O -i -S 10.1.1.100/32 -M 134.102.124.222/32
ipnatadm -I -i -D 134.102.124.222/32 -N 10.1.1.100/32

bu iki kuralda yukardaki tekli kuralın aynı gorevini yapmaktadır. Hangisini tavsiye edersin bidirec mi kullanayım yoksa iki komut mu diye sorarsanız ikisine denedim ve uzun bir sure test ettim. Ikiside aynı. Zaten -b paremetresi ile bidirect yaptıgınızda ipnat kendi icin sizin yerinize bu iki komutu veriyor gibi farzedin. Yani ikiside aynı.


Ornek bir Yapı
Muhtemelen NAT kullanmak istiyenlerin en az 2 ethernet kartına sahip bir firewall veya NAT router(linux) makinası , en az bir local host(icerdeki makinalar) ve bir router/Internet baglantısı bulunacaktır. Bu durumda Firewall'ın ethernet kartlarından birinin real bir ip'si ve digerininde local kullanıcılar icin ayırdıgınız illegal iplerden biri olacaktır. Ve siz muhtemelen icerdeki bir makinayı real bir ip olarak gostermek isiyorsunuzdur. Boyle bir durumda yapilmasi gereken en guzel sey NAPT olucaktır ki tavsiyet ettigim sey. Bunun otesinde islerinizi biraz daha karistirmis olabilirsiniz. Ornegin bir kac, hatta sayı verelim 10 tane subnetiniz var. Ve sadece ana buronuzun lease line uzerinden internet cikisi calısyor. Ve siz diger suberinizdeki pcleri internete cikarmak hatta orda INTERNET uzerinde gorulmesini istediginiz Server'lar koymak istiyebilirsiniz. Boyle bir durum suberiniz arası hattınız hızlıysa NAT kullanmalımıyım diye dusunmenize bile gerek yoktur ki , NAT boyle bir durumda cozum olarak uretilmistir zaten.Aksi takdirde soyle buyukce bir subnet alip 5-6 parcaya bolmek zorunda kalırdınız. Hemen hatırlamısken biraz bahsedim. Eger hic bir sekilde NAT kullanmak istemiyor veya isi en temiz ve ortalıklarda sahtelik istemezseniz, Yapmanız gereken ayrı ayrı subnetler alıp bunları subelerinizle baglandıgınız router'lara assign etmek olacaktır. Boyle bir durumda NAT'tan daha karısık durumlarla karsılabilirsiniz. En buyuk probleminizde ag'larınızda kullanacagınız subnet'ler ve route ayarları olucaktır. Konuyu fazla dagıtmadan devam edersek asagıdaki bir network yapınız olabilir buyuk bir olasılıkla.

Boyle bir yapiya sahipseniz iste size cozumu... Burada ekstradan koydugum Sube1 Bolumu. Buradaki ayarları atlayıp yokmus gibi davranırsaniz baska bir ornekle karsılasirsınız. Bu ornekte iki subeyi internete baglayıp uzaktaki subeye de bir WEB Server koyduk. Boyle bir dizaynda yapilmasi gereken route ve diger ayarlar da soyle olabilir ;

FIREWALL CONFIGURATION:
route add default gw 195.182.123.225
ifconfig eth0 195.182.123.229 netmask 255.255.255.248
ifconfig eth1 10.1.1.1 netmask 255.255.255.192
route add –host 195.182.123.226 gw 10.1.1.4
route add –host 195.182.123.228 gw 10.1.1.3
route add –net 10.1.1.128 netmask 255.255.255.192 gw 10.1.1.3
arp –s 212.58.11.70 00:00:a8:c8:4v:94 pub
arp –s 212.58.11.72 00:00:a8:c8:4v:94 pub
ipnatadm –v –O –i –b –S 10.1.1.4/32 –M 195.182.123.226
ipnatadm –v –O –i –b –S 10.1.1.155/32 –M 195.182.123.228
ipchains –A forward –s 10.1.1.0 255.255.255.192 –j MASQ
ipchains –A forward –s 10.1.1.64 255.255.255.192 –j MASQ
ipchains –A forward –s 10.1.1.128 255.255.255.192 –j MASQ

Router 1 Routing Table:
ip route 0.0.0.0 0.0.0.0 10.1.1.1
ip route 10.1.1.128 255.255.255.192 10.1.1.100
Router 2 Routing Table:
ip route 0.0.0.0 0.0.0.0 10.1.1.100
Router Net Routing Table:
ip route 195.182.123.226 255.255.255.255 195.182.123.225
ip route 195.182.123.228 255.255.255.255 195.182.123.225

Netmask 255.255.255.192 (64 bit)
Network Broadcast Useable IPs
----------------------- ------------------------- -------------------------
No:1) 10.1.1.0 10.1.1.63 10.1.1.1 – 62
No:2) 10.1.1.64 10.1.1.127 10.1.1.65 – 126
No:3) 10.1.1.128 10.1.1.191 10.1.1.129 – 190
No:4) 10.1.1.192 10.1.1.255 10.1.1.193 – 254

No1 Network è Ana BuroNETWORK
No2 Network è Ana buro - Sube1 ROUTERs NETWORK
No3 Network è Sube 1 NETWORK
No4 Network è FREE NETWORK AREA
Real Ip Addresses
195.182.123.224 è Network First IP (unuseable)
195.182.123.225 è ISP’s router ip address
195.182.123.226 è FIREWALL IP ADDRESS...!!!
195.182.123.227 è Exchange Real NAT ip address
195.182.123.228 è Free ip
195.182.123.229 èhttp://www.teknoser.gen.tr/ (WEB Server) Real (NAT) IP Address
195.182.123.230 è Free IPs...!!!
195.182.123.231 è BROADCAST IP (Unuseable)
Arp Table (FIREWALL):
eth0 : 00:80:AD:71:C5:18
eth1 : 00:80:AD:74:A3:E7
Boyle bir konfigurasyonda sadece ornek teskil edebilir ama aynı yapı duzenlendiginde %99 dogrulukla calisacak bir yapıdir. Siz bunu gelistirebilir muthis projeler de yapabilirsiniz. Emin olun Linux'un yapamayacagı hic birsey yok. En azından benim, linux'te bunu yapmanın bir yolu yok dedigim birsey yok..!

CIKABILECEK PROBLEMLER
Tip 1: -W parametresi donusumun yapılacagı interface'i belirtir. Muhtemelen eth0 ve eth1 olarak iki network kartınız olacaktır. eth0 real ip eth1 ise local ip oldugunu varsayarsak siz muhtemelen kural eklerken -W eth0 olarak kullandınız ve local networkten test etmeye calisiyorsunuzdur. Unuttugunuz bir nokta sadece eth0 icin donusum gerceklesecektir. Yani aslinda icerden real ip'sine baglanamıyorsunuz ama dısardan baglanılıyordur. Ve sizde muhtemelen calismadıgını dusunuyorsunuz. ya -W parametresini kullanmayın yada -W eth1 'ide ekleyerek aynı rule'ları tekrar yazın.Ama en mantıklısı -W yi kullanamamaktır. Tavsiye etmiyorum....
Tip 2: Proxy Arp kullandıgınızdan emin olmalısınız. Bos olan gercek(real) ip yi makinanıza attach etmeniz gerekmektedir. Proxy arp ipaliases'e benzer bir sekilde davranarak o ip'yi makinanıza(firewall) assign eder. ARP kullanmak islerinizi garantiye almaktır.
Tip 3: Route ayarlarınızda eksiklikler vardır. Router'ınıza ve Nat Gateway makinanıza nat icin kullanacaginiz bos olan real(gercek) ip'leri firewall makinanıza yonlendirmelisiniz. Ornegin router ip: 195.182.123.225 firewall ip: 195.182.123.229 bos ipleriniz: 195.182.123.226 ve 228 cisco router sahibi iseniz ;
telnet 212.55.22.11
ROUTER$ en
PASSWORD
ROUTER# conf t
ROUTER [confıg] # route add 195.182.123.226 255.255.255.255 195.182.123.229
ROUTER [confıgl] # route add 195.182.123.228 255.255.255.255 195.182.123.229
ROUTER# exit
ROUTER# wr
ROUTER# reload
ReWriting Configuration....#################################
komutlarıyla router'inizin setup'larını da yapmıs olursunuz. Route kurallarır cok onemlidir. Bazen Firewall uzerindede route tanımları yapmanız gerekebilir. Bu hem performans icin hem de calisması icin gerekli olabilir. Performans konusunu test etmeniz sizin icin en saglıklısıdır ... Firewall'a boyle bir durumda ekleyebileceginiz route ayarları soyle olabilir. Eger local 1 server ip: 10.1.1.10 server2 ip:10.1.1.11 server3ip: 10.1.1.12 server4ip:10.1.1.13 olursa;

FIREWALL # route add –host 212.55.22.12 gw 10.1.1.10
FIREWALL # route add –host 212.55.22.13 gw 10.1.1.11
FIREWALL # route add –host 212.55.22.14 gw 10.1.1.12
FIREWALL # route add –host 212.55.22.15 gw 10.1.1.13
gibi bir route tablosu eklemeniz soz konusu olabilir. Bu belirttigim gibi performansınızı etkileyebilecegi gibi problem de cikartabilir veya problemlerinizi cozebilirde.
Tip4: Nat icin kullandıgınız ip adresi firewall'ın real ip adresiyle aynı sub-networkte olmalıdır.
Tip5: Bir ipnatadm kuralı koyduktan sonra calismiyorsa, deneyebileceginiz bir yontemde ARP'tır ki bunu yukardaki orneklerde gorebilirsiniz.


Logged
   
Sayfa: [1]   Yukarı git
  Yazdır  
 
Gitmek istediğiniz yer:  

|Site Map | Site Map2 | Arşiv | Wap | Wap2 | Wap Forum | XML | Rss | Google Tagget
|SiberTurk | Frmby
Reklam Vermek için by.deman@msn.com Adresine e-mail gönderiniz
For Advertising contact by.deman@msn.com

MySQL ile Güçlendirildi PHP ile Güçlendirildi Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC
Asuke MC by Fakdordes & SaSuKe
XHTML 1.0 Geçerli! CSS Geçerli!
Bu Sayfa 0.189 Saniyede 20 Sorgu ile Oluşturuldu