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 :)