Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Internet a sítě => Téma založeno: horada 12 Března 2009, 14:15:38
-
Dobrý den,
mám následující problém - mám notebook připojený k internetu (přes eth0 - veřejná IP adresa). Virtuální počítač (VirtualBox) s adresou 192.168.100.1/24 mám připojen k virtuálnímu rozhraní (tap0 - s adresou 192.168.100.3/24). V tom virtuálním počítači testuji určité webové stránky (po zadání adresy do prohlížeče v notebooku 192.168.100.1 vše funguje jak má - stránky se normálně zobrazí). Nyní ale potřebuji tyto stránky zpřístupnit "zvenku" (aby se na ně mohl dostat někdo jiný) - chtěl jsem to provést přesměrováním příchozího provozu v noteboku (rozhraní eth0) na port 80 (nebo jiný) na adresu 192.168.100.1:80 pomocí iptables:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.1:80Toto řešení však z neznámého důvodu nefunguje (pokud spustím webový server přímo v notebooku tak se na něj z venku normálně dostanu - a zadám li toto pravidlo tak už ne - ale nedostanu se ani na web toho virtuálního pc).
V iptables jiná pravidla nejsou a politika je na ACCEPT:
root@JMENOPC:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@JMENOPC:~# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:www to:192.168.100.1:80
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Routovací tabulka by taky snad měla být v pořádku:
root@NAZEVPC:~# route
Směrovací tabulka v jádru pro IP
Adresát Brána Maska Přízn Metrik Odkaz Užt Rozhraní
192.168.100.0 * 255.255.255.0 U 0 0 0 tap0
...
a předávání paketu (nebo jak se to jmenuje) je taky povoleno:
root@JMENOPC:~# cat /proc/sys/net/ipv4/ip_forward
1
Nemáte někdo ponětí kde dělám chybu? Mockrát díky za jakýkoliv tip.
-
Ahoj, skus to takto:
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.100.1:80
iptables -A FORWARD -p tcp -i eth0 -d 192.168.100.1 --dport 80 -j ACCEPT
-
Nefunguje :(
-
A mas ten preklad urcite nastaveny na spravnom interface? Resp. nemas nahodou este v tom virtualnom pc zapnuty dalsi firewall?
-
No k internetu jsem připojen přes eth0 takže myslím že interface je správný (konkrétně myslím že ta část příkazu po -j funguje - když to pravidlo smažu tak se z venku dostanu na webserver který běží přímo v notebooku - když ho tam zadám tak už ne - problém tedy bude až někde při tom předávání dále. V tom routeru (virtualnim pc) jsou všechny tabulky taky prázdné a politika na ACCEPT. Když jsem toto zkusil nastavit na tom virtualnim pc (jen přesměrovat z jednoho portu na druhý) tak to funguje - když to zkusím přímo ve fyzickém pc (přesměrovat třeba jen na jiný port tak ne) (v routeru je Debian).
-
Je to trochu zamotané, nerozumím struktuře vaší sítě :)
V PC máte iface eth0 - na tom je veřejná IP, ze které chcete mapovat port?
Další adaptér je tap0 s nějakou IP (proč???), které je definováno jako host interface (nemělo by to býti spíše nějaké vbox0?) ?
-
Ona ta struktura je poněkud složitější - nevím jestli ji zde mam celou popisovat - ta část která se týká toho problému je snad vysvětlena dobře.
(nevím jestli to teť víc nezamotám - ale pro vysvětlení) Celkově je to tak že onen virtuální PC slouží jako testovací "router" (to asi neni to správné slovo - spíše proxy server) se Squidem a Dansguardianem - který má dvě virtuální rozhraní: - 1. je přes nat (nastaveno ve Virtualboxu) připojeno "přímo" k internetu
- 2. jsem měl připojené do virtuální sítě s druhým virtuálním PC který tvořil testovací vnitřní síť - spouštění dvou virtuálních počítačů a práce s nimi je však na mém notebooku z důvodu rychlosti nemožná nebo alespoň komplikovaná, proto jsem vytvořil v notebooku virtuální síťové rozhraní (tap0) které jsem připojil do "virtuální vnitřní sítě" (192.168.100.0/24) abych mohl funkci Dansguardianu testovat jednoduchým nastavením proxy serveru ve svém prohlížeči v notebooku na adresu 192.168.100.1 (adresa druhého rozhraní virtuálního routeru) - se nám to zamotává co ;D. - Vše funguje k plné spokojenosti. K Dansguardianu však zároveň vytvářím webové konfigurační rozhraní a nyní bych k němu potřeboval přistupovat z internetu (=ukázat jej vedoucímu své bc práce) - abych s sebou nemusel nosit notebook nebo přenášet virtuální pc dokud to nebude nutné...
-
Hezky pěkně :)
Už je mi to trochu jasné, proč tap iface :)
Tj. port 80 je promapován na fyzickou mašinu na které jeden vbox s testovacím "routerem", který jej má promapovávat právě na ten virtuální stroj?
Možná by se mi zamlouval výpis ip route
-
Ještě jsem to zkusil malinko nakreslit (v příloze)...
výpis z ip route (v tuto chvíli jsem na domácí síti takže veřejná adresa je nahrazena síťí 192.168.1.0/24 - jinak by to mělo bý stejné):
root@JMENOPC:~# ip route
192.168.100.0/24 dev tap0 proto kernel scope link src 192.168.100.3
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2 metric 1
169.254.0.0/16 dev eth0 scope link metric 1000
default via 192.168.1.1 dev eth0 proto static
[attachment deleted by admin]
-
A neskusal si robit tcpdump na eth0 vo fyzickom PC a ethX vo virtualnom, na ktory by mal traffic dorazit? Uvidime ci to vobec prejde cez ten tap interface.
-
Díky za tip - s tcpdumpem sice neumim - ale něco jsem zkusil.
Příkaz tcpdump -i eth1 -l port 80 ve virtualu (router) vypíše při jednom požadavku toto: (zkoušeno přes nějaký anonimizer (http://anonymouse.cz) - proto tam je takova IP
12:04:12.341424 IP 77.93.216.69.1730 > router.www: S 839762306:839762306(0) win 65535 <mss 1460,nop,nop,sackOK>
12:04:15.580852 IP 77.93.216.69.1730 > router.www: S 839762306:839762306(0) win 65535 <mss 1460,nop,nop,sackOK>
12:04:21.368968 IP 77.93.216.69.1730 > router.www: S 839762306:839762306(0) win 65535 <mss 1460,nop,nop,sackOK>
Takže až do routeru se "něco" dostane - ale už se mi nepodařilo najít nic co by lezlo zpátky (příkaz tcpdump -i eth1 -l not tcp port ssh vrátí na jeden požadavek to samé a nic jiného zpátky ... takže asi bude chyba někde v tom routeru - ještě na to kouknu více a kdyžtak dám vědět ... každopádně díky za postrčení.
-
Mozes poslat este routing z toho virtualu?
-
Sem se nadtím zamyslel a ještě než jste napsal tak si myslím že jsme na správné stopě ... on to v tom virtualu bude posílat na jiné rozhraní ... (nemůžu to nyní potvrdit ale myslím si to...)
-
Tak je to tak - chyba byla samozřejmě na mé straně protože virtuální PC měl defaultní cestu přes rozhraní eth0 a ne přes eth1. Díky všem co mi poradili a dostrkali k řešení... Jsem zase o chlup chytřejší...
-
→ vyřešeno :)
-
Tak hlavne, ze to uz frci. Ono routing je niekedy "svina" :)
OT: Nevadi, ze som tikal? Mne to pripada jednoduchsia ta komunikacia potom.
-
S tykáním nemám žádný problém, jen sem asi moc slušně vychován tak s tím sám nezačínám :).