2008 Ramazan Özel Bölümü

Geri Dön   Forum Ti > Yardım ve Destek > Programlarla İlgili Bilgi Alışverişi > Linux
Üye Ol Bloglar Üye Listesi Takvim Forumları Okundu İşaretle

Linux Araçlar ve Yönetim · Dağıtımcılar · Ev ve Ofis · Geliştirme Araçları · Internet ve Network ( Internet Araçları · İletişim) · Multimedya ve Dizayn · Oyun

Cevap
 
Konu Araçları
Eski 06.06.2007   #1 (permalink)
 
staticiation  Görüntü Resmi
 
Katılma Tarihi: Şub 2006
Nereden: Bursa/es-es
Yaş: 23
Mesajlar: 1,759
Varsayılan Linux ve NAT...

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 è ..:: TEKNOSER ::.. (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.
__________________
...................................
Şuanda Foruma Bağlı   Alıntı yaparak cevapla
Cevap


Şu Anda Konuyu İnceleyen Aktif Kullanıcılar: 1 (0 üye ve 1 misafir)
 
Konu Araçları


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Neden Linux.. By_Escape Linux 2 30.04.2007 19:29
Antivirüs (*Linux*) *SENTOLL* Linux 2 25.11.2006 21:49
Linux hakkında... By_Escape Linux 0 23.06.2006 03:19
LINUX nedir By_Escape Linux 0 23.06.2006 02:57
OpenOffice.org for Linux 2.0 gamze_dmr Online Oyun Merkezi 0 05.06.2005 05:30


Şu anki forum saati: 13:03.


cnt hizmet sağlayan firma
ForumTi.com'un yapımı ve yayınlanması CNT'ye aittir.
Sitedeki içerikleri foruma ücretsiz şekilde üye olabilen ziyaretçiler oluşturur. Bu içeriklerin sorumluluğu yazana aittir.
Eğer yasak ve aykırı içerik tespit edilirse site yöneticilerine bu konular bildirilir ve kaldırılır. Site yönetimi haberdar edildiğinde sonuç alınamaz ise servis sağlayıcı CNT'ye bildiride bulunabilirsiniz.
Search Engine Friendly URLs by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258