Yerel ağdan iletilen Genel IP adresine geridöngü - Hairpin NAT


45

Bu, Hairpin NAT (Loopback NAT) ile ilgili Kanonik bir Soru .

Bu sorunun genel formu şudur:

Müşterileri olan bir ağımız, bir sunucumuz ve bir NAT Router'ımız var. Yönlendirici üzerinde sunucuya bağlantı noktası iletme olduğundan, hizmetlerinden bazıları harici olarak kullanılabilir durumdadır. Harici IP’yi gösteren DNS’miz var. Yerel ağ istemcileri bağlanamıyor, ancak harici iş.

  • Bu neden başarısız?
  • Birleşik bir adlandırma düzenini nasıl oluşturabilirim (hem yerel hem de harici olarak çalışan DNS adları)?

Bu soru, diğer birçok sorudan birleştirilen cevapları almıştır. Başlangıçta FreeBSD, D-Link, Microtik ve diğer ekipmanlara atıfta bulundular. Ancak hepsi aynı sorunu çözmeye çalışıyor.


1
Amacınız internet erişimini test etmek ise, yönlendiricinin rotalarını ve / veya DNS ayarlarını en iyi şekilde karıştırmanın bir anlamı yoktur, içeriden yönlendiricinin iç kısmının çalıştığını doğrularsınız. Dışarıda bir yerde bir proxy sunucusu kullanmanızı öneririm.

Yanıtlar:


16

Aradığın şeye "firkete NAT" denir. Harici arabirime atanan bir IP adresi için dahili arabirimden gelen istekler, harici taraftaki arabirimden geliyormuş gibi yapılmalıdır.

Herhangi bir FreeBSD'ye aşina olduğumdan emin değilim, ancak OpenBSD için "pf" el kitabını ( http://www.openbsd.org/faq/pf/rdr.html ) önerilen split-ufuk DNS’in DMZ ağı veya TCP proxy sunucusu, "pf" nin saç tokası NAT'ı desteklemediğine inanmamı sağlar.

Ufukta DNS yolunu izlemeye ve URL'lerin dahili olarak IP adreslerini kullanmamasına, bunun yerine isimleri kullanmaya bakardım.


Aynı sorunu çözmeye çalışırken bu sorunla karşılaştım ve FreeBSD'nin kutudan çıkan saç tokasını desteklemediği doğru olsa da, iç -> dış -> iç trafiği yönlendirmenin ve NAT yapmanın yolları var.
crimson-egret

Örneğin: no nat on $int_if proto tcp from $int_if to $int_net , nat on $int_if proto tcp from $int_net to $hairpin_int port $hairpin_ports -> $int_if, rdr on $int_if proto tcp from $int_net to $ext_if port $hairpin_ports -> $hairpin_int
kırmızı-balıkçıl

48

Bu, saç tokası NAT'ta kanonik bir soru olarak ortaya çıktığından, şu anda kabul edilmiş olandan daha geçerli olan bir cevabı olması gerektiğini düşündüm, (mükemmel olsa da) özellikle FreeBSD ile ilgili.

Bu soru, ağ geçidinde hedef NAT (DNAT) tanıtılarak dış kullanıcılara sunulan RFC1918 adresli IPv4 ağlarındaki sunucular tarafından sağlanan hizmetler için geçerlidir. Dahili kullanıcılar daha sonra bu servislere harici adreslerden erişmeye çalışırlar. Paketleri istemciden, hedef adresini yeniden yazan ve derhal iç ağa geri enjekte eden ağ geçidi cihazına gider. Paket , saç tokası dönüşüne benzetilerek, saç tokası NAT ismine yol açan ağ geçidinde meydana gelen bu keskin dönüşlüdür .

Sorun, ağ geçidi cihazı hedef adresi yeniden yazdığında, kaynak adresi değilken ortaya çıkar. Sunucu daha sonra dahili bir varış adresi (kendi) ve bir iç kaynak adresi (müşterinin) olan bir paket alır; doğrudan böyle bir adrese cevap verebileceğini bilir, öyle yapar. Bu cevap doğrudan olduğu için, ağ geçidi üzerinden gitmez, bu nedenle, geri dönüş paketinin kaynak adresini yeniden yazarak gelen hedef NAT'ın ilk paket üzerindeki etkisini dengeleme şansı olmaz.

Böylece müşteri harici bir IP adresine paket gönderir , ancak dahili bir IP adresinden cevap alır . İki paketin aynı konuşmanın bir parçası olduğu hakkında hiçbir fikri yok, bu yüzden konuşma gerçekleşmiyor.

Çözüm, bu tür bir hedef NAT gerektiren ve iç ağdan ağ geçidine erişen paketler için, gelen paket üzerinde genellikle kaynak ağ geçidinin adresi olacak şekilde yeniden yazarak kaynak NAT (SNAT) gerçekleştirmesidir. Sunucu daha sonra istemcinin ağ geçidi kendisi olduğunu düşünür ve doğrudan ona yanıt verir. Bu da ağ geçidine hem DNAT hem de SNAT'ın gelen paket üzerindeki etkilerini dengeleme şansını verir, hem geri dönüş paketindeki hem kaynak hem de hedef adresleri yeniden yazarak.

Müşteri harici bir sunucuyla konuştuğunu düşünüyor. Sunucu, ağ geçidi cihazıyla konuştuğunu düşünüyor. Bütün partiler mutlu. Bir şema bu noktada yardımcı olabilir:

görüntü tanımını buraya girin

Bazı tüketici ağ geçidi cihazları, ikinci NAT basamağının gerekli olduğu paketleri tanıyacak kadar parlaktır ve bunlar muhtemelen bir saç tokası NAT senaryosunda kullanıma hazırdır. Diğerleri değildir ve öyle olmaz ve işe yaramaları pek mümkün değildir. Sunucu Arıza için hangi tüketici sınıf cihazların konu dışı olduğu tartışması.

Düzgün ağ oluşturma cihazlarına genel olarak çalışması söylenebilir, ancak - çünkü yöneticilerini ikinci kez tahmin etme işinde olmadıkları için - bunu söylemeleri gerekir. Linux iptablesbu şekilde DNAT'ı kullanır :

iptables -t nat -A PREROUTING  -p tcp --dport 80 -j DNAT --to-destination 192.168.3.11

Bu, HTTP portu için basit bir DNAT'ı açık olan bir dahili sunucuya aktaracaktır 192.168.3.11. Ancak, saç tokası NAT'ı etkinleştirmek için birinin aşağıdaki gibi bir kurala ihtiyacı vardır:

iptables -t nat -A POSTROUTING -d 192.168.3.11 -p tcp --dport 80 -j MASQUERADE

Düzgün çalışması için bu kuralların ilgili zincirlerde doğru yerde filterolması gerektiğine dikkat edin ve zincirdeki ayarlara bağlı olarak , NATAL trafiğinin akmasına izin vermek için ek kurallar gerekebilir. Tüm bu tartışmalar bu cevabın kapsamı dışındadır.

Ancak diğerlerinin de dediği gibi, düzgün şekilde etkinleşen saç tokası NAT, sorunu çözmenin en iyi yolu değil. En iyisi, kuruluşunuzun, dahili veya harici kullanıcılar için farklı fiziksel sunuculara sahip olarak veya DNS sunucusunu göre farklı tepki gösterecek şekilde yapılandırarak, istekte bulunan istemcinin nerede olduğuna bağlı olarak orijinal arama için farklı yanıtlar sunan split ufuk DNS'dir . talep eden müşterinin adresi.


Ağ geçidi ve sunucu arasında değiştirilen paketlerdeki adresleri biraz merak ediyorum. Sunucu, yönlendiricinin ortak IP adresini istemci IP olarak görse daha tutarlı olmaz mıydı? Teknik olarak her ikisi de çalışabilir, ancak diğer sunucuların müşterileri nasıl gördüğüyle tutarlı kalmak için, genel IP'yi kullanması gerekir.
kasperd

1
Son dava olan "uygun firkete NAT" ı kastediyorsunuzdur. Önemli olan, gelen adres üzerindeki kaynak adresini yönlendiriciye geri dönecek şekilde yeniden yazmaktır; bu, daha sonra hem DNAT hem de SNAT'ı tersine çevirebilir ve böylece problemi önleyebilir. Yönlendiricinin bunu yapmak için kullandığı birçok adresden hangisi daha zevkli bir nokta, ve eğer bunu yapıyorsanız iptables, kesinlikle tercih ederseniz yapılandırabileceğiniz bir şey.
MadHatter

1
Benim de dahil olduğum birçok yönetici split-horizon DNS'i hastalıktan daha kötü bir tedavi olarak görüyor. Ek bir SNAT varsa, bir hastalık olarak adlandırılabilir. Bölünmüş görüntülü bir DNS, yönlendiricilerin hayatlarını kolaylaştırırken, insanları şaşırtıyor. Bu konu ayrı bir ServerFault sorusu / cevabı ile daha iyi ele alınacaktır.
kubanczyk

Cevabım çok firkete NAT hakkında. Kanonik bir "bölünmüş ufukta DNS" sorusu açmanın artılarını ve eksilerini görebiliyorum: artılar, SHDNS'in kullanımlarına ve sorunlarına adanmış bir soruyu da içeriyor, ancak eksileri, bu sorunun halihazırda ilgili birçok sorusu olduğu yönünde. onunla birleşti, bu da sizin sorunuza da olabilir. Ben olsaydım, konuyu meta üzerinden gündeme getirir ve oy birliği arardım. Eğer böyle bir soru yazılırsa, cevabınızı okumaya can atıyorum!
MadHatter

@MadHatter iptables komutunu nereye yazmalıyım? istemci veya ağ geçidi veya sunucuda?
Rocky Balboa

9

Buradaki sorun, yönlendiricinizin dahili müşterinizin adresini NAT yapmamasıdır. Bu nedenle, TCP anlaşması başarısız olur.

IP'leri takip edelim.

  • Müşteri: 192.168.1.3
  • Sunucu: 192.168.1.2
  • İç yönlendirici: 192.168.1
  • Dış yönlendirici: 123.123.123.1

İşte neler oluyor:

  1. Müşteri (192.168.1.3) harici IP'nize TCP-SYN gönderir, Port 80 (123.123.123.1:80)
  2. Yönlendirici, bağlantı noktası iletme kuralını görür ve paketi (IP) (192.168.1.3) değiştirmeden paketi sunucuya iletir (192.168.1.2:80).
  3. İstemci harici IP’den bir SYN-ACK bekler
  4. Sunucu yanıtını doğrudan müşteriye geri gönderir, çünkü aynı alt ağdadır. NAT'ı tersine çevirecek paketi yönlendiriciye göndermez.
  5. Müşteri, 123.123.123.1 yerine 192.168.1.2'den bir SYN-ACK aldı. Ve onu atar.
  6. Müşteri hala 123.123.123.1'den bir SYN-ACK bekliyor ve zaman aşımına uğradı.

4

Neden her yerde hardkodlama IP adresleri yerine split horizon dns'i kullanmıyorsunuz? Dış etki alanınızı dış tarafta 217.xxx'e, sonra iç kısımda 192.xxx işaretine sahip olacaktınız.


1
Bir dakikanız varsa, Split-Horizon DNS'in ne olduğu, nasıl çalıştığı ve dezavantajları hakkında genişleyebilir misiniz? Bu şimdi kanonik bir sorudur ve daha eksiksiz bir cevap almanız iyi olur.
Chris S,

2

Orijinal bir D-Link yönlendiricisi ise (örneğin, Rev. D / Virgin Media'dan Firmware Sürüm 1.00VG değil), bunun üzerinde çalışmak için ayarları yapmalısınız. (Ancak, önceki posterin DD-WRT'nin başka nedenlerle önerisi ile aynı fikirdeyim!)

  1. Yönelticinin web arayüzüne giriş yapın
  2. En üstteki Gelişmiş sekmesini tıklayın.
  3. Soldaki Güvenlik Duvarı Ayarları sekmesini tıklayın.
  4. Click Endpoint Bağımsız altındaki radyo düğmesini TCP Endpoint Filtreleme Aşağıdaki ekran görüntüsünde görüldüğü gibi, (ya bakınız yönlendirici emülatörü D-Link web sitesinden)
  5. Değişiklikleri Kaydet; sen bittin

D-Link yönlendirici web UI ekran görüntüsü

Bu ekran görüntüsü Rev. C modelindendir; seninki biraz farklı olabilir.


2

Son zamanlarda benzer bir soruyu cevapladı: Cisco static NAT, LAN tarafında çalışmıyor ve bunun Kanonik bir Soru olduğunu fark etti. Bu yüzden burada çözümü özetlememe izin verin.

Her şeyden önce: NAT'ı unutun (eğer yapabilirseniz) - soru NAT'ı yapılandırmakla ilgili değil. NAT’ın arkasına yerleştirilmiş bir sunucuya hem İnternet’ten hem de LAN’dan erişim hakkında. İki DNS bölgesi kullanmak, uygulanabilir bir alternatif, ancak her zaman çözüm değil. Ancak çözüm var ve inanılmaz derecede basit (muhtemelen mükemmel olmasa da):

(1) sunucuda: genel IP adresini, 255.255.255.255 maskeli sunucunun ağ arayüzünde ikincil bir IP adresi olarak ekleyin (web servisi veya sunucuda ne istersen bu IP adresini de dinlemesi gerekir); tüm modern işletim sistemleri bunu yapmanıza izin verecektir (veya birincil arabirime ikincil bir IP eklemek yerine, kendisine atanmış genel IP adresi ile geridönüşümlü bir arabirim kullanılabilir).

(2) LAN ana bilgisayarlarında: genel IP adresi için bir ana bilgisayar yolu ekleyin; örneğin, Windows ana bilgisayarları aşağıdaki komutu kullanır: rota -p ekle 203.0.113.130 mask 255.255.255.255 192.168.1.11 (DHCP'yi de kullanabilirsiniz " statik rota "rotayı dağıtma seçeneği". Veya, (a) istemciler ile Internet'e bakan yönlendirici arasında (a) L3 anahtarı / yönlendiricisi varsa, bu (bu) ara anahtar (lar) / yönlendirici (ler) üzerinde bu ana makine yolunu yapılandırın. müşterilere.

TCP üç yollu el sıkışma ile ilgili olanlar için: önerilen yapılandırmada Tamam çalışacaktır.

Lütfen geri bildirimde bulunun (en azından oy verin).


Gereksinim # 2, bunun BYOD ağlarında iyi çalışmadığını gösterir ...
Michael

1

Sorularıma sadece benzer problemleri olanların ufkunu genişletmek için cevap vereceğim.

ISS ile iletişime geçtim ve onlardan sorunlarımı çözmeyi denemelerini istedim. Bana sundukları, sadece sunucu için başka bir genel IP adresi, Şimdi FreeBSD'nin WAN tarafında yerel trafik var ve yerel trafiğin daha hızlı olması için Server'ın genel IP'sine özel borular oluşturduk.


2
Bu çözüm, bir Çevre ağı veya DMZ uygular ve Hairpin NAT ve Split-Horizon DNS için iyi bir alternatiftir.
Chris S,

1

Teknik açıdan, bu sorunun en iyi çözümü ağınızdaki IPv6'yı etkinleştirmektir. IPv6 etkinleştirildiğinde, etki alanınız için bir AAAA kaydı oluşturmanız gerekir. Dış IPv4 mevcut A kaydı işaret tutun yönlendirici . Sunucunun IPv6 adresini gösteren bir AAAA kaydı oluşturun .

IPv6, NAT'ı engellemek için yeterli adrese sahiptir, bu nedenle IPv6 için saç tokasına NAT gerekmez. IPv6'yı etkinleştirdikten ve AAAA kayıtları oluşturduktan sonra, RFC 8305'i destekleyen herhangi bir istemci IPv4'ten önce IPv6'yı dener. Bu, istemciler kullanmayacağından IPv4 için de NATURAL NAT NAT'a ihtiyacınız olmadığı anlamına gelir.

Dünyanın çoğu IPv6'yı da etkinleştirene kadar giden bağlantılar ve gelen bağlantılar için bağlantı noktası iletme için mevcut IPv4 NAT'ınıza hala ihtiyacınız olacak.

Aynı zamanda daha hızlı.

IPv6 kullanımı size saç tokası NAT'tan daha iyi bir performans sunar.

Firkete NAT ile istemciniz bir paketi yönlendiriciye bir anahtar yoluyla gönderir, ardından yönlendirici iki çeviri turu gerçekleştirir ve sonunda paketi anahtardan sunucuya gönderir. Sunucudan istemciye giden paketler bu yolun tamamını tersine çevirir.

IPv6 ile NAT'dan kaçınırsınız, bunun yerine paketler doğrudan istemci ve sunucu arasındaki anahtar ile gönderilir. Bu, bir gidiş dönüş yolunda, anahtardan geçen geçiş sayısını 4'ten 2'ye düşürdüğünüz ve yönlendiriciden 2 geçişi ve yönlendiricinin gerçekleştireceği 4 çeviriyi önleyeceğiniz anlamına gelir. Bu daha iyi performans anlamına gelir.

Yönlendirici ile aynı kutuya yerleşik bir anahtar kullanıyor olsanız bile bu durum geçerlidir.

Peki ya ISS'de IPv6 yoksa?

IPv6'yı desteklemeyen bir ISS kullanıyorsanız, o ağda sunucu barındırıp barındırmamanız gerektiğini sorgulayacağım. Bunlar, ISS şu anda IPv6'yı desteklemiyorsa ne yapmam gerektiği konusunda önerilerim.

İlk önce ISS'ye IPv6'ya ihtiyacınız olduğunu söyleyin . Belki de onlara IPv6 protokolünün 20 yıldan beri bulunduğunu hatırlatır, bu yüzden onu desteklemede gecikmişlerdir. ISS'nin sizi ciddiye alması için bu yeterli değilse, diğer ISS'leri aramaya başlayın.

IPv6 destekli bir ISS bulursanız, bir geçiş dönemi boyunca her iki ISS ile de çalıştırabilirsiniz. Yeni ISS'ye bağlı yönlendiricide, LAN tarafındaki IPv4'ü devre dışı bırakabilir ve ardından her iki yönlendiricinin LAN tarafını aynı anahtara bağlayabilirsiniz. IPv4 ve IPv6 iki bağımsız protokoldür ve bu bağlantılar farklı yönlendiricilerden geçerse hiç sorun olmaz. Yan fayda olarak, bağlantılardan birinin kesintisi varsa size bir miktar fazlalık verir.

IPv6 destekli bir ISS bulamazsanız, sunucunuzu bir barındırma tesisine taşımayı düşünmelisiniz. Bir barındırma tesisinde bulunan bir sunucuyla coğrafi konuma daha az bağımlısınız ve bu nedenle sağlayıcılar arasında ihtiyaçlarınızı karşılayacak bir tane olmasını sağlamak için daha fazla rekabet var.

Sunucuyu bir barındırma tesisine taşımak, müşterilerinize IPv6 vermeyecek, ancak sunucuyu taşımak, artık erişmek için NAT tokasına ihtiyacınız olmadığı anlamına gelir.

Ne yapmamalısın

IPv6 trafiğini yönlendirmek için bir yolunuz yoksa, IPv6'yı açmayın ve AAAA kayıtları oluşturmayın. ISS'niz IPv6'yı desteklemiyorsa, ancak yine de LAN'ınızda IPv6'yı etkinleştirmeyi seçtiyseniz (belki RFC 4193 adreslerini kullanarak) ve AAAA kayıtları oluşturuyorsanız, LAN'ınızdaki LAN'ınızdaki sunucuya ulaşan istemciler için işe yarar. Ancak, yerel ağınızla dış dünya arasındaki iletişim ilk önce IPv6'yı (işe yaramaz) deneyecek ve en azından biraz yavaş veya en kötü olan IPv4'e geri dönmeye güveniyor olacaksınız.


0

Bu soruyu da sorduğumdan beri (bkz. Güvenlik duvarının arkasından dışarıdaki IP'sini kullanarak NAT'lı bir ağ servisine nasıl erişebilirim? ) Ve buraya yönlendirildi ancak buradaki cevaplar bir çözüm sunmadı (genel açıklamaların aksine ) iptablesHerkese birkaç saatlik bir denemeden tasarruf etmek için Linux ( özel) çözümü sağla . Bu dosya iptables-restoreformatlıdır ve doğrudan iptables içine okunabilir (elbette IP adreslerini düzenledikten sonra). Bu bir web sunucusu (80 portu) ve sadece IPv4 içindir - IPv6 ve SSL kuralları (443 portu) benzerdir.


# Port forwarding for VM / Container access with „hairpin NAT“.
*nat
:PREROUTING ACCEPT [3:205]
:INPUT ACCEPT [59:670]
:OUTPUT ACCEPT [16:172]
:POSTROUTING ACCEPT [20:257]

# This was simple port forwarding - access works from outside but not from inside
#-A PREROUTING  -4 -p tcp -i eth0 --dport 80 -j DNAT --to web.local:80

# This is real hairpin NAT which allows „web.local“ to access itself via the VM hosts external IP.
# First we need to masquerade any traffic going out the external interface:
-A POSTROUTING -o eth0 -j MASQUERADE

# Then we need to reroute incoming traffic on the public IP to the local IP:
-A PREROUTING  -4 -p tcp -d web.public.com --dport  80 -j DNAT --to web.local:80

# And finally we need to tell the router that the source IP of any traffic
# coming from the LAN must be source-rewritten when going to the web server:
-A POSTROUTING -4 -p tcp -s lan.local/24 -d web.local --dport  80 -j SNAT --to-source web.public.com:80

COMMIT

Değiştir lan.local, web.localve web.public.comyerel ağ ile (örn. 10.0.x.0 / 24), web sunucunuzun yerel IP (örneğin 10.0.1.2) ve yönlendiricinizin genel IP (örn. 4.5.6.7). -4Sadece aynı dosyada IPv6 ve IPv4 kurallar (örneğin çizgiler tarafından göz ardı izin vermektir ip6tables). Ayrıca, örneğin, liman bildirimleri eklediğinizde [parantez] IPv6 adreslerini koymak unutmayın [fe0a:bd52::2]:80.

Bunlar, bu sorudaki açıklamaları gerçekten uygulamaya çalışırken saçımı çekmeme neden olan şeylerdi . Umarım hiçbir şey bırakmamışımdır.


Wan arayüzündeki MASQUERADE genellikle faydalıdır, ancak "firkete NAT" sorusuyla ilgili değildir. Kanonik cevap, lan arabiriminde MASQUERADE'i önerir ve siz bunun yerine bir SNAT ( SNAT, MASQUERADE ile yaklaşık olarak aynı ) önerir . Biraz garip kaynak IP: port geçersiz kılmaya zorlarsınız.
kubanczyk

0

Buraya bir cevap ekleyeceğim çünkü buradaki yorumlar özel sorunumu çözmedi. Bunun sebebi iğrenç bir linux çekirdek böceğine çarptığımdan şüpheleniyorum. Kurulum:

internet <--> modem 1.1.1.1/30 <--> switch <---> LAN 10.1.1.0/24
                                      ^
        +----------------------+      |
        |              /--eth0 o <----/
        |              |       |           
        | 10.1.1.1/24 br0      |           v (antenna)
        |  1.1.1.2/30  |       |           |
        |              \-wlan0 o ----------/
        +----------------------+ 

Karmaşık görünüme rağmen, diğer yorumlardaki durumlardaki tek önemli değişiklik yazılım köprüsünün eklenmesidir, br0. Ağ geçidi kutusunun da LAN için kablosuz bir erişim noktası olması nedeniyle orada.

Ağ geçidi kutumuz hala LAN üzerindeki makineler için NAT görevlerini yerine getiriyor. Sadece 1 ethernet portuna sahip olduğundan, saç tokası NAT yapmak zorunda kalır. Buradaki diğer yorumlarda verilen iptables kuralları ile çalışması gerektiğinden şüpheliyim, ancak Linux çekirdeğinde 4.9 en azından öyle değil. 4.9 altında bizim ağ geçidi kutumuz internete erişebiliyorsa, LAN üzerindeki makineler NAT üzerinden erişmeye çalışıyor.

tcpdumpgelen paketlere eth0 isabetlerini gösterir, ancak br0'dan yapmazlar. Bu komutu çalıştırmak şunları düzeltir:

ebtables -t brouter -A BROUTING -d 01:00:00:00:00:00/01:00:00:00:00:00 -j ACCEPT
ebtables -t brouter -A BROUTING -p IPv4 --ip-dst 10.1.1.0/24 -j ACCEPT
ebtables -t brouter -A BROUTING -p IPv4 --ip-src 10.1.1.0/24 -j ACCEPT
ebtables -t brouter -A BROUTING -p IPv4 -j DROP

Bu komut çalıştırılmadan önce gelen paketler çekirdeğin varsayılan davranışına göre işlenir, bu da onları köprüye vermek, çekirdeğin yönlendirme modüllerini iletmektir. Komut, LAN'dan olmayan paketleri köprüyü atlamaya ve doğrudan yönlendirmeye gitmeye zorlar; bu, köprünün onları düşürme şansı olmadığı anlamına gelir. Yayın ve çok noktaya yayın adresleri köprülenmelidir, aksi takdirde DHCP ve mDNS gibi şeyler çalışmaz. IPv6 kullanıyorsanız, bunun için de kurallar eklemelisiniz.

Bunu kullanarak sorunu çözmek için istekli olabilirsiniz:

brctl hairpin br0 eth0 on
brctl hairpin br0 wlan0 on

Kesinlikle çok çekiciydim - bu benim ilk denememdi. Yaptığım anda LAN üzerindeki makineler internete girmeye başladı, bu yüzden bir süre çalışıyor. Ardından aşağıdakiler gerçekleşti (ve deneyi tekrarlamak istemedim):

  1. LAN üzerinden ağ geçidine ping süreleri yaklaşık 10 saniye aralıklarla ikiye katlandı, ağ geçidi kutusu LAN'dan erişilinceye kadar 0.1ms, 0.2ms, 0.4ms, 0.8ms, 2ms vb. Paket fırtına gibi kokuyordu, ancak STP her yere açıldı.
  2. Tüm kablosuz erişim noktaları öldükten kısa bir süre sonra.
  3. Kablosuz ile olanları teşhis etmeye çalışırken, tüm IP telefonlar yeniden başlatıldı.
  4. Bundan kısa bir süre sonra, kablolu makineler LAN ile olan tüm temasını kaybetti.

Çıkmanın tek yolu binadaki her makineyi yeniden başlatmaktı. Bunun tek istisnası, yeniden başlatılamayan donanım anahtarlarıydı. Güç döngüsü olması gerekiyordu.


0

Bir kanonik meselesi gibi. Bir Sonicwall yönlendiriciniz varsa cevaplayacağım.

Bilinmesi gereken ifade NAT geridöngü politikasıdır.

Bu belge, bir SonicWall LAN üzerindeki bir ana bilgisayarın, sunucunun genel IP adresini FQDN'ye kullanarak SonicWall LAN üzerindeki bir sunucuya nasıl erişebileceğini açıklar. Birincil LAN Alt Ağının 10.100.0.0 / 24 ve Birincil WAN IP'sinin 3.3.2.1 olduğu bir NSA 4500 (SonicOS Enhanced) ağı hayal edin. Müşterileriniz için bir Web siteniz olduğunu ve ana bilgisayar adının diyelim. Yabancılar web sitesine girebilmek için gerekli politikaları ve kuralları zaten yazdınız, ancak gerçekten de özel bir sunucuda çalışıyor 10.100.0.2. Şimdi, özel tarafında dizüstü bilgisayar kullanan ve 10.100.0.200 IP olan bir kişi olduğunuzu hayal edin. Sunucuya açık adını kullanarak ulaşmak istiyorsunuz, çünkü dizüstü bilgisayarınız yolda iken de aynı şeyi yapıyorsunuz. Özel tarafta oturuyorsanız ve http://www.example.com isteyin>, geridönüş, sunucu gerçekten yanında yerel bir IP adresinde olsa bile, çalışmasını mümkün kılan şeydir.

Bu işlevselliğe izin vermek için, NAT yansıması veya saç tokası olarak da bilinen bir NAT geridöngü politikası oluşturmanız gerekir.

WAN Arabiriminin IP Adresini Kullanarak Geri Döngü Politikası

Login to the SonicWall Management GUI.
Navigate to Manage | Rules | NAT Policies submenu.
Click on the Add button.
Create the following NAT Policy.
Original Source: LAN Subnets (or Firewalled Subnets if you want hosts in other zones to be included)
Translated Source: WAN Interface IP
Original Destination: WAN Interface IP
Translated Destination: (LAN server object)
Original Service: Any
Translated Service: Original
Inbound Interface: Any
Outbound Interface: Any

Sonicwall, iletişim kurmaya çalıştığınız harici servisi tanıyacaktır ve hedef adresini sunucunun dahili adresine uyacak şekilde yeniden yazacaktır, böylece bilgisayara şeffaf olacaktır.


-2

PF kullanarak FreeBSD'de şu şekilde kolaydır (pf.conf dosyanızda):

extif = "tun0"
intif = "em0"
{other rules}...
nat on $intif from any to 192.168.20.8 port 80 -> ($extif)

192.168.20.8 iç web sunucusu olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.