Dostęp do serwisu za NAT-em z sieci lokalnej
Marek Guevara Braun
marek.guevara w atm.com.pl
Śro, 8 Lis 2006, 09:10:47 CET
Piotr Pawełek wrote:
> Sytuacja wygląda tak:
>
> 10.1.1.x/24 --|
> 10.1.1.50 --|
> - 10.1.1.1 eth0 - (router)
> |
> ppp0 (Dyn.IP) - internet
> xxx.no-ip.org
Zwróć uwagę, że jeśli będziesz przekierowywał ruch z LANu skierowany na
xxx.no-ip.org:80 na 10.1.1.50 (reguła DNAT) to maszyna ta dostanie
pakiet z adresem źródłowym w tym samym segmencie sieciowym - czyli ruch
powrotny nie pójdzie via router tylko bezpośrednio. Czyli wymieniona
niżej reguła SNAT nie będzie miała okazji zadziałać, a komputer z sieci
LAN dostanie pakiet powrotny z adresu 10.1.1.50.
W takim wypadku możesz:
- tak jak było sugerowane - użyć odpowiedniego wpisu DNS (dla LANu
xxx... byłby 10.1.1.50, dla zewnątrz byłby to adres na ppp)
- możesz maskować (reguła SNAT) ruch od stacji LAN adresem źródłowym
routera (ale cały ruch z LAN będzie przechodził przez router
i stracisz wiedzę kto się odwołuje do serwera z LANu)
- wrzucić serwer www do innego segmentu sieciowego np. 10.1.2.50/24
i puścić routing między sieciami przez router (ruch będzie szedł
przez router, ale nie będzie maskowany, z drugiej strony mogą być
dziwne problemy jak adresy z obydwu segmentów znajdą się w tablicy
ARP i maszyny będą jednak próbowały dogadać się bezpośrednio).
... itd.
> # iptables -t nat -A POSTROUTING -o eth0 -s 10.1.1.0/24 \
> -d 1.2.3.4 -j SNAT --to 10.1.1.1:80
> ^^^^^^^
> mój problem
>
> Jakoś nie mogę wykombinować jak to obejść.
> iptablesy chcą tam IP, a ja mam tylko nazwę domenową.
SNAT (source NAT) zmienia adres źródłowy - jeśli ta reguła miała
dotyczyć ruchu powracającego to adresem docelowym (-d) powinna być sieć
LAN a źródłowym (-s) adres komputera www - 10.1.1.50, natomiast po --to
powinieneś dać swój zewnętrzny adres (bo na ten adres przyszło
zapytanie) //jak wziąć ten adres było chyba w innym mailu//
jeśli natomiast ta reguła miała maskować ruch z LAN w kierunku serwera
WWW to po pierwsze możesz olać -d, a po drugie nie specyfikować portu
(bo wtedy cały ruch z LANu będzie widziany przez serwer WWW jako
pochodzący z portu 80 routera)
> Wiem, że można by cronem co jakiś czas badać aktualne IP
> i zapodać go do regułki, ale to jakoś mało naturalne.
Pewnie lepiej wstawić to do skryptu nawiązującego połączenie.
Pozdrawiam,
Marek
PS. Oczywiście mogłem czegoś nie zrozumieć z opisu sytuacji :-)
Więcej informacji o liście dyskusyjnej pld-users-pl