artykuły
Powrót do listy artykułów

Temat artykułu: Konfiguracja kernela z iptables i HTB
Tekst napisał Krycha dnia 18-01-2005

Do tego celu wykorzystałem:
- kernel w wersji 2.4.28
- iptables w wersji 1.2.9
- iproute2 w wersji 2.4.7-now-ss020116-try
- htb w wersji htb3.6-020525


1.Wprowadzenie


Nimniejszy artykuł będzie dotyczył kompilacji linuxa z kernelem w ver. linux-2.4.24 z dostosowaniem go do użycja jako serwer do dzielenia lącza z wykorzystaniem HTB i masqarady.
Wszystkie poniższe czynności były testowane na dystrybucji Slackware-9.1 z poniższymi wersajami pakietów


2. Kompilacja kernela 2.4.24

W dniu pisania tego artykułu najnowszym kernelem jest 2.4.24 który wyszedł całiem niedawno ze względu na poważny bug swoich poprzednich wersji i właśnie na nim będę przeprowadzał poniższe czynności.

Jak już sciagneliśmy naszego kernelka to przenosimy go to katalogu /usr/src

# cp kernel-2.4.24.tar.gz /usr/src/

Teraz czas na rozpakowaniem podlinkowanie i wybór potrzebynch modułów

# cd /usr/src/kernel-2.4.24

# cd ln -s linux-2.4.24 linux

# make menuconfig

Tutaj może w kolejnej wersji tego dokumentu opisze opcje w kernelu, tymczasem nie mam na to czasu pozatym jest juz 5.30 rano i chce jak najszybciej skonczyc to howto ;) wiec lets' go daje tylko wycinek configa z kernela gdzie jest o masqradzie i htb

#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_NETLINK_DEV=m
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_FILTER=y
CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_FWMARK=y
CONFIG_IP_ROUTE_NAT=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_TOS=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
CONFIG_NET_IPIP=y
CONFIG_NET_IPGRE=y
CONFIG_ARPD=y
CONFIG_INET_ECN=y
CONFIG_SYN_COOKIES=y

#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=y
CONFIG_IP_NF_FTP=y
CONFIG_IP_NF_AMANDA=y
CONFIG_IP_NF_TFTP=y
CONFIG_IP_NF_IRC=y
CONFIG_IP_NF_QUEUE=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_LIMIT=y
CONFIG_IP_NF_MATCH_MAC=y
CONFIG_IP_NF_MATCH_PKTTYPE=y
CONFIG_IP_NF_MATCH_MARK=y
CONFIG_IP_NF_MATCH_MULTIPORT=y
CONFIG_IP_NF_MATCH_TOS=y
CONFIG_IP_NF_MATCH_RECENT=y
CONFIG_IP_NF_MATCH_ECN=y
CONFIG_IP_NF_MATCH_DSCP=y
CONFIG_IP_NF_MATCH_AH_ESP=y
CONFIG_IP_NF_MATCH_LENGTH=y
CONFIG_IP_NF_MATCH_TTL=y
CONFIG_IP_NF_MATCH_TCPMSS=y
CONFIG_IP_NF_MATCH_HELPER=y
CONFIG_IP_NF_MATCH_STATE=y
CONFIG_IP_NF_MATCH_CONNTRACK=y
CONFIG_IP_NF_MATCH_UNCLEAN=y
CONFIG_IP_NF_MATCH_OWNER=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
CONFIG_IP_NF_TARGET_MIRROR=y
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_IP_NF_NAT_AMANDA=y
CONFIG_IP_NF_NAT_LOCAL=y
CONFIG_IP_NF_NAT_SNMP_BASIC=y
CONFIG_IP_NF_NAT_IRC=y
CONFIG_IP_NF_NAT_FTP=y
CONFIG_IP_NF_NAT_TFTP=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_TARGET_TOS=y
CONFIG_IP_NF_TARGET_ECN=y
CONFIG_IP_NF_TARGET_DSCP=y
CONFIG_IP_NF_TARGET_MARK=y
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
CONFIG_IP_NF_TARGET_TCPMSS=y
CONFIG_IP_NF_ARPTABLES=y
# CONFIG_IP_NF_ARPFILTER is not set
# CONFIG_IP_NF_ARP_MANGLE is not set

#
# IP: Virtual Server Configuration
#
# CONFIG_IP_VS is not set
# CONFIG_IPV6 is not set
CONFIG_KHTTPD=y

#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IPV6_SCTP__=y
# CONFIG_IP_SCTP is not set
CONFIG_ATM=y
CONFIG_ATM_CLIP=m
CONFIG_ATM_CLIP_NO_ICMP=y
CONFIG_ATM_LANE=m
CONFIG_ATM_MPOA=m
CONFIG_ATM_BR2684=m
# CONFIG_ATM_BR2684_IPFILTER is not set
# CONFIG_VLAN_8021Q is not set
CONFIG_IPX=m
CONFIG_IPX_INTERN=y
# CONFIG_ATALK is not set

#
# Appletalk devices
#
# CONFIG_DEV_APPLETALK is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_LLC is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
CONFIG_NET_FASTROUTE=y
CONFIG_NET_HW_FLOWCONTROL=y


#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CBQ=y
CONFIG_NET_SCH_HTB=y
CONFIG_NET_SCH_CSZ=y
CONFIG_NET_SCH_ATM=y
CONFIG_NET_SCH_PRIO=y
CONFIG_NET_SCH_RED=y
CONFIG_NET_SCH_SFQ=y
CONFIG_NET_SCH_TEQL=y
CONFIG_NET_SCH_TBF=y
CONFIG_NET_SCH_GRED=y
CONFIG_NET_SCH_DSMARK=y
CONFIG_NET_SCH_INGRESS=y
CONFIG_NET_QOS=y
CONFIG_NET_ESTIMATOR=y
CONFIG_NET_CLS=y
CONFIG_NET_CLS_TCINDEX=y
CONFIG_NET_CLS_ROUTE4=y
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=y
CONFIG_NET_CLS_U32=y
CONFIG_NET_CLS_RSVP=y
CONFIG_NET_CLS_RSVP6=y
CONFIG_NET_CLS_POLICE=y

#
# Network testing
#
CONFIG_NET_PKTGEN=m


Kolejnym krokiem jest kompilacja kernela i instalacja modułów wykonujemy to wszysto wydajac jednocześnie wszystkie potrzebne do tego komendy:

## make dep && make clean && make bzImage && make modules && make modules_install

I tu mała informacja jeżeli ktoś by robił kompilacje na kernelku z serii 2.6.x to przebiega nieco inaczej wiec zapraszam do dokumentacji

Jak nam linux nie wyrzucil żadnych błędów możemy przystapić do ostaniej fazy instalacji kernela czyli kompiowania jadra i dodania wpisu do lilo.conf

Kopiujemy co musimy

# cp /usr/src/linux-2.4.24/arch/i386/boot/bzImage /boot/vmlinuz-ide-2.4.24
# cp /usr/src/linux-2.4.24/System.map /boot/System.map-ide-2.4.24
# cp /usr/src/linux-2.4.24/arch/i386/defconfig /boot/config-ide-2.4.24

Teraz edycja lilo.conf i dopisujemy 4 linijki

# vi /etc/lilo.conf

<-----cut----->
image=/boot/vmlinuz-ide-2.4.24
root = /dev/hda2 # /dev/hda2 zmieniamy w zaleznosci gdzie mamy partycje roota
label = linux-2.4.24
read-only
<-----cut----->

No i na koniec przeladowanie lilo i reboot

## lilo

## shutdown -r now

3. Instalacja iptables-1.2.9

Teraz już jak działamy na nowym kernelku to możemy zabierać się do kompilacji iptables i całej reszty

Ściągamy źródełka i przenosimy je do katalogu /usr/src

# cp iptables-1.2.9.tar.bz2 /usr/src
# bzip2 -dc iptables-1.2.9.tar.bz2 | tar xf

czas na kompilacje i instalacje

# cd iptables-1.2.9
# make KERNEL_DIR=/usr/src/linux-2.4.24
# make install KERNEL_DIR=/usr/src/linux-2.4.24

Teraz mamy nowego iptables który znajduje się w /usr/local/sbin/iptables

4. Paczowanie naszego iprouta2 przez htb-xxx.diff

Ostatnim krokiem który wykonamy to bedzie kompilacja iprouta2 z htb które wykorzystamy przy dzieleniu lacza...

Ściągamy zródełka i patcha i przenosimy do katalogu /usr/src

# cp iproute2-2.4.7-now-ss020116-try.tar.gz /usr/src
# tar zxf iproute2-2.4.7-now-ss020116-try.tar.gz

gdy juz rozpakowalismy iprouta2 nalezalo by go spatchowac ;> a wiec

# cp htb3.6-020525.tgz iproute2/
# tar -xvzf htb3.6-020525.tgz
# patch -p1 < htb3.6_tc.diff

5. Instalacja iproute2 z htb

# make
# make install
# mv /sbin/tc /sbin/tc-old
# cp /usr/src/tc /sbin/tc

Teraz możemy cieszyć się działaniem htb ;>

Niebawem powstanie HOWTO jak skonfigurować serwer do dzielenia internetu dla 20 osób z konfigurowanym firewallem i dzieleniem łącza. Zapraszamy do odwiedzania działu Artykuły :)