UDP és TCP portok forwardolása, Debian Etch

 ( balazsasd | 2008. november 16., vasárnap - 0:32 )

Sziasztok!

Tudom hogy a rinetd-vel lehet TCP portot forgatni, de nem igazán találok arról infót hogy UDP portokat kezeli-e, és ha igen akkor hogy.

Kérdésem az volna hogy mivel tudok megvalósítani UDP port továbbítást, illetve hogy a rinetd képes-e rá.

Válaszotokat előre is köszönöm.
Üdv.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

man rinetd:
LIMITATIONS
rinetd redirects TCP connections only. There is no support for UDP. rinetd only redirects protocols which use a single TCP socket. This rules out FTP.

Az iptables/netfilter PREROUTING láncának DNAT-jával a legegyszerűbb megoldani a port forwardot. Ezzel természetesen megy a TCP is. Bővebben man iptables, DNAT.
iptables -t nat -A PREROUTING -p udp -d 10.0.0.1 --dport 1111 -j DNAT --to-destination 192.168.0.1

Ez a gép internetet is oszt, szóval úgy kellene az iptablest beállítani hogy az internetmegosztás ne lássa kárát. Egyépként amit leírtál sort valamiért nem működik, a --dport paraméter nem tetszik neki.

----

MSI M670 (MS1632) & Conroe865PE , Intel 630 HT , 512MB DDR , 250+30 GB HDD
Sun Netra t 1400 & Sun Netra t 1120

"úgy kellene az iptablest beállítani hogy az internetmegosztás ne lássa kárát."
Nem látja, ha a megfelelő helyre kerül, és megfelelő paraméterekkel. Kiegészíthető még sok más feltétellel is, amit az iptables kezelni képes, például más célporttal, interfésszel stb.

"amit leírtál sort valamiért nem működik, a --dport paraméter nem tetszik neki."
Először kimaradt belőle a protokoll, utána szerkesztettem. A most látható változat is hibát ad? Elvileg nem kellene. Ezen kívül természetesen a megfelelő módon át kell engedni a filter táblán is, azaz ha belső gépen van a szolgáltatás, akkor a FORWARD-on.

Mit értesz azalatt hogy jó helyre kerül-e?
Jelenleg van a gépen egy script, ami az internetmegosztást felépíti, amellett egy DHCP. Itt a script:

----SCRIPT----

#!/bin/sh
IPTABLES=/sbin/iptables
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe
EXTIF="ppp0"
INTIF="eth2"
ONTIF="eth1"
echo "Kulso eszkoz: $EXTIF"
echo "Belso eszkoz: $INTIF"
echo "Belso 2 eszkoz: $ONTIF"
echo "Modulok betoltese..."
$DEPMOD -a
$MODPROBE ip_tables
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_conntrack_irc
$MODPROBE iptable_nat
$MODPROBE ip_nat_ftp
echo "Megoszas konfiguralasa"
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -t nat -F

# Alap dolgok:

#iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

$IPTABLES -A FORWARD -i $EXTIF -o $ONTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $ONTIF -o $EXTIF -j ACCEPT

#$IPTABLES -A FORWARD -j LOG
#$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
#Szomszedoke:

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT

$IPTABLES -A FORWARD -j LOG
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

### Porttivábbítási beállítások

#iptables -A PREROUTING -t nat -p tcp --dport 1112 -j DNAT --to 192.168.1.2:1112
#iptables -A FORWARD -p tcp --dport 1112 -j ACCEPT
#iptables -A PREROUTING -t nat -p udp --dport 1112 -j DNAT --to 192.168.1.2:1112
#iptables -A FORWARD -p udp --dport 1112 -j ACCEPT
#iptables -A PREROUTING -t nat -p tcp --dport 443 -j DNAT --to 192.168.1.2:443
#iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
#iptables -A PREROUTING -t nat -p udp --dport 443 -j DNAT --to 192.168.1.2:443
#iptables -A FORWARD -p udp --dport 443 -j ACCEPT

----/SCRIPT----

Nagy segítség lenne hogy ha elmondanád hogy ebben mi mit csinál, mert az iptables számomra még egy más világ. Ennél a scriptnél volt egy olyan jelenség amikor lefutott, és a portovábbítás rész nem volt kikommentezve , hogy pl:nem lépett be az msn, nem tudott külső ftp-re kapcsolódni... és hasonló érdekességek.

----

MSI M670 (MS1632) & Conroe865PE , Intel 630 HT , 512MB DDR , 250+30 GB HDD
Sun Netra t 1400 & Sun Netra t 1120

"Mit értesz azalatt hogy jó helyre kerül-e?"
Hogy a csomagnak van-e esélye átmenni ezen a szabályon. Ha egy láncban több olyan szabály van, amelyeknek a feltételei részben vagy teljesen átlapolódnak, akkor a bejövő csomag csak az első illeszkedőt fogja érinteni.

"ebben mi mit csinál"
FORWARD: nem a helyi gépnek szóló csomagok továbbítása két interfész között
INPUT: a helyi gépnek szóló csomagok beengedése
PREROUTING: a routing előtti vizsgálat
POSTROUTING: a routing utáni vizsgálat
MASQUERADE: a csomag forrás IP-jének átírása a kimenő interfész IP-jére
DNAT: a cél IP vagy port megváltoztatása a NAT során
Részletesen: man iptables, továbbá Linux 2.4 Packet Filtering HOWTO.

"portovábbítás rész nem volt kikommentezve , hogy pl:nem lépett be az msn"
Mert minden HTTPS forgalom a 192.168.1.2-re ment. Ehelyett
  #iptables -A PREROUTING -t nat -p tcp --dport 1112 -j DNAT --to 192.168.1.2:1112
  #iptables -A FORWARD -p tcp --dport 1112 -j ACCEPT
használd úgy, hogy a működésének irányát vagy a célcímmel (dinamikus IP-nél nem jöhet szóba), vagy az input interfésszel pontosítod, így nem zavarja meg a kifelé kezdeményezett kapcsolatok működését:
  iptables -A PREROUTING -t nat -i $EXTIF -p tcp --dport 1112 -j DNAT --to 192.168.1.2:1112
  iptables -A FORWARD -i $EXTIF -p tcp --dport 1112 -j ACCEPT

Nagyon jóóóó. Működik szuperül minden.
Köszönöm szépen a segítségedet.

----

MSI M670 (MS1632) & Conroe865PE , Intel 630 HT , 512MB DDR , 250+30 GB HDD
Sun Netra t 1400 & Sun Netra t 1120

portfwd
------------------------------------------------------
Ezt ne nezd meg!