Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Stoi sobie serwer a na nim bind i transparent proxy. (wszystko działa)
Chcę zmienić kolejkowanie ze skryptu BiExi na IMQ. (skrypt BiExi nie trzyma uploadu)
Nastrugałem sobie takie coś na podstawie Jej skryptu:
#!/usr/bin/perl #eth0 - wyjście do LAN #eth1 - wyjscie na swiat # zmienne $max_upload = 500; $max_download = 6100; $cid = 5; $handl = 320; open (PLIK_SHIT, "/etc/upierdalacz/upierdalacz.list")or die "open $alert_file: $!\n"; { sleep 1; if (seek(PLIK_SHIT,0,1)) { print "--------------------------------------------- \n"; print " UPLOAD \n"; print "--------------------------------------------- \n"; system "ip link set imq0 up"; print "------- kasowanie imq0 -------\n"; system "qdisc del dev imq0 root"; print "OK\n"; system "tc qdisc add dev imq0 root handle 1: htb default 10"; system "tc class add dev imq0 parent 1: classid 1:1 htb rate $max_uploadkbit ceil $max_uploadkbit quantum 8533"; print "--------------------------------------------- \n"; print " DOWNLOAD \n"; print "--------------------------------------------- \n"; system "ip link set imq1 up"; print "------- kasowanie imq0 -------\n"; system "qdisc del dev imq1 root"; print "OK\n"; system "tc qdisc add dev imq1 root handle 1: htb default 10"; # zaklada glowna klase z maksymalna mozliwa przepustowoscia na glownej kolejce. system "tc class add dev imq1 parent 1: classid 1:1 htb rate $max_downloadkbit ceil $max_downloadkbit quantum 8533"; while (<PLIK_SHIT>) { chop; next if (/^\s*$/); # wyjazd z pustymi liniami next if (/^#/); # wyjazd z # if (/(\d+\.\d+\.\d+\.\d+) \; (\d+) \; (\d+) \; (\d+) \; (\d+) \; (\S+)/) { print "| Kolejka na imq0 RUCH PRZYCHODZACY dla IP:$1 rate: $2kbit cail: $3kbit\n"; system "tc class add dev imq0 parent 1:1 classid 1:$cid htb rate $2kbit ceil $3kbit quantum 3 burst 10k"; system "tc filter add dev imq0 parent 1: protocol ip prio 2 u32 match ip src $1 flowid 1:$cid"; system "tc qdisc add dev imq0 parent 1:$cid handle $handl:0 sfq perturb 10"; # print "| Kolejka na imq1 RUCH WYCHODZACY dla IP:$1 rate: $4kbit cail: $5kbit\n"; system "tc class add dev imq1 parent 1:1 classid 1:$cid htb rate $4kbit ceil $5kbit quantum 3 burst 10k"; system "tc filter add dev imq1 parent 1: protocol ip prio 2 u32 match ip dst $1 flowid 1:$cid"; system "tc qdisc add dev imq1 parent 1:$cid handle $handl:0 sfq perturb 10"; print "koniec petli \n"; $cid = $cid + 1; $handl = $handl + 1; } } # end while } # end if seek } # end for close PLIK_SHIT; print "tworzenie wejscia na imq0\n"; system "iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 0"; print "tworzenie wyjscia na imq1\n"; system "iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 1"; print "----utworzenie kolejek zakonczone----- \n";
Niby kolejkuje, ale internet przestaje działać na klientach wewnątrz sieci. Może ktoś pomoże?
Ostatnio edytowany przez Marek_boss (2009-07-27 16:03:36)
Offline
zacznij markować ruch z squida przez znakowanie pakietów TOS
Offline
Masz wersje trzymajaca upload + nat by nie trzeba bylo rodzielac na 2 pliki tylko wszystko w jednym
#!/usr/bin/perl # # NAT + QOS old VER by BiExi # # $debugowanie = 0; # eth0 - lan $userow = 0; $zewn = 0; $zablokowanych = 0; $cid = 5; $handl = 320; $zrodlo = 600; # -----------[ poczatkowe reguly ]----------- system "echo 1 > /proc/sys/net/ipv4/ip_forward"; system "/bin/echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts"; system "/bin/echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route"; system "/bin/echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects"; system "/bin/echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses"; system "echo 1 > /proc/sys/net/ipv4/tcp_timestamps "; system "echo 24192 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max"; system "echo 16024 > /proc/sys/net/ipv4/tcp_max_syn_backlog "; system "echo 1 > /proc/sys/net/ipv4/tcp_rfc1337 "; system "echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc "; system "echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses"; system "echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close_wait"; system "echo 360 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established"; system "echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout"; system "echo 2400 > /proc/sys/net/ipv4/tcp_keepalive_time"; system "echo 0 > /proc/sys/net/ipv4/tcp_window_scaling"; system "echo 0 > /proc/sys/net/ipv4/tcp_sack"; system "echo 20 > /proc/sys/net/ipv4/ipfrag_time"; system "echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog"; system "/bin/echo 1024 > /proc/sys/net/ipv4/neigh/default/gc_thresh1"; system "/bin/echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh2"; system "/bin/echo 8192 > /proc/sys/net/ipv4/neigh/default/gc_thresh3"; system "iptables -F"; system "iptables -X"; system "iptables -Z"; system "iptables -t nat -X"; system "iptables -t nat -F"; system "iptables -t mangle -F"; system "iptables -t mangle -X"; system "iptables -P INPUT ACCEPT"; system "iptables -P FORWARD DROP"; system "iptables -P OUTPUT ACCEPT"; system "iptables -A INPUT -i lo -j ACCEPT"; system "iptables -A FORWARD -o lo -j ACCEPT"; system "iptables -A OUTPUT -o lo -j ACCEPT"; system "tc qdisc del root dev imq1 2> /dev/null"; system "tc qdisc del root dev imq0 2> /dev/null"; system "ip link set imq0 down"; system "ip link set imq1 down"; system "ip link set imq0 up"; system "ip link set imq1 up"; system "iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0 "; # Download system "iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 1"; # Upload system "iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0"; # Download system "iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 1"; # Upload system "iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP"; system "iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP"; system "iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP"; system "iptables -A INPUT -m conntrack --ctstate INVALID -p tcp --tcp-flags ! SYN,RST,ACK,FIN,PSH,URG SYN,RST,ACK,FIN,PSH,URG -j DROP"; system "iptables -A INPUT -p tcp -j ACCEPT -m state --state ESTABLISHED,RELATED"; system "iptables -A FORWARD -p tcp -j ACCEPT -m state --state ESTABLISHED,RELATED"; system "iptables -A OUTPUT -p tcp -j ACCEPT -m state --state ESTABLISHED,RELATED"; system "iptables -A INPUT -p udp -j ACCEPT -m state --state ESTABLISHED,RELATED"; system "iptables -A FORWARD -p udp -j ACCEPT -m state --state ESTABLISHED,RELATED"; system "iptables -A OUTPUT -p udp -j ACCEPT -m state --state ESTABLISHED,RELATED"; system "iptables -A INPUT -p icmp -j ACCEPT -m state --state ESTABLISHED,RELATED"; system "iptables -A FORWARD -p icmp -j ACCEPT -m state --state ESTABLISHED,RELATED"; system "iptables -A OUTPUT -p icmp -j ACCEPT -m state --state ESTABLISHED,RELATED"; system "iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED"; system "iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED"; system "iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED"; # - -- ---[ ruch przychodzacy ]--- -- - system "tc qdisc del dev imq1 root handle 1:0 htb 2> /dev/null > /dev/null"; system "tc qdisc add dev imq1 root handle 1:0 htb"; system "tc class add dev imq1 parent 1:0 classid 1:1 htb rate 100mbit ceil 100mbit quantum 1024"; system "tc class add dev imq1 parent 1:1 classid 1:2 htb rate 17mbit ceil 22mbit quantum 1024"; system "tc class add dev imq1 parent 1:1 classid 1:3 htb rate 17mbit ceil 22mbit quantum 1024"; # - -- ---[ ruch wychodzacy ]--- -- - system "tc qdisc del dev imq0 root handle 1:0 htb 2> /dev/null > /dev/null"; system "tc qdisc add dev imq0 root handle 1:0 htb default 10"; system "tc class add dev imq0 parent 1:0 classid 1:1 htb rate 15mbit ceil 15mbit quantum 1024"; system "tc class add dev imq0 parent 1:1 classid 1:2 htb rate 10mbit ceil 10mbit quantum 1024"; system "tc class add dev imq0 parent 1:1 classid 1:4 htb rate 200kbit ceil 200kbit quantum 1024"; # wjazd dla NAT'u dla wapow z za devila # -----------[ route_ip.list ]------------- system "echo > /etc/ethers"; # -----------[ userlista ]------------- open (PLIK_MISKI, "/root/netsys/users.list") or die "open $alert_file: $!\n"; # tak jak tail -f :)... # for (;;) { sleep 1; if (seek(PLIK_MISKI,0,1)) { while (<PLIK_MISKI>) { chop; next if (/^\s*$/); # wyjazd z pustymi liniami next if (/^#/); # wyjazd z # if (defined($debugowanie)) # gdy tryb debugowania wyswietlaj wszystko {print "$_\n";} if (/\[\*\*\]\s+(.*)\s+\[\*\*\]/) { $type=$1; } if (/(\S+\:\S+\:\S+\:\S+:\S+:\S+) \; (\d+\.\d+\.\d+\.\d+) \; (\d+\.\d+\.\d+\.\d+) \; (\S+) \; (\S+) \; (\S+) \; (\d+) \; (\d+) \; (\d+) \; (\S+)/) { # przyklad xx:xx:xx:xx:xx:xx ; 10.10.10.11 ; 10.10.10.1 ; ok ; imq0 ; pvc0 ; 40 ; 130 ; 60 ; jan kowalski &mack_sel ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10); } } # end while } # end if seek } # end for close PLIK_MISi; print "|------------------ --- --- - - - - - - \n"; print "| INFORMACJE PO PRZELADOWANIU \n"; if ($ARGV[0] eq "noc") { print "| Tryb pracy: NOCNY \n"; } else { print "| Tryb pracy: DZIENNY \n"; } print "| Userow ktorym przydzielono net: $userow \n"; print "| Userow z zewn IP: $zewn \n"; print "| userow zablokowanych: $zablokowanych \n"; print "|------------------ --- --- - - - - - - \n"; sub mack_sel { my ($mac, $ip, $brama, $st, $iface, $ifo, $mind, $maxd, $maxu, $nazwisko) = @_; if ($st eq "ok") { if ($ARGV[0] eq "noc") { $maxd = $maxd + 400; } # download system "tc class add dev imq1 parent 1:2 classid 1:$cid htb rate $mind\kbit ceil $maxd\kbit burst 1024Kb"; system "tc filter add dev imq1 protocol ip preference 2 parent 1:0 u32 match ip dst $ip flowid 1:$cid"; system "tc qdisc add dev imq1 parent 1:$cid handle $handl:0 esfq "; # upload system "tc class add dev imq0 parent 1:2 classid 1:$zrodlo htb rate 10kbit ceil $maxu\kbit"; system "tc filter add dev imq0 parent 1:0 protocol ip prio 1 u32 match ip src $ip flowid 1:$zrodlo"; system "tc qdisc add dev imq0 parent 1:$zrodlo handle $zrodlo:0 esfq "; system "/sbin/iptables -t nat -A POSTROUTING -s $ip -j MASQUERADE"; system "iptables -I FORWARD -s $ip -p tcp --syn -m connlimit --connlimit-above 110 --connlimit-mask 32 -j REJECT"; system "/sbin/iptables -A FORWARD -s $ip -j ACCEPT"; $cid = $cid + 1; $handl = $handl + 1; $zrodlo = $zrodlo + 1; $userow = $userow + 1; } if ($st eq "bl") { system "/sbin/iptables -t nat -A POSTROUTING -s $ip -j MASQUERADE"; system "/sbin/iptables -A FORWARD -m mac --mac-source $mac -s $ip -p udp --dport 53 -j ACCEPT"; system "/sbin/iptables -A FORWARD -m mac --mac-source $mac -p tcp --dport 333 -s $ip -d $brama -j ACCEPT"; system "/sbin/iptables -A PREROUTING -t nat -s $ip -p tcp --dport 1:52 -j DNAT --to $brama:333"; system "/sbin/iptables -A PREROUTING -t nat -s $ip -p tcp --dport 54:65535 -j DNAT --to $brama:333"; $zablokowanych = $zablokowanych + 1; } system "echo $mac $ip >> /etc/ethers"; } system "arp -f";
Mam nadzieje ze nie wycielam za wiele
przykad pliku [b]/root/netsys/users.list[/b]
00:30:AD:83:04:28 ; 172.16.0.137 ; 172.16.0.1 ; ok ; eth0 ; eth1 ; 60 ; 570 ; 250 ; Jan_Kowalski 00:30:CC:83:04:26 ; 172.16.0.138 ; 172.16.0.1 ; bl ; eth0 ; eth1 ; 60 ; 570 ; 250 ; Marek_Kowalki 00:30:CD:23:04:23 ; 172.16.0.139 ; 172.16.0.1 ; ok ; eth0 ; eth1 ; 60 ; 570 ; 250 ; Anna_Nowak 00:40:05:FF:4C:7F ; 172.16.0.145 ; 172.16.0.1 ; ok ; eth0 ; eth1 ; 60 ; 570 ; 250 ; Kszystof_Szczecina_z_rowow_malych
Offline
Dzięki, jak znajdę chwilkę to przetestuje :)
O co chodzi z tym trybem nocnym i do czego to służy?
wjazd dla NAT'u dla wapow z za devila # -----------[ route_ip.list ]------------- system "echo > /etc/ethers"; # -----------[ userlista ]------------- open (PLIK_MISKI, "/root/netsys/users.list") or die "open $alert_file: $!\n"; # tak jak tail -f :)... # for (;;) { sleep 1; if (seek(PLIK_MISKI,0,1)) { while (<PLIK_MISKI>) { chop; next if (/^\s*$/); # wyjazd z pustymi liniami next if (/^#/); # wyjazd z # if (defined($debugowanie)) # gdy tryb debugowania wyswietlaj wszystko {print "$_\n";} if (/\[\*\*\]\s+(.*)\s+\[\*\*\]/) { $type=$1; } if (/(\S+\:\S+\:\S+\:\S+:\S+:\S+) \; (\d+\.\d+\.\d+\.\d+) \; (\d+\.\d+\.\d+\.\d+) \; (\S+) \; (\S+) \; (\S+) \; (\d+) \; (\d+) \; (\d+) \; (\S+)/) { # przyklad xx:xx:xx:xx:xx:xx ; 10.10.10.11 ; 10.10.10.1 ; ok ; imq0 ; pvc0 ; 40 ; 130 ; 60 ; jan kowalski &mack_sel ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10); } } # end while } # end if seek } # end for close PLIK_MISi;
Ostatnio edytowany przez Marek_boss (2009-07-30 09:17:16)
Offline
Jest jakiś szczególny powód dla którego jest dwa razy to samo?
system "iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0 "; # Download system "iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 1"; # Upload system "iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0"; # Download system "iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 1"; # Upload
I do czego to służy?
# wjazd dla NAT'u dla wapow z za devila # -----------[ route_ip.list ]------------- system "echo > /etc/ethers";
Ostatnio edytowany przez Marek_boss (2009-08-01 08:55:16)
Offline
do 1. - tam byly 2 interfejsy dodatkowe ja na szybko przerabialam to zostalo :]
do 2. to czysci plik /etc/ethers w ktorym puzniej skrypt wpisuje IP i mac miska nastepnie an samym koncuppliku masz polecenie arp -f ktore na podstawie tego pliku robi statyczna tablice arp
Offline
Dzięki za tak szybką odpowiedź.
# - -- ---[ ruch przychodzacy ]--- -- - system "tc qdisc del dev imq1 root handle 1:0 htb 2> /dev/null > /dev/null"; system "tc qdisc add dev imq1 root handle 1:0 htb"; system "tc class add dev imq1 parent 1:0 classid 1:1 htb rate 100mbit ceil 100mbit quantum 1024"; system "tc class add dev imq1 parent 1:1 classid 1:2 htb rate 17mbit ceil 22mbit quantum 1024"; system "tc class add dev imq1 parent 1:1 classid 1:3 htb rate 17mbit ceil 22mbit quantum 1024"; # - -- ---[ ruch wychodzacy ]--- -- - system "tc qdisc del dev imq0 root handle 1:0 htb 2> /dev/null > /dev/null"; system "tc qdisc add dev imq0 root handle 1:0 htb default 10"; system "tc class add dev imq0 parent 1:0 classid 1:1 htb rate 15mbit ceil 15mbit quantum 1024"; system "tc class add dev imq0 parent 1:1 classid 1:2 htb rate 10mbit ceil 10mbit quantum 1024"; system "tc class add dev imq0 parent 1:1 classid 1:4 htb rate 200kbit ceil 200kbit quantum 1024";
Ostatnie pytanie:
system "tc class add dev imq1 parent 1:1 classid 1:2 htb rate 17mbit ceil 22mbit quantum 1024"; system "tc class add dev imq1 parent 1:1 classid 1:3 htb rate 17mbit ceil 22mbit quantum 1024";
Rozumiem, że 22MB do Download łącza?
Dlaczego 1:2 i 1:3 są takie same?
system "tc class add dev imq0 parent 1:0 classid 1:1 htb rate 15mbit ceil 15mbit quantum 1024";
Co to jest to 15MB?
system "tc class add dev imq0 parent 1:1 classid 1:4 htb rate 200kbit ceil 200kbit quantum 1024";
To jest upload dla usera?
Offline
U nie on nie działa :(
W skrypcie podałaś:
{ # przyklad xx:xx:xx:xx:xx:xx ; 10.10.10.11 ; 10.10.10.1 ; ok ; imq0 ; pvc0 ; 40 ; 130 ; 60 ; jan kowalski
a jako przykładowy users.list:
00:30:AD:83:04:28 ; 172.16.0.137 ; 172.16.0.1 ; ok ; eth0 ; eth1 ; 60 ; 570 ; 250 ; Jan_Kowalski
Który format jest właściwy i co oznacza pvc0?
Pytanie:
Czy taki kod powinien przepuścić bez kolejkowania internet przez taki układ:
LAN ---- eth0 (masquarade) server eth1 ------ świat
ip link set imq0 up ip link set imq1 up iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0 iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 1
Ostatnio edytowany przez Marek_boss (2009-08-01 14:21:38)
Offline
To nie działa :(
$brama to jest brama dla usera (w tym przypadku eth0) czy dla serwera (w tym wypadku adres modemu po strone eth1)?
Ostatnio edytowany przez Marek_boss (2009-08-01 14:25:19)
Offline
Jeszcze jedno:
system "iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0"; # Download system "iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 1"; # Upload
eth0 oznacza tutaj interface wewnętrzny czy zewnętrzny?
Ostatnio edytowany przez Marek_boss (2009-08-01 18:09:19)
Offline
Witam
skrypt nie działa dla interface-u zewnętrznego (nie przycina pasma) a na wewnętrznym strasznie wolno działa. Strasznie długo jest w statusie "Ustalanie adresu serwera np. "www.money.pl".
Gdzie leży problem?
Ostatnio edytowany przez Marek_boss (2009-09-09 10:33:33)
Offline
Time (s) | Query |
---|---|
0.00009 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00098 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.141.35.27' WHERE u.id=1 |
0.00061 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.141.35.27', 1732276655) |
0.00047 | SELECT * FROM punbb_online WHERE logged<1732276355 |
0.00057 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=14672 AND t.moved_to IS NULL |
0.00007 | SELECT search_for, replace_with FROM punbb_censoring |
0.00325 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=14672 ORDER BY p.id LIMIT 0,25 |
0.00080 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=14672 |
Total query time: 0.00688 s |