IP forwarding

Fórumok

IP forwarding

Hozzászólások

a következőt szeretném megoldani:
van egy linuxos átjáróm, és több windowsos kliens. internet megosztás működik, tehát a wines kliensekről elérem a webet frankón. de ezen felül kéne egy olyan lehetőség is, hogy a linuxos gép szolgáltatásaként jelenjen meg néhány, a windowsos klienseken futó szolgáltatás.
pl. windowsos gépen fut egy webszerver 80-as porton, és azt szeretném, hogy ez a szerveren elérhető legyen a 8001-es porton

ez megoldható? ha igen, akkor hogyan? iptables-el próbálkoztam, de nem igazán akar sikerülni, nem értek hozzá nagyon... az alábbi parancsig jutottam, sajnos nem megy:

[code:1:ebaa15d820]iptables -A FORWARD -p tcp --sport 8001 --dport 80 -d 10.0.0.2 -j ACCEPT[/code:1:ebaa15d820]

(/proc/sys/net/ipv4/ip_forward tartalma 1)

[code:1:056fb1d76a]iptables -A FORWARD -p tcp --sport 8001 --dport 80 -d 10.0.0.2 -j ACCEPT[/code:1:056fb1d76a]

Ez keves, mert a kulso gep nem a 10.0.0.2-es IP-re kuldi a kerest!

[code:1:056fb1d76a]
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2 [/code:1:056fb1d76a]

Ez kell neked!

sajnos így sem akar menni...

[code:1:f05d184d53]devel:~# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2 -v
DNAT tcp opt -- in * out * 0.0.0.0/0 -> 0.0.0.0/0 tcp dpt:80 to:10.0.0.2
devel:~# iptables -L PREROUTING
iptables: Table does not exist (do you need to insmod?)[/code:1:f05d184d53]

hello!
en igy szoktam:
[code:1:3a0afa1f8f]
EZ_A_PORT_LACCIK_KIVULROL=8001
EZ_A_KULSO_IP=111.111.111.111
EZ_A_BELSO_IP=10.0.0.2
EZ_A_BELSO_PORT=80

iptables -t nat -A PREROUTING -p tcp -d $EZ_A_KULSO_IP --dport $EZ_A_PORT_LACCIK_KIVULROL -j DNAT --to-destination $EZ_A_BELSO_IP:$EZ_A_BELSO_PORT
[/code:1:3a0afa1f8f]
Az iptables sor 1 sor :!:
Vagyis a kulso ip x portjara erkezo tcp csomagokat, dnat-olja a belso ip y portjara.

[quote:1e61796575="Phanatic"]sajnos így sem akar menni...

[code:1:1e61796575]devel:~# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2 -v
DNAT tcp opt -- in * out * 0.0.0.0/0 -> 0.0.0.0/0 tcp dpt:80 to:10.0.0.2
devel:~# iptables -L PREROUTING
iptables: Table does not exist (do you need to insmod?)[/code:1:1e61796575]

Mert ez a tűzfalra a 80-as porton beeső kéréseket küldi tovább, nem a 8001-es porton levőket. Próbáld meg így:
[code:1:1e61796575]iptables -t nat -A PREROUTING -p tcp --dport 8001 -j DNAT --to-destination 10.0.0.2:80[/code:1:1e61796575]

köszi a tippet, de még mindig semmi :( egy "szűz" iptables-re nyomattam most rá:

[code:1:2cf35f2361]devel:~# iptables -t nat -A PREROUTING -p tcp --dport 8001 -j DNAT --to-destination 10.0.0.2:9000
devel:~# 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[/code:1:2cf35f2361]

[quote:901455c260="Phanatic"]sajnos így sem akar menni...

[code:1:901455c260]devel:~# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2 -v
DNAT tcp opt -- in * out * 0.0.0.0/0 -> 0.0.0.0/0 tcp dpt:80 to:10.0.0.2
devel:~# iptables -L PREROUTING
iptables: Table does not exist (do you need to insmod?)[/code:1:901455c260]

Sajnos kicsit remeg a kezem, a dport ele csak 1 db minuszjel kell.
Tovabba, nem art megadni, hogy csah a kulso halot kezelo device-rol, jovo csomagokat iranyitsa at. Kulonben a bentrol kifele meno HTTPO kereseket is visszadobna a 10.0.0.2-re.

Tehat:
[code:1:901455c260] iptables -t nat -A PREROUTING -i eth0 -p tcp -dport 80 -j DNAT --to-destination 10.0.0.2[/code:1:901455c260]

[quote:ecdab12f00="miq"]Sajnos kicsit remeg a kezem, a dport ele csak 1 db minuszjel kell.

nem ez a probléma, a két mínuszjel a helyes... de továbbra sem működik :(

"iptables -t nat -L" paranccsal probald listazni a szabajokat. Mert ahogy lattam mindenutt csak a -L kapcsolot hasznaltad, ami ez esetben onmagaban nem eleg, mert a szabalyt a nat tablaba irtad.

[quote:f6d777d6e9="miq"][quote:f6d777d6e9="Phanatic"]sajnos így sem akar menni...

[code:1:f6d777d6e9]devel:~# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2 -v
DNAT tcp opt -- in * out * 0.0.0.0/0 -> 0.0.0.0/0 tcp dpt:80 to:10.0.0.2
devel:~# iptables -L PREROUTING
iptables: Table does not exist (do you need to insmod?)[/code:1:f6d777d6e9]

Sajnos kicsit remeg a kezem, a dport ele csak 1 db minuszjel kell.
Tovabba, nem art megadni, hogy csah a kulso halot kezelo device-rol, jovo csomagokat iranyitsa at. Kulonben a bentrol kifele meno HTTPO kereseket is visszadobna a 10.0.0.2-re.

Tehat:
[code:1:f6d777d6e9] iptables -t nat -A PREROUTING -i eth0 -p tcp -dport 80 -j DNAT --to-destination 10.0.0.2[/code:1:f6d777d6e9]

Nincsen NAT támogatás a kernelben, így nincsen NAT tábla se. Vagy töltsd fel a NAT modult, vagy fodíts új kernelt. Benne NAT támogatással.

[code:1:f6d777d6e9]
IP tables support (required for filtering/masq/NAT)
CONFIG_IP_NF_IPTABLES
-> y/m
Full NAT (Network Address Translation)
CONFIG_IP_NF_NAT
-> y/m
[/code:1:f6d777d6e9]

Hogy a modulnak mi a neve, azt nem tudom, mert mindig bele fordítom.
Utána menni fognak a miq/Elbandi által elmondottak.

Üdv,
Dw.

szerintem ha rendesen működik a netmegosztás, akkor a NAT modul be van töltve... és jelen esetben ez a helyzet... (tehát a 10.0.0.2-ről ki tudok menni a netre a 10.0.0.1-en keresztül)

Szerintem benne van neki a kernelbe a nat, mert ha nem lenne, akkor az szerintem kiirta volna mar akkor, amikor kiadja a
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2 -v DNAT tcp opt -- in * out * 0.0.0.0/0 -> 0.0.0.0/0 tcp dpt:80 to:10.0.0.2
parancsot.

Viszont a iptables -L PREROUTING parancs -t nat nelkul akkor is ezt irja ki: Table does not exist (do you need to insmod?) ha a nat rendesen be van toltve. (probald ki!)

Egyszoval mindenkepp kell a -t nat -L kapcsolo melle.

[quote:0752bbf02f="Phanatic"]szerintem ha rendesen működik a netmegosztás, akkor a NAT modul be van töltve... és jelen esetben ez a helyzet... (tehát a 10.0.0.2-ről ki tudok menni a netre a 10.0.0.1-en keresztül)

Dumbass vagyok? Lehet.
MASQ-olod a gépeket? Ha igen, akkor benne kell lenni a NAT támogatásnak is.

Csak mi okozza ezt:

iptables: Table does not exist (do you need to insmod?)

Üdv,
Dw.

[quote:3b88ec3284="garuda"]Egyszoval mindenkepp kell a -t nat -L kapcsolo melle.

oh yeah, így tényleg látszik már minden :) ettől függetlenül nem akar menni... :(

[quote:df4171c587="Dwokfur"]

Csak mi okozza ezt:

iptables: Table does not exist (do you need to insmod?)

Az hogy -t nat is kell a parnacsba:
iptables -t nat -L

Mostmar tobbe nem irom le.

Hi!

Egyik ismerosom irt egy kenyelmes scriptet, ami ezt tok jol megoldja.
Megkerdezem tole, hogy publikus-e, es ha igen, akkor bepostolom.

By(t)e
TBS::Antiemes

[quote:6897991eef="antiemes"]Megkerdezem tole, hogy publikus-e, es ha igen, akkor bepostolom.

az nagyon jól jönne, köszi...

A kovetkezo modon lehet megoldani a problemadat. Itt most lehet, hogy lesz par ostobasag, mert en is csak otletekbol, "IQ"-bol, doksi olvasgatas nelkul jottem ra egy baratommal:

1. prerouting (befele)
Kivulrol fogadja a szerver a kereseket. Cel IP cim atalakitas. Input kulso interface
2. postrouting(befele)
A forras cimet at kell irni, kulonben a belso gep, ugy veszi, mintha lokal cimet, kivulrol megcelozta volna valaki, es nem valaszol. Ouput belso interface.
3. forward(visszafele)
interface-k kapcsolodasa belso->kulso

pl:
1
iptables -t nat -I PREROUTING -i ppp0 -p tcp -s xx.xx.251.157 -d xxx.dyndns.org --dport 1521 -j DNAT --to-destination 192.168.16.2
2.
iptables -t nat -I POSTROUTING -o eth0 -p tcp -s xx.xx.251.157 -d 192.168.16.2 --dport 1521 -j SNAT --to-source 192.168.16.250
3.
iptables -A FORWARD -i eth0 -o ppp0 -p tcp --sport 1521 -j ACCEPT

A fenti harom szabaly segitsegevel az egy adott cimrol a ppp0 interface-re es 1521-es porton keresztul engedek be egy gepet a belso halon csucsoulon oracle szerverre. Illetve a belso gep ki tud kommunikalni a kulso gephez.

Alakitsd neked megfeleloen.

Hasznos segitseg a tcpdump. Vizsgald meg a kulonbozo interface-ken, hogy halad at csomogad, illetve vissza.

Sok sikert !

udv. Gabor

[code:1:31f7743925]iptables -A FORWARD -j ACCEPT -p tcp --dport 8001
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 8001 -j DNAT --to 10.0.0.2:80
iptables -A FORWARD -j ACCEPT -p udp --dport 8001
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 8001 -j DNAT --to 10.0.0.2:80
[/code:1:31f7743925]

Az udps sorokra nem hiszem, hogy szükség van.

az, hogy kell-e snat, csak azon múlik, hogy az (intelligens switchek) a gépek között megeszik-e a nem helyi hálós ip címet (vlan konfig, etc), ill a célgép szúr-e ip-re. Ha egyik sem kell, akkor egy sima célcsere (DNAT) elég, és akkor tkp dmz*ó-ben lesz a belső gép. Ha a fentiek bármelyike kell, akkor viszont át kell írni a forráscímet is + logolni a kapcsolatot (hiszen csak így állapítható meg, honnan jött a kérés) a külső gépen.

Hi!

A scriptet nem en irtam!!! Ne nekem koszonjetek :)

A portforward script:
///// /etc/init.d/portforward

#!/bin/bash
#
# Portforwarding service with iptables v0.2.0
#
# (c)Copyright Attee
#

CONFIG=/etc/portforward.conf
IPTABLES=/sbin/iptables

if !( source $CONFIG ) ; then
echo "Cannot find config file $CONFIG"
echo "Please check!"
exit 0
fi

source $CONFIG
# echo ${HOSTS[*]} ${PORTTO[*]} ${PORTIN[*]}
PID=/var/run/portforward.pid
# test -x $IPTABLES || exit 0
# echo "Portforward script v0.2.0 - (c)Copyright Attee 2003"

if ( test ${#PORTTO[*]} -ne ${#PORTIN[*]} || test ${#PORTIN[*]} -ne ${#HOSTS[*]} ) ; then
echo "Config file $CONFIG is checked. Status: ERROR"
echo "Please check the number of hosts/ports."
exit
fi

case "$1" in
start)
if [ ! -e $PID ] ; then
echo -n "Starting portforwarding (iptables): "
for (( i=0; i<${#HOSTS[*]}; i++)); do
$IPTABLES -A PREROUTING -t nat -p tcp -d $SERVER --dport ${PORTIN[$i]} -j DNAT --to ${HOSTS[i]}:${PORTTO[$i]}
$IPTABLES -A PREROUTING -t nat -p udp -d $SERVER --dport ${PORTIN[$i]} -j DNAT --to ${HOSTS[$i]}:${PORTTO[$i]}
done
cp $CONFIG $PID
echo "done"
else
echo "Portforwarding is already running! "
fi
;;
stop)
if [ -e $PID ] ; then
source $PID
echo -n "Stopping portforwarding (iptables): "
for (( i=0; i<${#HOSTS[*]}; i++)); do
$IPTABLES -D PREROUTING -t nat -p tcp -d $SERVER --dport ${PORTIN[$i]} -j DNAT --to ${HOSTS[$i]}:${PORTTO[$i]}
$IPTABLES -D PREROUTING -t nat -p udp -d $SERVER --dport ${PORTIN[$i]} -j DNAT --to ${HOSTS[$i]}:${PORTTO[$i]}
done
rm $PID
echo "done"
else
echo "Portforwarding is not running! Cannot stop it!"
fi
;;
restart)
$0 stop
$0 start
;;
show)
if [ -e $PID ] ; then
source $PID
echo "Portforwarding is currently running."
echo -e "From: \t\t\tTo:"
for (( i=0; i<${#HOSTS[*]}; i++)); do
echo -e "$SERVER:${PORTIN[i]}\t${HOSTS[i]}:${PORTTO[i]}"
done
else
echo "Portforwarding is currently not running."
fi
;;
*)
echo "Config file $CONFIG is checked. Status: OK"
echo "Usage: $0 {start|stop|restart|show}"
esac

/////// /etc/portforward.conf:

# Portforward config file
# Default location is /etc/portforward.conf
# Please set the variables properly

# SERVER is the IP address of the server you proveide the service on
SERVER=193.6.32.225

# HOSTS is the array variable af host you provide the service to
# For example HOSTS=(10.0.0.203 10.0.0.24 10.0.0.204)
HOSTS=(10.0.0.203 10.0.0.203 10.0.0.203 10.0.0.203 10.0.0.203 10.0.0.203 10.0.0.203 10.0.0.139 10.0.0.92 10.0.0.92 10.0.0.127 10.0.0.129 10.0.0.203 10.0.0.97 10.0.0.97 10.0.0.92 10.0.0.92)
PORTTO=(6001 5901 9177 9176 9192 22 80 12203 80 22 5347 80 2121 80 3306 3306 6881)
PORTIN=(6001 5901 9177 9176 9192 2222 2080 12203 60080 60022 5347 30080 2121 50080 33306 43306 6881)

By(t)e
TBS::Antiemes

Ez gagyi. Akkor mar tanulja meg normalisan a csomagszurest.

asd

Hi!

Mi vele a bajod?

By(t)e
TBS::Antiemes

Tobbek kozt az, hogy ebbol a zsonglorkodesbol az user egyaltalan nem tanul.

asd

Hi!

Ebben maximalisan igazad van. Viszont ha mar egyszer van egy ilyen cucc, akkor gondoltam, beteszem ide. Egyebkent, be kell valljam oszinten, az iptables-hez nem ertek.

By(t)e
TSB::Antiemes

Hi!

A fenti script eleg sokaig midnenfele hiba nelkul mukodott, de egy ideje nem akar menni. Azt irja ki:

[code:1:6a3a274928]Bad argument `1234:'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `1234:'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `50080:'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `50080:'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `30080:'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `30080:'
Try `iptables -h' or 'iptables --help' for more information.
[/code:1:6a3a274928]

Gondolom az a problema, hogy frissult az iptables, es max a szintaxisa; a --dport valahogy maskepp mukodik. Mit kell mashogy megadni neki?

Elore is koszi.
By(t)e
TBS::Antiemes