Sziasztok!
Kezdő vagyok linuxban, és az alábbi probléma megoldásához kérném a segítségeteket.
Adott egy céges belső hálózat, amely egy Debian routeren keresztül (eth2) kapcsolódik az Internethez, két külön kapcsolattal. (1 ADSL (ppp0) + 1 Mikrohullám (ppp1), mindkettő pppoe kapcsolat, fix IP-kkel.)
A belső hálón van egy Windows web-, fájl- és levelezőszerver (192.168.1.1), amely kívülről is elérhető: az ADSL kapcsolatról forwardolok neki minden portot (iptables DNAT). Az ADSL kapcsolat fix IP-jéhez tartozik egy myserver.company.hu domain név.
Kívülről így gond nélkül elérem a belső webszervert a myserver.company.hu domain néven keresztül.
A kérdés az, hogy hogyan tudom a belső hálózatról (szintén a myserver.company.hu domain név segítségével) elérni a belső webszervert.
A lényeg az lenne, hogy a kliensgépekről jövő kéréseket a router eth2 (home network) interface-éről át kéne küldeni a ppp0 interface-re, mert onnantól sima az út a portforwardon keresztül befele. De ez sehogy nem akar sikerülni.
Ugyanis a belső hálóról a myserver.company.hu nevet feloldva a ppp0 ip címét kapom, amit a Debian router az eth2-jére kerülve (lévén onnan nem DNAT-olok) rögtön saját ip címként értelmez, és ahelyett, hogy forwardolná a belső szervernek, a routolás után rákerül az INPUT láncra ahol –j DROP
lesz a vége.
A következő megoldásokkal kísérleteztem:
1. DNAT-olok az eth2-ről is:
Az eth2-re érkező csomagokat hiába DNAT-olom a PREROUTING láncon rögtön a webszerverem IP-jére, az, lévén a klienssel azonos hálózati szegmensen van, direktben neki fog válaszolni, nem pedig a routeren keresztül. (Tehát a klienstől a ppp0 IP-címére küldött SYN csomagra a 192.168.1.1-ről érkezik az ACK,SYN, amitől ugye nem épül fel a TCP kapcsolat...) Ez tehát nem jó
Ha pedig nem változtatom meg a destination IP-jét a csomagnak, akkor az eljut a routolásig:
2. Policy routing
Sajnos a routing policyban a „local” routing table rögtön 0-s prioritással szerepel, és mivel abban szerepel az ppp0 IP-je mint helyi IP cím, rögtön INPUT láncra kerül a csomag. Tehát hiába teszek be ezután bármilyen saját routing policy szabályt, odáig a csomag már el sem jut.
Ha pedig a local table-ból kitörlöm ezt az egy bejegyzést (ip route del to „ppp0ipcíme” table local), és beteszem külön valami későbbi prioritású szabályba, a kettő közé pedig beszúrok egy saját policy-t, amivel elküldöm a ppp0 ip címére menő csomagokat a ppp0-ra, akkor működik a mutatvány, kívülről és belülről is működik a webszerver, viszont a router saját webelérése megszűnik valami miatt... (ping sem működik többé az internet felé, csak a belső háló felé) Ezt nem értem, hogy miért, hiszen ugyanazt a szabályt, amit kitöröltem a local táblából, egy-az-egyben visszaraktam egy másik táblába, későbbi prioritással.
3. -j ROUTE
Egy lehetséges megoldás lenne a problémára, de valami miatt az ehhez szükséges ipt_rpute modul már nem támogatott a jelenlegi kernelekben:
IPTABLES –t mangle –p tcp –d ppp.0.ip.címe –j ROUTE –oif ppp0
Tehát ez ugyan baromi egyszerű megoldás lett volna, de kilőve.
4. DNS
Egy megoldást találtam azért a problémára: csináltam egy ál-DNS zónát a debian routeren, ami (csak a belső háló felé) a myserver.company.hu nevet a 192.168.1.1-re oldja fel a klienseknek. Ezzel működik minden, de elég nyakatekert megoldás, és nem a legelegánsabb...
Bocs a hosszú post-ért, remélem mindent érthetően írtam le.
Üdv!
hoope