Archiv verlassen und diese Seite im Standarddesign anzeigen : iptabels und dyndns
hi,
also ich wollte 2 rechnern zugriff auf meinen pop3 server erlauben. also habe ich in meinen firewall regeln das eingestellt:
iptables -A INPUT -s host1.ath.cx -d meine.server.ip -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -s host2.ath.cx -d meine.server.ip -p tcp --dport 110 -j ACCEPTDas klappt auch schoen und gut, aber nur solang keiner von beiden nen 24 reconnect hat. wird die ip geupdatet, bekommt das die firewall regel leider nicht mit.
hat jemand vielleicht eine idee, wie man das lösen könnte ?
danke
mfg
fl4kus
Folgender Denkanstoss:
1. Ermittle die beiden entsprechenden IP's der Rechner
2. Starte / Aktualisiere dein Script mit den beiden IP's
3. warte eine längere Zeit
4. GOTO 1
jau also hab nen kleines script dafuer geschrieben :)
#!/usr/bin/perl
my @ports = (110,25);
my @newRules =
(
'iptables -I INPUT -s host1.ath.cx -d die.ip.vom.server -p tcp --dport 110 -j ACCEPT',
'iptables -I INPUT -s host2.ath.cx -d die.ip.vom.server -p tcp --dport 110 -j ACCEPT',
'iptables -I INPUT -s host1.ath.cx -d die.ip.vom.server -p tcp --dport 25 -j ACCEPT',
'iptables -I INPUT -s host2.ath.cx -d die.ip.vom.server -p tcp --dport 25 -j ACCEPT'
);
my $ipTabelle = `iptables -nvL INPUT`;
my @ipTable = split("\n", $ipTabelle);
foreach $rule(@ipTable) {
foreach $port(@ports) {
if ($rule =~ /dpts?:\s?$port/) {
# 0 0 ACCEPT tcp -- * * 80.80.80.80 82.82.82.82.82 tcp dpt:25
($a,$a,$method,$protokoll,$a,$a,$a,$ip,$host, @args) = split(" ", $rule);
if ($ip eq '0.0.0.0/0') { $strTarget = '' }
else {$strTarget = '-s ' . $ip }
if ($host eq '0.0.0.0/0') { $strHost = '-i eth0' }
else { $strHost = '-d ' . $host }
if ($which = in_array('state', @args)) {
$strState = '-m state --state ' . $args[$which];
}
print "iptables -D INPUT $strTarget $strHost $strState -p $protokoll --dport $port -j $method\n";
system("iptables -D INPUT $strTarget $strHost $strState -p $protokoll --dport $port -j $method");
}
}
}
foreach $rule(@newRules) {
print $rule . "\n";
system($rule);
}
sub in_array() {
my $val = shift(@_);
$i = 1;
foreach $elem(@_) {
if($val eq $elem) {
return $i;
}
$i++;
}
return ;
}lass ich als 10 minuetigen cron laufen ;)
Ich kenn mich in Perl nicht aus, aber wenns geht, dann Glückwunsch !
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.