Kasutaja:Jj
Personaalne jj arendusnurk ehk sodinurk kuutõrvajas
NB Mitte puududa
Must materjal
- jj sodinurk testimiseks ja kiireteks ideedeks
- pppoe kiire
- Haldustarkvara
- terminal server FreeBSD näitel
- atacontrol
- apache ssl täiendust vajav
- vinum gvinum ja geom
- rrdool snmp ja süsteemse info alusel graafikute joonistamine
Kasutades rida
set optimization aggressive
Muudetakse ainult tcp timeoute. Vaikimisi timeoudid FreeBSD 8.2 opsüsteemis on
*TIMEOUTS: Normal Aggressive Conservative tcp.first 120s 30s 3600s tcp.opening 30s 5s 900s tcp.established 86400s 18000s 432000s tcp.closing 900s 60s 3600s tcp.finwait 45s 30s 600s tcp.closed 90s 30s 180s tcp.tsdiff 30s 10s 60s
Limits püsib kõigil
LIMITS: states hard limit 10000 src-nodes hard limit 10000 frags hard limit 5000 tables hard limit 1000 table-entries hard limit 100000
Ei muutu samuti järgnevad asjad
adaptive.start 6000 states adaptive.end 12000 states src.track 0s udp.first 60s udp.single 30s udp.multiple 60s icmp.first 20s icmp.error 10s other.first 60s other.single 30s other.multiple 60s frag 30s interval 10s
Muutujate seletus
set timeout tcp.first - millal handsake tehakse, kaua oodatakse set timeout tcp.closed - kui väike sulgetakse aeglaste ühendustega kiirelt
Näide, kuidas võib valede seadistustega serveri võimekust hakkama saada kahjustada.
set timeout udp.multiple 2 seadistades
timeout.2 teeb kõvasti kahju. Kõik õnnestunud kustutakse kahe sekundiga ära ebaõnnestunuid hoitakse alles 60 sekundit ja kauem. Läbustati tabelit.
Järgnev seadistus on mõeldud nimeserveri jaoks, palju trafficut udp peal ja tillukesed paketid. timeoudid väiksemad
set optimization aggressive
set timeout tcp.established 7200
set timeout { udp.first 20, udp.single 5, udp.multiple 30 }
set limit states 1000000
first=üks server üheainsa paketiga, pagan teab mis nendega saab single=üks server mitu paketti aga vastust pole saanud. Timeout väikse, et doss attack ei tõmbaks täis multiple= õnnestunud sessioon, mida võiks kauem hoida, väärtuslikum.
Nimeserveri spetsfiifikaks on, et kliendi poolt tehakse 1 päring ja siis ei puututa kaua. Teistel masinatel on teissugune spetsiifika. Andmebaasiserver näiteks. Seal pole vaja agresiivset optimiseerimist. Kümmekond masinat kasutavad pole vaja olekute tabelit sättida. Konservatiivsed seaded.
Veebiserver näiteks paljude veebidega. Peaks vaatama rohkem tcp timeoute, olekute tabel võiks olla suur.
Kas agresiivne või normal on otsustamise küsimus. Agresiivne masinale mil kliente palju laiali. Kui kliente keskmiselt mõistlik arv ja kõik mõistlike päringutega ei pea olema agresiivne.
Veel töötavad NFS/Radius udp peal, muudel serveritel tuleks seadistada rohkem TCP numbreid.
Vaja vaadata mis defauldid eri poliitikatega (agresiivne-passiivne)
Sageli ühenduste aegumisd ei paista niiasma välja. St ühendus ei pruugi katkeda vaid ühendus tuuakse üles uue paketi saabumisel kliendilt. Tehakse lihtsalt märkamatult taustal rohkem tööd näiteks state tabeliga. See paistab välja vaid siis kui suurem ddos rünnak serveri/seadme suunas.
Kui tulemüür töötab nö dioodina, et välja lubab kõiki aga sisse on filtreeritud võib samas ühendus ka puhtalt katki minna state maha viskamisega.
Igal interfacel oma tabel
set state-policy if-bound
Mõned abiks olevad programmid
- mplex -- Command-line utility that combines multiple audio and video streams into an mpeg file.
- dvdauthor -- Command-line utility that makes a DVD filesystem from mpeg files.
- growisofs -- Command-line CD/DVD burning utility.
- tovid -- A collection of command-line scripts that automate detection of video type and transcoding to mpeg format.
- avidemux2 -- GUI for extracting audio and video.
- DVD::rip -- GUI for ripping, copying, burning DVDs.
- K3B -- KDE GUI for CD/DVD burning.
Kuidas konvertida DVD9 ümber DVD9 formaati
k9copy
http://www.dvd-guides.com/guides/linux/213-how-to-copy-dvd9-to-dvd5-using-k9copy
https://help.ubuntu.com/community/K9Copy
http://linux-hacks.blogspot.com/2008/06/converting-dvd9-to-dvd5-in-linux.html
http://www.linuxquestions.org/questions/linux-software-2/dvd9-to-dvd5-guide-244913/
Kuidas konvertida DVD ümber AVI formaati
http://www.togaware.com/linux/survivor/AcidRip_Simple.html
http://fixounet.free.fr/avidemux/
Kuidas konvertida AVI ümber DVD formaati
http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/AVI_to_DVD
MySQL-i projektist kõrvalharuna välja kasvanud Drizzle on piisavalt küpseks saanud ning jõudnud avalikkuse ette. Tegemist on toimiva alternatiiviga Oracle omanduses olevale MySQL-ile - üsnagi sarnaselt OpenOffice.org ja LibreOffice vastasseisule. Nüüd on ümberpakendatud tasuta andmebaasimootor valmis ning Drizzle arendajad plaanivad seda pakkuma hakata kõikidele Linuxi distributsioonidele.
http://www.minut.ee/article.pl?sid=11/03/17/2251218&mode=nested&threshold=-1 http://en.wikipedia.org/wiki/Drizzle_(database_server) http://drizzle.org/
Täienduseks veel, et portsus on üllatuseks täiesti olemas http://www.freebsd.org/cgi/url.cgi?ports/databases/drizzle/pkg-descr Gentoos on olemas kolm versiooni (kõik hetkel maskitud aga see pole meid varem kunagi seganud). Debiani/Ubuntu peale ei hakanud vaatamagi, kui juba Gentoos ja FreeBSDs olemas siis imestaksin väga kui seal pole :)
Debianis on Drizzle pakk aasta jagu olemas olnud, aga stabiilsesse riliisi pole seda siiski veel lisatud. Drizzle on ikka väga erinev arendus juba, seda lihtsalt MySQL-i asemel ei julgeks kasutada.
Kui jõudluseprobleemid vaevavad, siis drop-in alternatiividena tasuks vaadata neid asju: http://www.percona.com/software/percona-server/ http://mariadb.org/ http://ourdelta.org/
By default, most disk drives cache writes in internal memory before actually committing them to the disk.
This behavior can make it more likely to trigger inconsistencies on a filesystem using soft updates in case of a power failure. One can disable this feature by adding the following in /boot/loader.conf;
Set ata devices to write-through cache.
hw.ata.wc="0"
If InnoDB is used on a ZFS file system, the following tuning are necessary: On the ZFS filesystem block size will be chosen to match the 16kB used by InnoDB: This operation must be done before MySQL start for the first time or create files, otherwise the block size used will be the one configured when the various files are created.
zfs set recordsize=16K system/services/mysql
sysctl tuunimised FreeBSD süsteemis
Allow normal users to mount filesystems.
vfs.usermount=1
Speed up disk reads.
vfs.read_max=32
Enable port forwarding (for NAT in pf.conf)
net.inet.ip.forwarding=1
Mõned vajalikud rc.confi seadistused
smartd_enable="YES" # Check Harddisk health blanktime="NO" # Wait forever
Selleks, et reboodil ei jääks fsck ootama y klahvi vajutust
fsck_y_enable="YES"
The boot process can be customized in the /boot/loader.conf file, to show a nice menu with beastie:
- Boot menu
loader_logo="beastie"
Packet filter ja IPV6
Kui reeglis ei ole sõna inet, siis käib sama reegel nii ipv4 kui ipv6 kohta. Näiteks need:
block in log quick on $ext_if from <global_deny_in> label "global_deny_in" block in log quick on $ext_if from any to <server_block_out> block log on $kontor_if all label "blocked_kontor"
Aadresside võrdlemine on pf-il loomulikult intelligentne, s.t. ipv4 aadress tähendab ühtlasi ka ipv4 protot.
Veebiserverite võrdlus
http://nbonvin.wordpress.com/2011/03/14/apache-vs-nginx-vs-varnish-vs-gwan/
Linuxi wõrgutuuning
Kõigepealt parema kiiruse saavutamiseks vajalik. Optimeeritud puhuks, kus mõlemad pooled on gigabiti otsas. Mõju on kohati päris suur, näiteks testi puhul kasvas kiirus 500Mbit/s -> 750 MBit/s võrreldes vaikeväärtustega.
TCP akna mõõdud. Normaaljuhul ei tohiks min väärtust nii suureks keerata (default on 4k) ja max väärtuse veel suuremaks ajamisest pole minu katsetuste põhjal kasu. Ühest küljest konservatiivne ja teisest küljest mitteahistav valik võiks olla 4k <midagi> 2M.
net.ipv4.tcp_rmem = 131072 1048576 2097152 net.ipv4.tcp_wmem = 131072 1048576 2097152 net.core.rmem_default = 1048576 net.core.wmem_default = 1048576 net.core.rmem_max = 2097152 net.core.wmem_max = 2097152
Vastuvõtva järjekorra suurus (saatmisjärjekord seevastu peaks olema lühike, seal on liigne puhverdamine kahjulik)
net.core.netdev_max_backlog = 10000
Need on jällegi gigabitist maksimumi pigistamiseks, tavaolukorras las jäävad pigem sisselülitatuks.
net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_dsack = 0 net.ipv4.tcp_sack = 0
Serveri puhul on suure ühenduste arvu teenindamiseks vaja suuremaks keerata järgmisi asju:
fs.file-max net.ipv4.tcp_max_orphans net.ipv4.tcp_max_tw_buckets
Sõltuvalt masinast
net.ipv4.tcp_mem
Ja kui iptablesi reeglid on conntracki käima tõmmanud siis ka
net.netfilter.nf_conntrack_max
Lisaks veel, interruptide sidumise konkreetse tuuma külge teeb tavaliselt ära irqbalance, ise kruvimise huvi korral saab seda /proc/irq kaudu. Protsesside sidumiseks tuumaga on käsud taskset ja schedtool -- viimane oskab ka palju muud huvitavat.
Sorteerime top 10 suuremat kausta
$ du | sort -nr | head -10
Universaalne frontend haldamiseks, mis võib reegleid genereerida mitme
erineva backendi tarbeks.
http://www.fwbuilder.org/
Linuxi otsa arendatav ruuteri/tulemüüri produkt. Core on täitsa prii. http://www.vyatta.com/downloads/index.php
https://www.slashorg.net/read-141-IPv6-routing-using-FreeBSD.html näiteks SSH lubamine: pass in on $ipv6_if inet6 proto tcp from $ext_server to any port 22 keep state
Polling http://www.cyberciti.biz/faq/freebsd-device-polling-network-polling-tutorial/
Kaks IP aadressi kahe erineva GW läbi ehk erinevatest võrkudest
- IP 193.40.0.75 netmask 255.255.255.240
- ruuter 193.40.0.65
- võrk 193.40.0.0/28
# cat /etc/conf.d/local.start # teine ip aadress ifconfig eth2 193.40.0.75 netmask 255.255.255.240 ip route add 193.40.0.0/28 dev eth2 src 193.40.0.75 table admin ip route add default via 193.40.0.65 dev eth2 table admin ip rule add from 193.40.0.75/32 table admin ip rule add to 193.40.0.75/32 table admin
http://www.cyberciti.biz/faq/freebsd-device-polling-network-polling-tutorial/ polling
http://rlworkman.net/howtos/OpenBSD_pf_guide.html hea manual
Ssh läbustajad
Pf.confi täiendasin järgnevalt:
table <jobud> persist
block log quick from <jobud>
pass in on $ext_if proto tcp from any to { $my_addrs } port 22 keep state (max-src-conn 10, max-src-conn-rate 10/5, overload <jobud> flush global)
# cat /var/log/auth.log | grep 89.216.115.128 Feb 27 18:32:15 muheleja sshd[64673]: Did not receive identification string from 89.216.115.128 Feb 27 18:37:40 muheleja sshd[65023]: Invalid user PlcmSpIp from 89.216.115.128 Feb 27 18:37:41 muheleja sshd[65025]: Invalid user plcmspip from 89.216.115.128 Feb 27 18:37:42 muheleja sshd[65027]: Invalid user plcmspip from 89.216.115.128 Feb 27 18:37:44 muheleja sshd[65029]: Invalid user db2inst1 from 89.216.115.128 Feb 27 18:37:46 muheleja sshd[65031]: Invalid user dasusr1 from 89.216.115.128 Feb 27 18:37:47 muheleja sshd[65033]: Invalid user ts from 89.216.115.128 Feb 27 18:37:49 muheleja sshd[65035]: Invalid user TeamSpeak from 89.216.115.128 Feb 27 18:37:51 muheleja sshd[65037]: Invalid user cisco from 89.216.115.128 Feb 27 18:37:52 muheleja sshd[65039]: Invalid user dream from 89.216.115.128 Feb 27 18:37:57 muheleja sshd[65041]: Invalid user spam from 89.216.115.128
Vaatame tabelit
# pfctl -t jobud -T show No ALTQ support in kernel ALTQ related functions disabled 89.216.115.128
http://prefetch.net/articles/monitoringpf.html pf tabelitest graafikute joonistamine.
http://en.wikipedia.org/wiki/DGen
http://undeadly.org/cgi?action=article&sid=20060927091645
http://www.probsd.net/pf/index.php/Main_Page
http://forge.mysql.com/wiki/MySQL_Proxy
databases/mysql-proxy
15.6.6.1: In load balancing, how can I separate reads from writes?
There is no automatic separation of queries that perform reads or writes to the different backend servers. However, you can specify to mysql-proxy that one or more of the “backend” MySQL servers are read only.
shell> mysql-proxy \ --proxy-backend-addresses=10.0.1.2:3306 \ --proxy-read-only-backend-addresses=10.0.1.3:3306 &
6.6.4: Can I run MySQL Proxy as a daemon?
Use the --daemon option. To keep track of the process ID, the daemon can be started with the --pid-file=file option to save the PID to a known file name. On version 0.5.x, the Proxy cannot be started natively as a daemon.
http://agiletesting.blogspot.com/2009/04/mysql-load-balancing-and-read-write.html
http://barkingiguana.com/2008/07/20/load-balanced-highly-available-mysql-on-ubuntu-804/
http://www.freebsd.org/cgi/man.cgi?query=ng_netflow&sektion=4&manpath=FreeBSD+6.0-RELEASE
kldload netgraph.ko
kldload ng_ether.ko
kldload ng_tee.ko
ngctl -f - << SEQ
mkpeer em0: tee lower left
name em0:lower tee
connect tee: em0: right upper
mkpeer tee: netflow left2right iface0
name tee:left2right netflow
connect tee: netflow: right2left iface1
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/89.252.34.107:3434
SEQ
http://hep.kbfi.ee/index.php/SITIO/SITIO
for (( i=0; i<10; i++ )); do killall -u kasutaja -s USR2 apache2; sleep 1200; done
Kui tahad ööpäev vanad kirjad ära visata, on vist lihtsam postfixi konfida
maximal_queue_lifetime (default: 5d) bounce_queue_lifetime (default: 5d)
- Tuleks sundida asutusi vastama tundmatutele kasutajatele 5XX koodiga. Värske näide:
F3B2F246B42 5420 Fri May 25 20:44:32 MAILER-DAEMON
(host mail.lavakas.ee[193.40.56.98] said: 450 4.1.1 <dwlavakasm@lavakas.ee>: Recipient address rejected: User unknown in local recipient table (in reply to RCPT TO command))
dwlavakasm@lavakas.ee
4XX tähendab, et meie vahendaja hoiab kirja mitu päeva alles ja üritab korduvalt sitta edasi saata.
PS. Igasugu ägedaid asju on võimalik teha, näiteks ICMP rate ära limiteerida - -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT (samamoodi saab TCP SYN floodi limiteerida)
Nüüd on leiutatud rünnakud, millega on võimalik eemalt võrgukaardi firmware üle võtta ja panna kaart tegema mida hing ihkab. Arusaadavalt on tarkvara sedasorti rünnakute vastu võimetu - nagu esimesena viidatud jutust lugeda võib, minnakse niimoodi rahulikult läbi ka armastatud CheckPointi tulemüürist.
http://www.links.org/?p=330 http://www.eusecwest.com/speakers.html#PhlashDance
Protsessi keskkond FreeBSD's
ps uewwwp 1403 ps: Process environment requires procfs(5) USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND root 1403 0.0 0.2 25520 6820 ?? S 2:06PM 0:00.29 /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf ymiseja# mount -t procfs proc /proc ymiseja# ps uewwwp 1403 USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND root 1403 0.0 0.2 25520 6820 ?? I 2:06PM 0:00.29 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin RC_PID=22 PWD=/ /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf
lihtne funktsioon, mis vahetab kaks faili omavahel:
function xchg {
if test -f "$1" -a -f "$2" ; then
if mv "$1" "tmp:xchg" && mv "$2" "$1" && mv "tmp:xchg" "$2"; then
echo " $1 <-> $2"
else
echo "Failed to xchg: $1 <-> $2"
fi
else
echo "Usage: xchg file1 file2"
fi
}
TMP automaatseks kustutamiseks FreeBSDs /etc/periodic.conf:
daily_clean_tmps_enable="YES" daily_clean_tmps_dirs="/var/tmp" daily_clean_tmps_days="7"
Tänapäeval loetakse turvaauguks, kui bind laseb rekursiivseid päringuid võõrastel teha. Soovitatakse
options {
allow-recursion { localnets; localhost; };
allow-query-cache { localnets; localhost; };
};
http://support.menandmice.com/jforum/posts/list/25.page
RH Enterprise Virtualization on KVM-i kommertsialiseeritud versioon, mida koos enterprais-haldusliidesega müüakse. Allpool viidatud dokument on aga huvitav selle poolest, et väidetavalt suudab mitme virtuaalmasina peale määritud rakendus riistvara ressursi paremini ära kasutada, kui samale rakendusele kogu riista otse kätte andes. http://www.redhat.com/f/pdf/rhev/DOC034R3-LAMP-Scaling.pdf
Kõrvataha panemiseks, kui kunagi vaja peaks olema. Mingi tegelane korjas netist kokku hunniku erinevaid regexpe ja testis neid kõiksugu korrektsete ja vigaste e-postiaadressite suhtes, et selgitada välja parimat: http://fightingforalostcause.net/misc/2006/compare-email-regex.php
Google uuring mäluvigadest http://www.zdnet.com/blog/storage/dram-error-rates-nightmare-on-dimm-street/638
Staatiline veeb
Kuskil oli sellest just hiljaaegu juttu, et see on uus trend. Nüüd komistasin ka mingi innovaatilise töövahendi otsa, mis põhimõtteliselt kasutab MVC põhimõtet sisu loomiseks, kuid genereerib nendest staatilised veebilehed, mis salvestatakse HTML-ina eraldi kausta. Kasutada saab kõiksugu aspekte, alates templaatidest, kuni partialite ja helperiteni välja.
http://staticmatic.rubyforge.org/
Veebiserveri testimise vahendid
1. ab http://httpd.apache.org/docs/2.2/programs/ab.html 2. httest http://htt.sourceforge.net/ 3. httperf http://code.google.com/p/httperf/ 4. webbench http://home.tiscali.cz/~cz210552/webbench.html 5. siege http://www.joedog.org/index/siege-home 6. jmeter http://kuutorvaja.eenet.ee/wiki/JMeter
To compress a big video file, movie.avi and split it into multiple files, each size up to 12MB,
rar a -m5 -v12m myarchive movie.avi
A list of files (myarchive.part1.rar, myarchive.part2.rar, ..) will be created in current directory. You may change the compression quality, -m5 is the best and the slowest, while -m0 do no compression at all (-m3 is default). If you prefer the old file naming style (myarchive.rar, myarchive.r00, myarchive.r01, ..), add one extra switch -vn before the archive name. To uncompress the files (myarchive.part1.rar, myarchive.part2.rar, ..),
rar e myarchive.part1.rar
Sissejuhatus
Bindi seadistus
Selleks ,et nimeserveris domeen siduda ipv6 aadressiga on vaja kasutada AAAA kirjet
Näiteks
www6 AAAA mingi_ipv6_aadress
http://forskningsnett.uninett.no/ipv6/IPv6hostsfreebsd.html
Lingid
http://www.eenet.ee/EENet/ipv6.html
http://www.ipv6.estpak.ee/?tunnel
http://math.ut.ee/~mroos/ipv6/ipv6fw.pdf
http://vallaste.ee/index.htm?Type=UserId&otsing=2308
http://www.hot.ee/mego1/materjalid/interneti_referaat.htm
http://www.hot.ee/raffas/ipv6fw.pdf
http://math.ut.ee/~mroos/ipv6/
http://www.inet6.dk/firewall.html
---
Võrk rc.conf
HOSTNAME="test_db" eth0="eth0 192.168.100.2 netmask 255.255.255.0 broadcast 192.168.100.255" INTERFACES=(eth0) gateway="default gw 192.168.100.1" ROUTES=(gateway)
Mitu kaarti
INTERFACES=(eth1 eth0)
Uuendab andmebaasi pakkidel
pacman -Syy
uuendused teeb
pacman -Su
Paketi paigaldamine
pacman -S openssh
sshd käivitamine
/etc/rc.d/sshd start
Info paketi kohta
# pacman -Si mysql Repository : extra Name : mysql Version : 5.1.54-1 URL : http://www.mysql.com/ Licenses : GPL Groups : None Provides : None Depends On : mysql-clients Optional Deps : perl-dbi perl-dbd-mysql Conflicts With : None Replaces : None Download Size : 7856.18 K Installed Size : 68804.00 K Packager : Andrea Scarpino <andrea@archlinux.org> Architecture : x86_64 Build Date : Mon 03 Jan 2011 06:14:49 PM EET MD5 Sum : 507d442b82e53eb09dbb37c3b3ad836a Description : A fast SQL database server
Mysql serveri installimiseks
# pacman -S mysql # /etc/rc.d/mysqld start && mysql_secure_installation
Vaikimisi seadistatud /etc/hosts.allow tühi ja hosts.deny kõiki ühendusi blokeerima.
/etc/rc.conf faili täiendada
DAEMONS=(syslog-ng network netfs crond mysqld sshd)
A Socket is the place where you plug in the CPU.
So normaly you use:
cores: 1
socket: 1
Not to beat the subject to death, but let me ask this as well. Assuming the sofrware license is for one CPU and in the computer I have 2 quad core CPUs. Can I tell KVM 1 CPU Socket with 8 Socket/Cores?
---
Use TCP syn-proxy for mysql port - normally when a client initiates a TCP connection to a mysql server, PF will pass the handshake packets between the two endpoints as they arrive. PF has the ability, however, to proxy the handshake. With the handshake proxied, PF itself will complete the handshake with the client, initiate a handshake with the server, and then pass packets between the two. The benefit of this process is that no packets are sent to the server before the client completes the handshake. This eliminates the threat of spoofed TCP SYN floods affecting the server because a spoofed client connection will be unable to complete the handshake.
pass in on $ext_if proto tcp from any to $mysql_server port 3306 flags S/SA synproxy state
Google tegi Apachele mooduli, mis sisaldab hunnikut filtreid lehekülgede järeltoimetamiseks, et brauserisse laadimine oleks kiirem:
- http://googlewebmastercentral.blogspot.com/2010/11/make-your-websites-run-faster.html
- http://code.google.com/intl/et-EE/speed/page-speed/docs/using_mod.html
- http://web-tech.ga-usa.com/2010/11/using-compiling-mod_pagespeed-for-apache-and-freebsd/
Host/Subnet Quantities Table
Class B Effective Effective # bits Mask Subnets Hosts ------- --------------- --------- --------- 1 255.255.128.0 2 32766 2 255.255.192.0 4 16382 3 255.255.224.0 8 8190 4 255.255.240.0 16 4094 5 255.255.248.0 32 2046 6 255.255.252.0 64 1022 7 255.255.254.0 128 510 8 255.255.255.0 256 254 9 255.255.255.128 512 126 10 255.255.255.192 1024 62 11 255.255.255.224 2048 30 12 255.255.255.240 4096 14 13 255.255.255.248 8192 6 14 255.255.255.252 16384 2 Class C Effective Effective # bits Mask Subnets Hosts ------- --------------- --------- --------- 1 255.255.255.128 2 126 2 255.255.255.192 4 62 3 255.255.255.224 8 30 4 255.255.255.240 16 14 5 255.255.255.248 32 6 6 255.255.255.252 64 2
C klass 193.40.45.0/24
- gw ise 193.40.45.1/245 (cisco)
- ruuteri esimene kaart 193.40.45.2/252 (2 aadressiga võrk, st niipalju läheb kaduma)
- ruuteri teine kaart 193.40.45.32/192 (62 aadressi)
- teisel kaardil olev klient 193.40.45.34/192 ja gw 193.40.0.32
Ja
gateway_enable="YES"
Traceroute
# traceroute www.ut.ee traceroute to www.ut.ee (193.40.5.73), 64 hops max, 52 byte packets 1 193.40.45.32 (193.40.45.32) 0.364 ms 0.373 ms 0.352 ms 2 193.40.45.1 (193.40.45.1) 0.785 ms 3 ut-gw1.bb.eenet.ee (193.40.133.210) 1.269 ms 1.189 ms 1.141 ms 4 sein.ut.ee (193.40.12.10) 1.088 ms 1.221 ms 1.203 ms 5 ak-gw.ut.ee (193.40.12.14) 1.171 ms 1.321 ms 1.051 ms 6 www.ut.ee (193.40.5.73) 1.135 ms 1.025 ms *
http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a00800a67f5.shtml lisalugemiseks klassidest ja ruutingust.
IPMI seadistamine FreeIPMI abil.
Salvestame hetke ipmi seadistusfaili kettale nimega ipmi.conf
# bmc-config --checkout --filename=ipmi.conf
Teeme muudatused failis ja laadime selle tagasi ipmi seadmesse
# bmc-config --commit -f ipmi.conf ERROR: Failed to commit `Lan_Conf:MAC_Address': Read Only Field
Errorit võib ignoreerida.
# bmc-config -D open -o --section=User2 Section User2 ## Give Username Username admin ## Give password or blank to clear. MAX 16 chars (20 chars if IPMI 2.0 supported). ## Password ## Possible values: Yes/No or blank to not set ## Enable_User ## Possible values: Yes/No Lan_Enable_IPMI_Msgs Yes ## Possible values: Yes/No Lan_Enable_Link_Auth Yes ## Possible values: Yes/No Lan_Enable_Restricted_to_Callback Yes ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access Lan_Privilege_Limit Administrator ## Possible values: 0-17, 0 is unlimited; May be reset to 0 if not specified ## Lan_Session_Limit ## Possible values: Yes/No SOL_Payload_Access No EndSection
I’ve got a FreeBSD system which is lacking some of the tools which I’ve gotten used to having, whether from Linux or Solaris.
I’ll often use the GNU tool seq to iterate through things on the command line… for example, if I’m going to ping 192.168.1.20-40, I might, at my bash prompt,
for i in `seq 20 40`; do ping 192.168.1.${i}; done
Quite handy, though FreeBSD doesn’t have it, and I haven’t installed whatever port contains it.
So… I’ll use jot, now that I’ve once again looked up what it is and how it works.
The equivalent line to that above?
for i in `jot 21 20`; do ping 192.168.1.${i}; done
Mis ubuntu serveril viga ?
Lühidalt saan seda ühe sõnaga öelda -- upstart :-)
Natukese pikemalt kirjeldades on lugu selline, et upstart käivitab teenuseid sõltuvalt teatud tingimustest (teiste tööde käivitamisest ja süsteemi olekust tingitud sündmused jms) ning võimalikult paralleelselt. Osad asjad aga hakkavad selle tulemusel aeg-ajalt katki minema.
Paar huvitavat bugi sel teemal: https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/543506?comments=all https://bugs.launchpad.net/ubuntu/+source/mountall/+bug/478392
Kirjutada tõrvajasse apache seadistamise probleemidest FreeBSD opsüsteemis.
Kasutaja loomise skript
adduser.sh
#!/usr/local/bin/bash
if [ "$ID" == "0" ]; then
echo Must be root for now.
exit 1
fi
echo "----- ----- ----- -----"
echo "kirjuta kasutajanimi:"
read username
echo "kirjuta grupinimi kuhu kasutaja lisatakse:"
read grp
echo "kirjuta ees ja perenimi:"
read userfullname
while [ $pass1 != $pass2 ]
do
echo "...."
echo "parool #1:"
read -s pass1
echo "parool #2:"
read -s pass2
done
echo $username $grp $userfullname # $pass1 $pass2
echo "----- ----- ----- -----"
cp /usr/home/samba/netlogon/k.bat /usr/home/samba/netlogon/"$username".bat
echo $pass1 | pw add user $username -c "$userfullname" -d "/usr/home/$grp/$username" -G $grp -m -s \
/usr/local/bin/bash -h0 (echo $pass1; echo $pass1 ) | smbpasswd -s -a $username
chmod 750 /usr/home/$grp/$username
Väikekooli arvutivõrku sobiv konf
Võrk ise
[ COMP1 ] [ COMP3 ]
| |
---+------+-----+------- em0 [ Server ] em0 -------- ( Internet )
|
[ COMP2 ]
tulemüüri fail meeles tuleb pidada, et reegleid tuleb kirjutada sellises järjestuses
- MAKROS. Makrod ehk anname maakeeli muutujatele väärtusi, näiteks
- TABLES, tabelid milles hoiame igasuguseid põnevaid ja pahasid IP aadresse
- GLOBAL OPTIONS globaalsed ühendustele seatavad seaded
- TRAFFIC NORMALIZATION
- QUEUEING RULES, liikluse prioritiseerimiseks mõeldud järjekorrad
- TRANSLATION RULES (ehk NAT)
- FILTER RULES, ehk siis reeglid mis keelvad ja lubavad ühendusi, näiteks lubame kõik liikluse igas suunas selliselt
pass in log all keep state pass out log all keep state
Reaalne seadistusfail
# välimine (rl0) ja sisemine (em0) võrguseade
ext_if="rl0"
int_if="em0"
icmp_types = "echoreq"
# arvutiklassi IP aadressid
klass="{192.168.1.201, 192.168.1.202, 192.168.1.203 }"
set skip on lo0
# set optimization high-latency # aeglastel võrkudel
set optimization aggressive
set timeout tcp.established 7200
set timeout { udp.first 20, udp.single 5, udp.multiple 30 }
set limit states 1000000 # vaikimisi 10000, pool miljonit ei tohiks tänapäeval mingi number olla
scrub in all
scrub out all random-id max-mss 1440
# suuname kogu veebiliikluse squid vahendusserverile
rdr on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128
# NAT välisvõrgust
nat on $ext_if from !($ext_if) -> ($ext_if:0)
# blokeerime esialgu kõik
block log all label "blocked"
# vaatame, et sisevõrgust saaks ühenduda vaid meie enda mailiserveriga, see vähendab rämpsposti teadmatut saatmist
pass in quick on $int_if inet proto tcp from $int_if:network to 192.168.1.1 port 25 keep state
block in quick on $int_if inet proto tcp from $int_if:network to any port 25
# blokeerime arvutiklassis toimuva õppetöö jaoks ühe ohtliku aadress :)
block in quick on $int_if inet proto tcp from $klass to 58.35.11.23
#spoofikaitse
antispoof for $ext_if inet
# lubame vaid ühe icmp tüübi, ehk pingi
pass in inet proto icmp all icmp-type $icmp_types
# avame serverile hulga porte teenuste kasutamiseks
pass in on $ext_if proto tcp from any to $ext_if port 22 keep state label "ssh"
pass in on $ext_if proto tcp from any to $ext_if port 80 keep state label "www"
pass in on $ext_if proto tcp from any to $ext_if port 25 keep state label "mail"
pass in on $ext_if proto tcp from any to $ext_if port 143 keep state label "imap"
pass in on $ext_if proto tcp from any to $ext_if port 443 keep state label "https"
pass in on $ext_if proto tcp from any to $ext_if port 993 keep state label "imaps"
# lubame välja kõik tcp ja udp ühendused
pass out on $ext_if all keep state
- normal - suitable for almost all networks.
- aggressive - aggressively expires connections from the state table. This can greatly reduce the *memory requirements on a busy firewall at the risk of dropping idle connections early.
- conservative - extremely conservative settings. This avoids dropping idle connections at the expense of greater memory utilization and slightly increased processor utilization.
high-latency
A high-latency environment (such as a satellite connection).
mis tähendab vist äärmiselt pikkasid paketiliikumise aegasid ja arvestab võimalike kadudega. "pfctl -s timeouts" peaks ära näitama mis erinevused ühel või teisel valikul on.
Parandusideed vormistamise mõttes:
1. rakendaksin selgelt vaikimisi block reeglid kõigil suundadel (st neljal suunal kui tal on kaks liidest)
2. kasutaksin tag'isid, nii on lihtsam tihedat tulemüüri kirjeldada
http://kuutorvaja.eenet.ee/wiki/Kahe_v%C3%B5rgukaardiga_aadressteisendav_tulem%C3%BC%C3%BCr
---
Jälle noSQL rindelt teateid, kuid seekord pisut teise suunitlusega.
GlusterFS alternatiivina võiks äkki kaaluda Facebooki arendatud Cassandrat: http://cassandra.apache.org/
Niipalju kui mina aru sain, siis see on neil (ja Diggil ja Twitteril ja Redditil jne) kasutusel, et talletada terabaite andmeid klastrisse, nii et see on kättesaadav igast nodest ja ka kirjutatav igast nodest (lihtsalt proxytakse, kuhu vaja), samas on selle peamine eesmärk skaleeruvus (O(1)) ja huvitaval kombel, tehnoloogilistel põhjustel on kirjutamine isegi kaks suurusjärku kiirem kui lugemine, mis võrreldes nt MySQL-iga on ka suurusjärgu võrra kiirem.
Cassandrale on pea kõigis levinuimates keeltes kõrgtaseme-teegid ja läbi Thrifti veel tosinale keelele madala-taseme teegid.
Tuunida saab CAP (Consistency, Availability, Partition tolerance) osas korraga kahe väärtuse nõuet, nt konsistentsuse vajaduse puhul nõuda, et 1/2 + 1 vajalikest koopiatest oleks alati kirjutatud, enne kui operatsioon lõpetab jne.
Kirjelduse järgi tundub, et Cassandra sobiks väga hästi klastris kasutamiseks, eriti juhul, kui igast nodest on vaja kogu andmehulgale kiiresti ligi pääseda.
Ainuke miinus on, et see tähendaks failidesse kirjutamise asemel pisukest progemistööd rakenduse arendajale. Esmane guugeldamine ei andnud ka tulemust, et keegi näiteks FUSE peal Cassandra failisüsteemiga valmis oleks saanud (mõnel oli vaid idee).
PS. kui failisüsteem oleks olemas, siis võiks isegi mõelda, et KVM masinate sisemised kettad niiviisi kokku ühendada ja moodustada terviklik storage masinate endi kõhus. Kui masinaid on piisavalt palju (nt 4-5) peaks selline süsteem isegi 1-2 hosti kokkuvarisemise üle elama.
---
Väga huvitav andmete salvestamise meetod on "dokumendiadmebaas", mille keyword guugeldamiseks on noSQL.
Tegemist on andmebaasidega, mis ei ole relatsioonilised, st objektide vahel ei ole otseselt seoseid, igaüks moodustab ise tervikliku dokumendi koos kõikide väärtustega. Andmebaas ei ole tihti normaalkujul (vahel vähendatakse normaalsust meelega - denormaliseerimine), objektid vastavad enamasti üks-ühele mingisuguse andmestruktuuriga programmeerimiskeeles - sellest dokument.
Näiteks sellistest: Redis, Memcached (kuigi see on rohkem cache, kui admebaas), MongoDB jt. Neist viimane on väga huvitav, kuna on iseenesest JavaScripti objektide hoidla (JSON), millega suhtlemine käib JavaScripti kaudu (loomulikult on sellele teegid kõikidesse peamistesse progekeeltesse ka olemas). Kiirustestides on ta ikka tohutult kiirem kui MySQL ja isegi Memcachedil sammub kannul või mõnes testis ka kiirem, olles samas ikkagi täisväärtuslik, indekseeritud andmebaas.
Kõige silmatorkavam erinevus relatsioonilise baasiga on selles, et kahel ühes "kollektsioonis" oleval objektil ei pruugi mitte ükski atribuut kokku langeda ja atrbuutide väärtused võivad olla mh ka massiivid.
Kes hakkab asja vastu lähemat huvi tundma, siis esimene segadust tekitav koht nende dokumentatsioonis oli minu jaoks Map/Reduce selgitus. See on MongoDB töövahend, mis keedab mune, peseb autot ja toob lapse lasteaiast ära. Kahjuks dokumentatsiooni järgi läks mul kaua aega, enne kui pihta sain, kuidas seda kasutada.
Map/Reduce kasutusvaldkonnaks on näiteks artiklite kogumi pealt kõigi tag-ide kogumi genereerimine (arvestades, et tagid on ilmselt artikli objekti sees olev massiiv).
Rubysti jaoks on alternatiivne selgitus: Map/Reduce on sama, mis Rubys on map/inject - map funktsioon käib üle kõigi leitud objektide ja tagastab neist igaühekohta mingi alternatiivse tulemuse; reduce funktioon käbi üle kõikide tagastatud tulemuste ja arvutab mingisuguse uue väärtuse nende pealt, kasutades selleks kaasa veetavat vahemuutujat (nagu inject).
Üks koht, kus seda katsetada annaks, olekski just see nn kesksüsteem, mis haldaks mingit tsentraalset objekti (asutus, isik, domeen, teenus vmt) ja koondaks linke ning andmeid meie teistest süsteemidest, mida me ükskord arutasime. Sel puhul oleks just abi dokumendibaasi paindlikkusest, kuna objektid on erineva sisuga.
MongoDB ja Rails: http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails
MongoMapper ja MongoID on mh railscastis, suht huvitav oli kuulata/vaadata:
http://railscasts.com/episodes/194-mongodb-and-mongomapper http://railscasts.com/episodes/238-mongoid
Probleem spamassassini uuendamisega
_die can t locate mail spamassassin compiledregexps body_0 pm
# sa-compile # sa-update -D
Dec 6 20:44:57 muheleja amavis[14891]: extra modules loaded after daemonizing/chrooting: Mail/SpamAssassin/CompiledRegexps/body_0.pm, Mail/SpamAssassin/Plugin/FreeMail.pm
568 mergemaster -p 569 mergemaster -a
http://forum.nginx.org/read.php?23,41517 openssl freebsd baasi ülekirjutamine
http://www.cyberls.com/forum/Thread-HOWTO-ProFTPD-Antivirus-using-CLAMAV
http://www.ibm.com/developerworks/linux/library/l-linux-kernel/index.html?S_TACT=105AGX03&S_CMP=ART
http://www.ibm.com/developerworks/linux/library/l-linux-filesystem/index.html S_TACT=105AGX03&S_CMP=ART
http://selectparks.net/~julian/levelhead/install.html
# freshclam ClamAV update process started at Mon Nov 29 16:06:25 2010 main.cld is up to date (version: 53, sigs: 846214, f-level: 53, builder: sven) daily.cld is up to date (version: 12333, sigs: 6732, f-level: 54, builder: ccordes) bytecode.cld is up to date (version: 93, sigs: 16, f-level: 54, builder: edwin)
Kataloogi kontrollimiseks
# clamscan -ri /kataloog
Vsftp conf
listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES ftpd_banner=FTP.ZOO.TARTU.EE chroot_local_user=YES file_open_mode=0755 ascii_download_enable=YES ascii_upload_enable=YES syslog_enable=YES ssl_enable=YES rsa_cert_file=/etc/vsftpd/vsftpd.pem force_local_data_ssl=NO force_local_logins_ssl=NO pasv_min_port=12400 pasv_max_port=12500
Proftpd teeb mugavaks tema modulaarne ehitus mis võimaldab koostada üsna keerukaid ftp teenuseid.
Seadistus mis autentib pami abil süsteemsete kasutajate vastu oleks
ServerName "ftp.zoo.tartu.ee" ServerType standalone DefaultServer on RequireValidShell off AuthPAM on AuthPAMConfig ftp Port 21 PassivePorts 49152 65535 #punktiga failidele ListOptions "-a" # Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable. Umask 022 MaxInstances 30 # Set the user and group under which the server will run. User ftp Group ftp DebugLevel 5 DefaultRoot ~ # Autendi nii mysql-ist kui ka systeemitabelitest AuthOrder mod_auth_unix.c # Normally, we want files to be overwriteable. <Directory /> AllowOverwrite on </Directory>
Passiivsete ühenduste lubamiseks tuleb näiteks pf.conf lisada
pass in on $ext_if proto tcp from any to any port > 49151 keep state label "passive ftp"
Mysqlist autentimiseks tuleb lisada AuthOrder reale lisada mod_auth_unix.c kõrvale mod_sql.c
AuthOrder mod_sql.c mod_auth_unix.c
Ja seadistada mysqliga suhtlemise kasutaja ning parool
# MySQL conf SQLAuthTypes Crypt SQLAuthenticate users SQLConnectInfo andmebaas@db.zoo.tartu.ee kasutaja parool SQLDefaultUID 20000 SQLDefaultGID 20000 SQLMinUserUID 20000 SQLMinUserGID 20000 SQLUserInfo users username passwd uid gid ftpdir homedir
Viimase reaga on defineeritud kasutajaid sisaldava tabeli struktuur.
SSL toe lisamiseks
<IfDefine TLS> TLSEngineon TLSRequiredon TLSRSACertificateFile /etc/vsftpd/proftp.pem TLSRSACertificateKeyFile /etc/vsftpd/proftp.pem TLSCipherSuiteALL:!ADH:!DES TLSOptionsNoCertRequest TLSVerifyClientoff TLSRenegotiatectrl 3600 data 512000 required off timeout 33 00 #TLSLog/var/log/proftpd/tls.log <IfModule mod_tls_shmcache.c> TLSSessionCacheshm:/file=/var/run/proftpd/sesscache </IfModule> </IfDefine>
Proftp failide kontroll läbi ClamAv viirusetõrje.
Paigalda Clamav op-süsteemi töövahenditega. Paigalda samamoodi Proftp server koos mod_clamav toega
clamd.conf tuleb teha järgnevad muudatused, ehk tuleb lahti kommenteerida rida kus öeldakse, et ta töötaks deemonina ja kuulaks 3310 porti
# TCP port address. # Default: no TCPSocket 3310
proftpd.conf tuleks lisada <global></blobal> markerite vahele lõpuossa järgnev blokk
<IfModule mod_clamav.c> ClamAV on ClamServer localhost ClamPort 3310 ClamMaxSize 5 Mb </IfModule>
5 Mb tähendab mis on maksimaalne failisuurus millest üle enam faile ei kontrollita.
Mõlemad teenused restartida.
Testimiseks võib üritada ühte Eicar signatuuri sisaldavat faili üles laadida http://www.eicar.org/anti_virus_test_file.htm
# ftp zoo.tartu.ee Connected to zoo.tartu.ee. 220 ProFTPD 1.3.3c Server (zoo.tartu.ee) [::ffff:192.168.1.22] Name (zoo.tartu.ee:ants): ants 331 Password required for ants Password: 230 User ants logged in Remote system type is UNIX. Using binary mode to transfer files. ftp> put test local: test remote: test 200 PORT command successful 150 Opening BINARY mode data connection for test 550 Virus Detected and Removed: Eicar-Test-Signature 71 bytes sent in 0.00 secs (745.5 kB/s)