
Dokument ten opisuje sposób instalacji jądra 3.1.9 i iptables z IMQ oraz SQUIDa, gdy mamy NAT. Opisane poniżej czynności wykonałem w dystrybucji Slackware 13.37. W chwili gdy piszę te słowa (18 stycznia 2012) istnieją następujące wersje programów:
* Jądro 3.1.9 - nowsze do ściągnięcia z www.kernel.org . Wprawdzie pojawiły się parę dni temu jądra serii 3.2 ale ponieważ nie ma do nich na razie patcha IMQ to nie będę ich tutaj stosować.
* Patch IMQ do jądra serii 3.1
* iptables 1.4.12.2 - nowsze do ściągnięcia z www.iptables.org
* Squid 3.2.0.14 - nowsze do ściągnięcia z www.squid-cache.org . Wprawdzie wersja 3.2 posiada status beta ale dopiero od tej wersji mozliwe jest stosowanie tcp_outgoing_mark
Konwencje użyte w tym dokumencie:
Opis poszczególnych czynności oznaczam drukiem wytłuszczonym i są one numerowane
+ Polecenia wydawane przez użytkownika oznaczam podkreśleniem. Tego plusa na początku każdej linii oczywiście nie wpisujesz.
Moje komentarze wewnątrz poszczególnych punktów są pisane kursywą
Wyniki działania poszczególnych poleceń jest pisana właśnie tak.
(...) oznacza, że tych wyników jest bardzo dużo i wtedy zamieszczam zazwyczaj 3 pierwsze i 3 ostatnie linijki a resztę zastępuje przez (...)
--2012-01-17 18:55:53-- http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.9.tar.bz2
Resolving www.kernel.org (www.kernel.org)... 149.20.4.69
Connecting to www.kernel.org (www.kernel.org)|149.20.4.69|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 77249793 (74M) [application/x-bzip2]
Saving to: "linux-3.1.9.tar.bz2"
0K .......... .......... .......... .......... .......... 0% 74.0K 16m59s
50K .......... .......... .......... .......... .......... 0% 210K 11m29s
100K .......... .......... .......... .......... .......... 0% 769K 8m11s
(...)
75300K .......... .......... .......... .......... .......... 99% 4.41M 0s
75350K .......... .......... .......... .......... .......... 99% 236K 0s
75400K .......... .......... .......... ......... 100% 190K=3m8s
2012-01-17 18:59:02 (402 KB/s) - "linux-3.1.9.tar.bz2" saved [77249793/77249793]
--2012-01-17 18:59:56-- http://www.netfilter.org/projects/iptables/files/iptables-1.4.12.2.tar.bz2
Resolving www.netfilter.org (www.netfilter.org)... 213.95.27.115, 2001:780:45:1d:20d:93ff:fe9b:e443
Connecting to www.netfilter.org (www.netfilter.org)|213.95.27.115|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 480861 (470K) [application/x-bzip2]
Saving to: "iptables-1.4.12.2.tar.bz2"
0K .......... .......... .......... .......... .......... 10% 207K 2s
50K .......... .......... .......... .......... .......... 21% 310K 1s
100K .......... .......... .......... .......... .......... 31% 767K 1s
150K .......... .......... .......... .......... .......... 42% 236K 1s
200K .......... .......... .......... .......... .......... 53% 741K 1s
250K .......... .......... .......... .......... .......... 63% 769K 0s
300K .......... .......... .......... .......... .......... 74% 735K 0s
350K .......... .......... .......... .......... .......... 85% 765K 0s
400K .......... .......... .......... .......... .......... 95% 739K 0s
450K .......... ......... 100% 776K=1.0s
2012-01-17 18:59:57 (452 KB/s) - "iptables-1.4.12.2.tar.bz2" saved [480861/480861]
--2012-01-17 18:59:58-- http://www.linuximq.net/patchs/patch-imqmq-3.1.diff.bz2
Resolving www.linuximq.net (www.linuximq.net)... 89.38.58.162
Connecting to www.linuximq.net (www.linuximq.net)|89.38.58.162|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12257 (12K) [application/x-bzip2]
Saving to: "patch-imqmq-3.1.diff.bz2"
0K .......... . 100% 139K=0.09s
2012-01-17 18:59:59 (139 KB/s) - "patch-imqmq-3.1.diff.bz2" saved [12257/12257]
patching file drivers/net/imq.c
patching file drivers/net/Kconfig
patching file drivers/net/Makefile
patching file include/linux/imq.h
patching file include/linux/netfilter/xt_IMQ.h
patching file include/linux/netfilter.h
patching file include/linux/netfilter_ipv4/ipt_IMQ.h
patching file include/linux/netfilter_ipv6/ip6t_IMQ.h
patching file include/linux/skbuff.h
Hunk #6 succeeded at 2181 (offset 5 lines).
patching file include/net/netfilter/nf_queue.h
patching file net/core/dev.c
patching file net/core/skbuff.c
patching file net/ipv6/ip6_output.c
patching file net/netfilter/core.c
patching file net/netfilter/Kconfig
patching file net/netfilter/Makefile
patching file net/netfilter/nf_internals.h
patching file net/netfilter/nf_queue.c
patching file net/netfilter/xt_IMQ.c
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf --oldnoconfig Kconfig
.config:473:warning: symbol value 'm' invalid for ACPI_APEI_GHES
.config:1152:warning: symbol value 'm' invalid for BT_L2CAP
.config:1153:warning: symbol value 'm' invalid for BT_SCO
.config:4073:warning: symbol value 'm' invalid for HID_ACRUX_FF
.config:4422:warning: symbol value 'm' invalid for RTC_LIB
.config:4423:warning: symbol value 'm' invalid for RTC_CLASS
#
# configuration written to .config
#
make menuconfig ale wtedy musiałbyć przedzierać się przez gąszcz ustawień. Konkretnie musiałbyś włączyć następujące opcje:Networking support -> Networking options -> Network packet filtering framework (Netfilter) -> Core Netfilter Configuration -> IMQ target support -> M
Device Drivers -> Network sevice support -> IMQ (intermediate queueing device) support -> M
Tutaj wybrałem dla IMQ opcję AB oraz wybrałem maksymalnie 4 interfejsy IMQ. Domyślnie jest ich 16. Dla mnie wystarcza tylko 2 ale na wszelki wypadek ustawiam ich 4. Jeśli chcesz zmienić inne opcje w Twoim kernelu to tu jest właśnie meisce do wykonania
scripts/kconfig/conf --silentoldconfig Kconfig
CHK include/linux/version.h
UPD include/linux/version.h
(...)
IHEX firmware/sb16/ima_adpcm_init.csp
IHEX firmware/sb16/ima_adpcm_playback.csp
IHEX firmware/sb16/ima_adpcm_capture.csp
INSTALL arch/x86/crypto/crc32c-intel.ko
INSTALL arch/x86/crypto/salsa20-i586.ko
INSTALL arch/x86/kernel/apm.ko
(...)
INSTALL /lib/firmware/sb16/ima_adpcm_playback.csp
INSTALL /lib/firmware/sb16/ima_adpcm_capture.csp
DEPMOD 3.1.9-smp
sh /usr/src/linux-3.1.9/arch/x86/boot/install.sh 3.1.9-smp arch/x86/boot/bzImage \
System.map "/boot"
Warning: LBA32 addressing assumed
Added Linux-old *
One warning was issued.
Warning: LBA32 addressing assumed
Added Linux-3.1.9 *
Added Linux-old
One warning was issued.
--2012-01-17 20:39:27-- http://www.linuximq.net/patchs/iptables-1.4.12-IMQ-test4.diff
Resolving www.linuximq.net (www.linuximq.net)... 89.38.58.162
Connecting to www.linuximq.net (www.linuximq.net)|89.38.58.162|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4310 (4.2K) [text/x-diff]
Saving to: "iptables-1.4.12-IMQ-test4.diff"
0K .... 100% 445K=0.009s
2012-01-17 20:39:29 (445 KB/s) - "iptables-1.4.12-IMQ-test4.diff" saved [4310/4310]
patching file extensions/libxt_IMQ.c
patching file extensions/libxt_IMQ.man
patching file include/linux/netfilter/xt_IMQ.h
checking for a BSD-compatible install... /usr/bin/ginstall -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
(...)
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
make all-recursive
make[1]: Entering directory `/usr/src/iptables-1.4.12.2'
Making all in libiptc
(...)
make[2]: Nothing to be done for `all-am'.
make[2]: Leaving directory `/usr/src/iptables-1.4.12.2'
make[1]: Leaving directory `/usr/src/iptables-1.4.12.2'
Making install in libiptc
make[1]: Entering directory `/usr/src/iptables-1.4.12.2/libiptc'
make[2]: Entering directory `/usr/src/iptables-1.4.12.2/libiptc'
{...)
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/usr/src/iptables-1.4.12.2'
make[1]: Leaving directory `/usr/src/iptables-1.4.12.2'
--2012-01-17 20:41:37-- http://www.squid-cache.org/Versions/v3/3.2/squid-3.2.0.14.tar.gz
Resolving www.squid-cache.org (www.squid-cache.org)... 209.169.10.131, 198.186.193.234
Connecting to www.squid-cache.org (www.squid-cache.org)|209.169.10.131|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4059672 (3.9M) [application/x-gzip]
Saving to: "squid-3.2.0.14.tar.gz"
0K .......... .......... .......... .......... .......... 1% 78.6K 50s
50K .......... .......... .......... .......... .......... 2% 253K 32s
100K .......... .......... .......... .......... .......... 3% 296K 26s
(...)
3900K .......... .......... .......... .......... .......... 99% 732K 0s
3950K .......... .... 100% 637K=9.6s
2012-01-17 20:41:48 (413 KB/s) - "squid-3.2.0.14.tar.gz" saved [4059672/4059672]
checking for a BSD-compatible install... /usr/bin/ginstall -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
(...)
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
Making all in compat
make[1]: Entering directory `/usr/src/squid-3.2.0.14/compat'
g++ -DHAVE_CONFIG_H -I.. -I../include -I../lib -I../src -I../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Werror -pipe -D_REENTRANT -g -O2 -MT assert.o -MD -MP -MF .deps/assert.Tpo -c -o assert.o assert.cc
(...)
make[1]: Entering directory `/usr/src/squid-3.2.0.14'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/usr/src/squid-3.2.0.14'
Making install in compat
make[1]: Entering directory `/usr/src/squid-3.2.0.14/compat'
make[2]: Entering directory `/usr/src/squid-3.2.0.14/compat'
(...)
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/usr/src/squid-3.2.0.14'
make[1]: Leaving directory `/usr/src/squid-3.2.0.14'
2012/01/17 20:54:09 kid1| Creating Swap Directories
2012/01/17 20:54:09 kid1| /usr/local/squid/var/cache/squid exists
2012/01/17 20:54:09 kid1| Making directories in /usr/local/squid/var/cache/squid/00
2012/01/17 20:54:09 kid1| Making directories in /usr/local/squid/var/cache/squid/01
2012/01/17 20:54:09 kid1| Making directories in /usr/local/squid/var/cache/squid/02
2012/01/17 20:54:09 kid1| Making directories in /usr/local/squid/var/cache/squid/03
2012/01/17 20:54:09 kid1| Making directories in /usr/local/squid/var/cache/squid/04
2012/01/17 20:54:09 kid1| Making directories in /usr/local/squid/var/cache/squid/05
2012/01/17 20:54:09 kid1| Making directories in /usr/local/squid/var/cache/squid/06
2012/01/17 20:54:09 kid1| Making directories in /usr/local/squid/var/cache/squid/07
2012/01/17 20:54:09 kid1| Making directories in /usr/local/squid/var/cache/squid/08
2012/01/17 20:54:09 kid1| Making directories in /usr/local/squid/var/cache/squid/09
2012/01/17 20:54:10 kid1| Making directories in /usr/local/squid/var/cache/squid/0A
2012/01/17 20:54:10 kid1| Making directories in /usr/local/squid/var/cache/squid/0B
2012/01/17 20:54:10 kid1| Making directories in /usr/local/squid/var/cache/squid/0C
2012/01/17 20:54:10 kid1| Making directories in /usr/local/squid/var/cache/squid/0D
2012/01/17 20:54:10 kid1| Making directories in /usr/local/squid/var/cache/squid/0E
2012/01/17 20:54:10 kid1| Making directories in /usr/local/squid/var/cache/squid/0F
Po polsku:
Po angielsku:
Jeśli masz jakieś uwagi, pytania bądź propozycje to pisz na leszek małpa teczowe kropka eu kropka org. Jeśli znalazłeś tu jakiś błąd to napisz koniecznie. Inne wersje tego dokumentu znajdziesz na alfa.tailor.com.pl/imqhtb/imq_htb.html. Pliki użyte w tym dokumencie (poza jądrem i Squidem ) znajdziesz na alfa.tailor.com.pl/imqhtb/3.1.9. Jeśli nie chce Ci się wpisywać tych wszystkich poleceń to możesz użyć skryptów kernel.
Treść tego dokumentu jest udostępniana na podwójnej licencji:
Leszek Żur