Toon posts:

[iptables] FTP PORT problemen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een Linux 2.4.18 Slackware 8.1 server. Deze is direct verbonden met het internet (via een netwerkkaart en kabelmodem) en hangt met een tweede netwerkkaart aan een intern netwerk waaraan weer 2 andere computers hangen (soms meer, laptops en zo).

Nou zit ik soms op FTP servers te bladeren die zelf niet goed geconfigureerd zijn zodat ik geen passive mode data connecties kan gebruiken. Ik heb daarom mijn FTP client ingesteld op een vaste port range (9992-9999), en het externe IP van m'n server opgegeven. Vervolgens heb ik die port range geforward naar m'n interne machine. Dit werkt op zich goed, alleen na een paar transfers gedaan te hebben (of dat nou data is of een directory listing maakt niet uit) krijg ik opeens allemaal fouten in m'n FTP client. De server kan dan geen verbinding maken met mijn computer.

Nou is dit op zich niet zo'n heel groot probleem als de bestanden groot zijn. In dat geval kan ik een groot deel van de bestanden downloaden, dan wachten en dan weer verder gaan. Een probleem is echter als het veel kleine bestanden zijn.

Is er iemand die een oplossing voor dit probleem weet? Overigens heb ik gezien dat ik op school ook PORT kan gebruiken terwijl ik geen vaste port range heb ingesteld, en het lijkt me toch sterk dat ze alle poorten forwarden naar elke computer in het netwerk (wat er nogal wat zijn). Is er misschien een handigere manier om dit voor elkaar te krijgen?

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Wat je nodig hebt zijn de kernel modules ip_conntrack_ftp en ip_nat_ftp.
De ip_conntrack_ftp module zorgt ervoor dat de active-ftp data verbinding de state RELATED krijgt zodat je die door je firewall kan loodsen terwijl de ip_nat_ftp module de verbinding naar de juiste lokale ip forward.

Er is ook een paar modules voor irc DCC verbindingen.

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


Verwijderd

Topicstarter
Hmmz, ik dacht dat ik die modules al geladen had, maar ze stonden er inderdaad niet in. Vreemd echter, want het volgende staat in m'n firewall script:

code:
1
2
3
4
5
6
7
8
9
10
11
#Load the FTP tracking mechanism for full FTP tracking
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
echo -e "ip_conntrack_ftp, "
#
#Verify the module isn't loaded.  If it is, skip it
#
if [ -z " $LSMOD | $GREP ip_conntrack_ftp | $AWK {'print $1'} " ]; then
   $INSMOD ip_conntrack_ftp
fi


en

code:
1
2
3
4
5
6
7
8
9
10
11
12
#Loads the FTP NAT functionality into the core IPTABLES code
# Required to support non-PASV FTP.
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
echo -e "ip_nat_ftp"
#
#Verify the module isn't loaded.  If it is, skip it
#
if [ -z " $LSMOD | $GREP ip_nat_ftp | $AWK {'print $1'} " ]; then
   $INSMOD ip_nat_ftp
fi


Dan zou ik toch verwachten dat de betreffende modules ook geladen worden?

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Verwijderd schreef op 12 March 2003 @ 13:58:
code:
1
2
3
4
5
6
7
8
9
10
11
#Load the FTP tracking mechanism for full FTP tracking
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
echo -e "ip_conntrack_ftp, "
#
#Verify the module isn't loaded.  If it is, skip it
#
if [ -z " $LSMOD | $GREP ip_conntrack_ftp | $AWK {'print $1'} " ]; then
   $INSMOD ip_conntrack_ftp
fi

[..]
Dan zou ik toch verwachten dat de betreffende modules ook geladen worden?
Commando's die tussen dubbele quotes staan worden toch niet uitgevoerd, alleen variabelen worden dan vervangen.

Probeer het eens met ` ipv " of anders:
code:
1
2
3
4
RESULTAAT=`$LSMOD | $GREP ip_conntrack_ftp | $AWK {'print $1'}`
if [ -z "$RESULTAAT" ]; then
   $INSMOD ip_conntrack_ftp
fi

Verder is het handiger om modprobe ipv insmod te gebruiken om ip_conntrack_ftp te laden omdat modprobe ook modules laad die ip_conntrack_ftp eventueel nodig heeft en nog niet geladen zijn.

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


Verwijderd

Topicstarter
Ik heb nu het volgende stukje staan:

code:
1
2
3
4
5
6
7
8
9
10
11
12
#Loads the FTP NAT functionality into the core IPTABLES code
# Required to support non-PASV FTP.
#
# Enabled by default -- insert a "#" on the next line to deactivate
#
echo -e "ip_nat_ftp"
#
#Verify the module isn't loaded.  If it is, skip it
#
if [ -z `$LSMOD | $GREP ip_nat_ftp | $AWK {'print $1'}` ]; then
   $INSMOD ip_nat_ftp > /dev/null
fi


Nu krijg ik echter foutmeldingen op het moment dat ik het script uitvoer en de betreffende modules zijn al geladen. De foutmeldingen luiden als volgt:

code:
1
2
3
4
5
6
/etc/rc.d/rc.firewall: [: ip_conntrack_ftp: binary operator expected
                             ip_conntrack_irc, /etc/rc.d/rc.firewall: [: ip_conntrack_irc: binary operator expected
iptable_nat, ip_nat_ftp
/etc/rc.d/rc.firewall: [: too many arguments
ip_nat_irc
/etc/rc.d/rc.firewall: [: too many arguments


Enig idee hoe dat komt? 'k ben niet zo'n held in shell scripten, maar dit begrijp 'k echt niet.

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Verwijderd schreef op 12 March 2003 @ 16:54:
Nu krijg ik echter foutmeldingen op het moment dat ik het script uitvoer en de betreffende modules zijn al geladen. De foutmeldingen luiden als volgt:
code:
1
2
3
4
5
6
7
/etc/rc.d/rc.firewall: [: ip_conntrack_ftp: binary operator expected
                             ip_conntrack_irc, /etc/rc.d/rc.firewall: [:
 ip_conntrack_irc: binary operator expected
iptable_nat, ip_nat_ftp
/etc/rc.d/rc.firewall: [: too many arguments
ip_nat_irc
/etc/rc.d/rc.firewall: [: too many arguments


Enig idee hoe dat komt? 'k ben niet zo'n held in shell scripten, maar dit begrijp 'k echt niet.
Waarschijnlijk komt ip_nat_ftp en/of ip_conntrack_ip op meerdere regels van de output van lsmod voor (bv als dependency). De -z optie van '[' staat maar 1 extra argument toe, vandaar dus de foutmelding.
Is op te lossen door de awk filter voor de grep filter uit te voeren zodat de grep slechts 1 regel als antwoord geeft.

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)

Pagina: 1