PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : routing ???



tobsen007
11.03.03, 15:52
hi,

wie ist es unter linux möglich bestimmt packete an einen anderen router als den default zu schicken ?

also ich möchte zum beispiel alle packete die raus gehen und die ftp und http sind über einen anderen router routen ?

wie funktioniert das unter linux ??

sorry ich hab ein wenig über nat gelesen aber leider nicht ganz verstanden...


thx und gruß tobsen

Matzetronic
11.03.03, 21:30
hmm,

iptables -t nat -A PREROUTING -p tcp -i $DEV_EXT --dport 80 -j DNAT --to 192.168.1.22:80

(leitet am externen interface eingehende verbindungen auf port 80 auf den rechner mit der ip 192.168.1.22 um)


meinst du sowas ?

mfg,
matze

ps.: raff die frage nach den vielen bier(s) vielleicht nich mehr :ugly:

HangLoose
11.03.03, 23:18
hi

@Matzetronic

wenn die *manipulation* der pakete auf dem *paketerzeugenden* rechner stattfinden soll, wäre PREROUTING die falsche chain.



@tobsen007

ist ein wenig ungewöhnlich dein anliegen und ich bin mir auch nicht 100% sicher, ob ich mit meinen regeln richtig liege ;).

iptables -t nat -A OUTPUT -o $ext -p tcp --dport 80 -j DNAT --to-destination xxx.xxx.xx.x

iptables -t nat -A OUTPUT -o $ext -p tcp --dport 21 -j DNAT --to-destination xxx.xxx.xx.x



$ext <== durch dein externes interface ersetzen

xxx.xxx.xx.x <== ip des anderen routers


Gruß HL

tobsen007
12.03.03, 11:10
ja das teil ist aber selber auch ein router wo ein squid proxy dienst läuft leider hab ich nicht soviel erfahrung mit iptables um das selber beurteilen zu können was richtig ist und was nicht ?

aber ich werd heute nachmittag nochmal beid regel probiern - thx

@Matzetronic

ich glaub du hast es schon richtig verstanden...

@hangloose

hm, ja ist eine komisch sache - funktioniert deine lösung auch wenn ich, wie oben beschriebe, diesen rechner ja quasi auch jetzt schon als router einsetze da nicht nur der proxy dienst drauf läuft sonderen alles andere auch drüber geroutet wird...

gruß tobi

HangLoose
12.03.03, 11:22
hi

die regel von oben müßte auf dem client *laufen* und würde dafür sorgen, das pakete mit zielport 80 nicht an den router sondern an den apachen geschickt werden.



|
|
Router Apache
| |
| |
|-----------
|
|
Client




wenn du was anderes vor hast, wäre ne kleine skizze deines netzwerks recht nützlich



Gruß HL

tobsen007
12.03.03, 11:27
hi,

folgender netzwerkaufbau:




CLIENT
|
|
|
ROUTER/PROXY SERVER LINUX
| |
| |
| |
CISCO 1 CISCO 2

so bister gibt es nur cisco 1 und alles läuft über diesen router weiter...
schöner wäre es jetzt wenn ich alle packete die über den router nach draußen geschickt werden und zum beispiel ftp und http sind auf den cisco 2 geschickt werden ??
beide router sind im gleichen netz.

gruß tobsen

HangLoose
12.03.03, 11:32
dann nimmst du doch PREROUTING und zwar auf dem router.

iptables -t nat -A PREROUTING -o $ext -p tcp --dport 80 -j DNAT --to-destination xxx.xxx.xx.x


wobei xxx.xxx.xx.x die ip von cisco2 ist.




ROUTER/PROXY SERVER LINUX

das ist doch eine *maschine*, oder?


Gruß HL

tobsen007
12.03.03, 12:35
jo ist ne maschine ;)

äh noch nen frage dazu funktioniert dies nun auch wenn ich zumbeispiel als client ftp mache richtig mit up und download ?

also sachen wo nicht nur der client eine verbindung aufbaut ?

wahrscheinlich fehlt es mir gerade an der durchsicht...:ugly:


gruß und thx
tobi

HangLoose
12.03.03, 12:55
hi

das machst du am besten mit connection tracking



# Connection-Tracking aktivieren
#----------------------------------------------------------------------------------------------------

iptables -A FORWARD -i $int -o $ext -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


#--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Rückkanal: eingehende Paket zu einer bestehenden Verbindung
#--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

iptables -A FORWARD -i $ext -o $int -m state --state ESTABLISHED,RELATED -j ACCEPT



Gruß HL

HangLoose
12.03.03, 13:24
so könnte das script dann komplett aussehen


case "$1" in
start)
echo "Starte IP-Paketfilter"


#================================================
# Variablen
#================================================

ipt=/sbin/iptables

#---------------------------------------------------------------------------
# Module laden
#---------------------------------------------------------------------------

# iptables-Modul
modprobe ip_tables
# Connection-Tracking-Module
modprobe ip_conntrack
modprobe ip_conntrack_ftp

#----------------------------------------------------------------------------
# Interfaces
#----------------------------------------------------------------------------

ext=eth1
int=eth0

IF=" $ext $int "

#----------------------------------------------------------------------------
# Spezial Ports
#----------------------------------------------------------------------------

p_high=1024:65535 # unprivileged ports

#----------------------------------------------------------------------------
# ip hosts
#----------------------------------------------------------------------------

client = xxx.xxx.xx.x

#----------------------------------------------------------------------------
#dynamische Kernelparameter
#----------------------------------------------------------------------------

echo 1 > /proc/sys/net/ipv4/ip_forward

#--------------------------------------------------------------------------
# Default Policy und flush
#--------------------------------------------------------------------------

$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT DROP

$ipt -F # flush aller chains (Tabelle filter)
$ipt -t nat -F # flush aller chains (Tabelle nat)
$ipt -X # delete all userdefined chains (Tabelle filter)

#----------------------------------------------------------------------
# lokale Prozesse
#----------------------------------------------------------------------

$ipt -A OUTPUT -o lo -j ACCEPT
$ipt -A INPUT -i lo -j ACCEPT

#----------------------------------------------------------------------
# ssh für Fernwartung
#----------------------------------------------------------------------

$ipt -A INPUT -i $int -s $client -p tcp --sport $p_high --dport ssh -m state --state NEW,ESTABLISHED -j ACCEPT
$ipt -A OUTPUT -o $int -d $client -p tcp -dport $p_high --sport ssh -m state --state ESTABLISHED -j ACCEPT


# Connection-Tracking aktivieren
#----------------------------------------------------------------------

$ipt -A FORWARD -i $int -o $ext -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#----------------------------------------------------------------------
# Rückkanal: eingehende Paket zu einer bestehenden Verbindung
#----------------------------------------------------------------------

$ipt -A FORWARD -i $ext -o $int -m state --state ESTABLISHED,RELATED -j ACCEPT

#----------------------------------------------------------------------
# WWW an Cisco2 schicken
#----------------------------------------------------------------------

$ipt -t nat -A PREROUTING -o $ext -p tcp --dport 80 -j DNAT --to-destination xxx.xxx.xx.x

#----------------------------------------------------------------------
# FTP an Cisco2 schicken
#----------------------------------------------------------------------

$ipt -t nat -A PREROUTING -o $ext -p tcp --dport 21 -j DNAT --to-destination xxx.xxx.xx.x

#----------------------------------------------------------------------
# Ausputzer: Rest sperren, loggen
#----------------------------------------------------------------------

$ipt -A INPUT -j DROP
$ipt -A FORWARD -j DROP
$ipt -A OUTPUT -j DROP


;;

stop)

echo "Stoppe IP-Paketfilter"

ipt=/sbin/iptables

#Tabellen flushen

$ipt -F
$ipt -t nat -F
$ipt -X

#Default Policy auf ACCEPT setzen

$ipt -P INPUT -j ACCEPT
$ipt -P FORWARD -j ACCEPT
$ipt -P OUTPUT -j ACCEPT


;;

esac



Gruß HL

tobsen007
12.03.03, 13:55
hi,


werd das ding heute abend mal probieren ! vielen vielen danke hoffe das es hinhaut - ist sowas auch mit einem altern kernel möglich :ugly:
das teil wofür es die lösung gebraucht wird gibt mir nämlich folgendes :rolleyes:

proxy:~ # uname -a
Linux proxy 2.0.36 #56 Tue Dec 8 18:12:21 MET 1998 i686 unknown und IPFWADM :(

ich denk das teil wird somit sowieso mal umgestellt....


vielen danke echt stark !

gruß tobi

HangLoose
12.03.03, 14:05
proxy:~ # uname -a Linux proxy 2.0.36 #56 Tue Dec 8 18:12:21 MET 1998 i686 unknown und IPFWADM

das sagst du jetzt, wo ich mir die ganze arbeit gemacht habe ;) nein für iptables brauchst du einen 2.4 er kernel.

btw. in dem script ist kein masquerading *eingebaut*, da ich davon ausgehe, das cisco1 und cisco2 firewalls sind, die das übernehmen, richtig?


Gruß HL

tobsen007
12.03.03, 14:23
naja nicht ganz - cisco, das sind die router mit acl... vor diesen routern stehen aber nochmal firewalls bevor es also dann wirklich mal raus aus dem rz geht...

sorry hatte ich nicht dran gedacht das dieses ding schon so alt ist :( trotzdem hat es mir einiges gebracht dach ich jetzt das nächste mal weiß wie man sowas macht bzw. vielleicht brauch man es schon am montag wenn das teil mal upgedatet wurden...

gruß tobi

werd das script aber trotzdem ausprobieren heute abend und hier nochmal posten ob es gegangen ist - schon wahnsinn was iptables als machen kann...

wie sieht das bei dem neuen kernel aus ? soll ja wieder mal ein neues system eingeführt werden ?

gruß und danke
tobi

HangLoose
12.03.03, 14:36
naja nicht ganz - cisco, das sind die router mit acl... vor diesen routern stehen aber nochmal firewalls bevor es also dann wirklich mal raus aus dem rz geht...

naja um das masquerading brauchst du dich dann nicht zu kümmern.


sorry hatte ich nicht dran gedacht das dieses ding schon so alt ist

das war ein joke, das meiste hab ich mit C&P aus meinem aktuellen script geholt ;)


trotzdem hat es mir einiges gebracht dach ich jetzt das nächste mal weiß wie man sowas macht bzw. vielleicht brauch man es schon am montag wenn das teil mal upgedatet wurden...

wenn der client iptables *erlaubt* kannst du ja mal die erste regel, die ich gepostet habe testen, die mit -A OUTPUT ...



wie sieht das bei dem neuen kernel aus ? soll ja wieder mal ein neues system eingeführt werden ?

hm hab ich noch nichts von gehört. denke mal das uns iptables erstmal ne weile erhalten bleibt.


Gruß HL