sadece belirli bir IP aralığı için iptables port yönlendirme


3

LXC kapları kullanıyorum. Konteynırlarımın her birinin 10.0.3.0/24 tarihinde bir ip adresi var. Belirli bir bağlantı noktasındaki ana makineme gelen paketlerin bir kaba yönlendirilmesini istiyorum, bu nedenle bu kuralı kullanıyorum:

iptables -t nat -A PREROUTING -p tcp --dport 3000 -j DNAT --to-destination 10.0.3.4:3000

Bu izin verir (paketin dışında) # -> HOST: 3000 -> KONTEYNER: 3000

Harika çalışıyor. Ancak, bir konteynerin içindeyken (bu önceki kuralda kullanılanın değil) ve 3000 numaralı bağlantı noktasında başka bir ana bilgisayara (HOST2 diyelim) erişmek istediğimde, paketim konteynerime yönlendiriliyor. O yapar:

(konteynır paket içerisinde) # -> HOST2: 3000 -> HOST: 3000 -> KONTEYNER: 3000

yerine (kutu ambalaj içinde) # -> HOST2: 3000 -> HOST: 3000 -> HOST2: 3000

Yukarıdaki kuralımı değiştirmeye çalıştım

iptables -t nat -A PREROUTING -s 10.0.3.0/24 -p tcp --dport 3000 -j DNAT --to-destination 10.0.3.4:3000

Söylemek gerekirse: Eğer paket bir kaptan geliyorsa, kuralı uygulamayın, ancak bu işe yaramaz. Herhangi bir yardım çok iyi olurdu.

İşte benim iptables kurallarım:

Chain PREROUTING (policy ACCEPT 154 packets, 29925 bytes)
pkts bytes target     prot opt in     out     source               destination         
4   240 DNAT       tcp  --  *      *       10.0.3.0/24          0.0.0.0/0            tcp      dpt:3000 to:10.0.3.5:3000
3   180 DNAT       tcp  --  *      *       10.0.3.0/24          0.0.0.0/0            tcp   dpt:3001 to:10.0.3.6:3001

Chain INPUT (policy ACCEPT 126 packets, 28400 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 25 packets, 1900 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 29 packets, 2140 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   28  1525 MASQUERADE  all  --  *      *       10.0.3.0/24         !10.0.3.0/24

İşe yaramazsa, herhangi bir ana bilgisayarı 3000'i bir konteynırın içinden kıvırdığımda, konteynere yönlendirildim: 3000


Nat tablonuzun tamamını görebilir miyiz iptables -t nat -L -n -v? (Sorunuzun çıktısını düzenleyin)? Ayrıca, " bu işe yaramaz " derken neyi kastediyorsunuz ?
MadHatter


Hum Bu -sseçeneği doğru kullanmıyorum . Kuralı sadece 10.0.3.0/24 için uyguladığını söylüyor. Kural için beklediğim uygulamak nasıl söylerim?
rmonjo

Üzgünüm, bu son soruyu anlayamıyorum. -sBayrak kuralı trafiğe uyguluyor gelen IP adreslerinin (belirli bir aralık -s= --source), ve bana, ince yarıyor gibi görünüyor.
MadHatter

Benim -sbayrak ayarlanırsa 10.0.3.0/24ip adresi konteynerleri olan. Ancak bu kuralın herkese uygulanmasını istiyorum, ancak konteynerlere uygulanmamasını istiyorum. Benim -sbayrak gibi bir şey olmalı-s everything except 10.0.3.0/24
rmonjo

Yanıtlar:


7

-sBayraklar sadece belirtilen ana bilgisayar veya ağın aynı olduğundan trafik seçer. Bunun dışındaki tüm trafiği eşleştirmek istiyorsanız ,

! -s 10.0.3.0/24

ve !kabuğundan alıntılarla veya ters eğik çizgiyle kaçmayı unutmayın .

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.