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
-s
seç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?
-s
Bayrak kuralı trafiğe uyguluyor gelen IP adreslerinin (belirli bir aralık -s
= --source
), ve bana, ince yarıyor gibi görünüyor.
-s
bayrak ayarlanırsa 10.0.3.0/24
ip adresi konteynerleri olan. Ancak bu kuralın herkese uygulanmasını istiyorum, ancak konteynerlere uygulanmamasını istiyorum. Benim -s
bayrak gibi bir şey olmalı-s everything except 10.0.3.0/24
iptables -t nat -L -n -v
? (Sorunuzun çıktısını düzenleyin)? Ayrıca, " bu işe yaramaz " derken neyi kastediyorsunuz ?