Archive for the ‘HowTo’ Category

Nokia N900 fMMS и VivaCom (GeekTime)

Снощи, а и днеска през по голямата част от сутринта се опитвам да подкарам MMS-а на Nokia Н900 към мрежата на VivaCom.

Защо толкова време ли?

Ами N900 не поддържа MMS, поне не фабрично, но една от причините да обичам Linux е, че има общност … и общността е излязла с малката програмка fMMS, която ви дава “загубената” възможност да пращате и получавате MMS съобщения. Опитах се да се обадя на оператор, дори няколко пъти, но поради факта, че N900 няма фабрична поддръжка, ми казаха, че не могат да ми помогнат. Заебах ги и почнах да ровя в Интернет. Накрая се оказа, че е много лесно. Ето ви step-by-step HowTo.

1. Инсталирате от repo-то fMMS

2. Стартирате fMMS

3. fMMS -> Settings -> Internet connection Settings

Access point name: mms.vivacom.bg

MMSC: http://mmsc.vivacom.bg

User name: mms

Password: mms

HTTP Proxy: 192.168.123.123

Port number: 8080

4. Save

5. Изпращайте и получавайте MMS-и на воля.

!!! В Settings ще видите опциите Resize to, която е за големината на изображението и Network mode (аз лично използвам medium и havoc)

Надявам се съм ви спестил ровене.

Ваш,

Lucifer




SOCKS 5 + PuTTY + SSH или лесен псевдо VPN(GeekTime)

Днес сутринта на работа реших, че ми трябва достъп до сайт … който не е добре да разбират от работа, че гледам и реших да се заинтересувам от възможноста за създаване на някакво псевдо proxy и попаднах на този супер лесен начин.

Какво ви трябва?

PuTTY

SSH Shell някъде

Хубав browser (Firefox/Chrome/Opera)


Каква е целта?

Използвайки една малко известна функция на SSH създаваме връзка с shell-а, който може да е на всякъде (в моя случай – www.anavaro.com). После пренасочваме трафика през връзката и получаваме своебразен лесен VPN.


Как става?

Пускате PuTTY.

Задавате адрес за SSH сесията.

Отивате на Connections -> SSH -> Tunels.

Задавате Source port (в моя случай 8888)

Слагате отметките под Destination на Dynamic и Auto и давате Add

Свързвате се с shell-а, пишете си user-а и паролата

И вече имате тунел през който да пренасочите трафика си.

Сега тънката част – Browser-а

Тук ще спомена, че по принцип всеки Browser може да се използва, всеки който има възможности да ползва proxy. Защо споменах горните 3 ще разберете по-късно.

За Firefox:

Tools -> Options -> Advanced -> Network -> Settings

Там избирате Manual Proxy Configuration и в SOCKS Host слагате 127.0.0.1, а за порт – порта който сте си избрали по рано.

От тук на сетне целия трафик ще минава през отворената с PuTTY сесия …

Тук идва въпроса – АМИ DNS ЗАЯВКИТЕ? Защото той трафика си минава през secure връзката, но сайтовете се резолвват през DNS.

В адресната линия пишете “about:config”. Намирате си опцията “etwork.proxy.socks_remote_dns” и я правите на TRUE et voila …

За Chrome:

Отново като за Firefox сменяте proxy-то, но слагането на secure DNS е малко по-сложно:

1. Добавяте към shortcut-а на Chrome

--proxy-server=socks5://127.0.0.1:8888

2. от настройките отивате на Under the hood и махате опцията “Use DNS pre-fetching to improve page load performance”

и готово! Имате си secure връзка.

А какво правите, ако сте като мен – под Linux?

Дори още по-лесно:

В някоя конзола пускате следния ред:

$ ssh -D 8888 user@host

И правите същите настройки на browser-а като за Windows …

Това SOCKS5 Proxy може да използвате и с повеето чат клиенти, за да си прекарате връзката през него (Skype и Koppete знам със сигурност, че имат proxy options)

Надявам се това да ви е помогнало!

Ваш,

Lucifer




Kernel 2.6.32.x и ATI Catalyst (GeekTime)

Нали ме знаете, че съм си гаден geek, та винаги гледам да съм с последните версии на каквото е излязло … дори с последни версии на ядрото на Slackware-а с който работя в къщи.

Kernel-а който излезе на 9-ти беше 2.6.32.3 и разбира се първата ми работа беше да го инсталирам, да го прекомплирам за да открива и 4-те GB RAM и да си направя initrd.gz за да мога да си пускам машината (аз съм гаден параноик и съм я криптирал)  …

Всичко мина добре. Влязох като root и махнах стария fglrx.9.12 компилиран за 2.6.29.6.

Стартирах инсталатора … и каква беше изненадата ми, когато вместо “Instalation complete”, получих съобщението “There were errors compiling driver. Please refer to fglrx-install.log”

WTF??? Какви грешки бе!

nano /usr/share/ati/fglrx-install.log

[Message] Kernel Module : Trying to install a precompiled kernel module.
[Message] Kernel Module : Precompiled kernel module version mismatched.
[Message] Kernel Module : Found kernel module build environment, generating kernel module now.
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers
make -C /lib/modules/2.6.32.3-smp/build SUBDIRS=/lib/modules/fglrx/build_mod/2.6.x modules
make[1]: Entering directory `/usr/src/linux-2.6.32.3'
CC [M]  /lib/modules/fglrx/build_mod/2.6.x/firegl_public.o
In file included from /lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:443:
/lib/modules/fglrx/build_mod/2.6.x/drm_proc.h: In function ‘FGLDRM__vma_info’:
/lib/modules/fglrx/build_mod/2.6.x/drm_proc.h:497: warning: format ‘%08lx’ expects type ‘long unsigned int’, but argument 5 has type ‘phys_addr_t’
/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c: In function ‘KCL_MapPageToPfn’:
/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:1586: warning: unused variable ‘bus_addr’
CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_acpi.o
CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_agp.o
CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_debug.o
CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_ioctl.o
CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_io.o
/lib/modules/fglrx/build_mod/2.6.x/kcl_io.c: In function ‘KCL_IO_FASYNC_Terminate’:
/lib/modules/fglrx/build_mod/2.6.x/kcl_io.c:122: error: ‘SIGIO’ undeclared (first use in this function)
/lib/modules/fglrx/build_mod/2.6.x/kcl_io.c:122: error: (Each undeclared identifier is reported only once
/lib/modules/fglrx/build_mod/2.6.x/kcl_io.c:122: error: for each function it appears in.)
make[2]: *** [/lib/modules/fglrx/build_mod/2.6.x/kcl_io.o] Error 1
make[1]: *** [_module_/lib/modules/fglrx/build_mod/2.6.x] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.32.3'
make: *** [kmod_build] Error 2
build failed with return value 2
[Error] Kernel Module : Failed to compile kernel module - please consult readme.

Какво по …

И отново старото ровене в чичо google … 2 дни без хубаво видео … няма да ви описвам мъките си … докато на някакъв забит пост в някакъв забит форум не намерих как да го оправя … а то се оказа и много просто – явно в новата ядро са отделили част от нещата в нов header file …

Ето и решението step-by-step:

01. Сваляте си драйверите от сайта на ATI.
02. Стартирате run-а с опция –extract
03. Отваряте fglrx-install.nqkakuv_string/common/lib/modules/fglrx/build_mod/kcl_io.c където добавяте:

#include <linux/signal.h>

04. В fglrx-install.nqkakuv-string стартирате sh ./ati-installer.sh 8.5912 –install
05. reboot … and that is all …

Лесно нали? Някъде из нет-а се мотат готови .patch, но нямах време и желание да търся … за това използвах nano … и го направих на ръка … лесно и бързо … веднъж като знаеш какво ти трябва …

Надвявам, се да помогна на някого.


Ваш,

Lucifer




Малко хитрости за работа … или ffmpeg, WordPress и Viper's Videotags

Ето че пак е време за поредното HowTo в рубриката ми Geek Time.

Как се стигна до тук? Както винаги – от скука и то на работа. Тогава ми хрумна много луда идея – on-line филми. Имам си сървър, зад който стоят почти 500 GB филми (и порно разбира се, но това е друг въпрос).

Необходими средства:

Slackware Current с инсталиран X.

slapt-get (за по-лесно) с repositpry от slacky.eu

WordPress (пак за по-лесно) с Viper’s Quick Videotags plug-in (за съвсем лесно).

Материал (филм, сериал или каквото там ви се гледа (не препоръчвам порно за работа))

Изпълнение:

1. През slapt-get инсталирате ffmpeg с всички пакети които иска (задължително проверете за наличие на x246)

2. осигурявате си достъп до суровия материал.

ffmpeg -i faila_koito_shte_prevrushtate.avi -s (width)x(height) -f flv -acodec libmp3lame -ab 128000 -ar 44100 -ac 2 -vcodec flv ime_na_gotovot.flv

А сега да обясня опциите (трябваха ми 4 часа докато ги схвана)

-s – разделителна способност на изхода (за предпочитане да са като на оригиналния фаил)

-f – force format (изходящия фаил задължително да е в този формат)

-acodec – аудиокодек на изходящия файл

-ab – задава bitrate на аудиото

-ar – задава чесотата (sample frequency)

-ac – задава броя канали (2 = стерео)

-vcodec – кодека използван за видеото

Изчаквате си конверитрането на суровия материал. Копирате си готовото .flv някъде където може да ви го чете apache и използвайки любимия си метод го поствате в WordPress блога си.

А сега се насладете на първите 500 кадъра от Gamer.BRRip.XviD.AC3-TBc:

http://www.anavaro.com/media/test.flv

Приятно прекарване и не забравяйте, че това е времеемко занимание. Надявам се да съм ви помогнал и днес!

Ваш,

Lucifer


P.S.: Явно се оказва, че има много по хубав начин да се постигнат нещата … Както ще прочетете в коментарите. Направих няколко теста и за сметка по-голямото време за енкодване, можете да получите невероятни резултати с h264. Ето тук има ръководство: цък. Искам най-искрено да благодаря на drJeckyll за коментара и помощта …




Nokia 6120 classic като Linux modem!(Geek Time)

И така, явно се е видяло че ще отварям Geek Time рубрика в този блог, та ето ви още един пост нея:

Как да подкараме Nokia 6120 classic като USB GPRS/EDGE модем под Linux (в моя случай Slackware 13, но ръководството е достатъчно широко) и VivaTel (независимо дали пакет данни или нещо друго).

Необходим hardware:

Компютър (няма смисъл иначе, нали)

GSM Nokia 6120 classic (предполагам, че и всеки друг Symbian базиран телефон би ви свършил работа)

USB кабел за телефона

Необходим software:

Linux (в моя случай, както казах, Slackware 13, но предполагам, че и другите ще станат)

wvdial – трябва да го има в репото на дистрибуцията ви (за Slackware го има в Slacky.eu, като готов пакет)

wvdialerstrams – библиотека използвана от wvdial

qtwvdialer – QT GUI за wvdial

Методология:

Инсталирате пакетите описани по горе, свързвате телефона с кабела към машината и му задавате PCSuit (не data transfer или media player).

Пускате си една конзола и su – твате (трябва да сте root).

$wvdialconf

Програмката културно си засича телефона и най-добрата скорост с която да го използвате и ви предлага Init1 и Init2 редове.

$nano /etc/wvdial.conf

Ще забележите, че някои редове са откоментирани с #. Това са нещата които конфигурацията не е успяла да налучка.

Ето ви копие на моя wvdial.conf, това което трябва да добавите за да работите с VivaTel са редовете Init3, Phone, Username и Password

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","internet.vivatel.bg"
Modem Type = USB Modem
Phone = *99#
ISDN = 0
Username = vivatel
Password = vivatel
Modem = /dev/ttyACM0
Baud = 460800

Остана само да въведете DNS-те на доставчика. Ако сте на VivaTel в /etc/resolv.conf добавете редовете:

nameserver 212.39.90.42
nameserver 212.39.90.43

Ако не сте, стартирайте $wvdial (прекратява се с Ctrl+C) и ще видите редовете First Domain Name Server $ADRESS1 и Second Domain Name Server $ADRESS2. Това са адресите за /etc/resolv.conf

Това е от мен. Аз така успях да го подкарам. Надявам се да ви помогне!

Ваш,

Lucifer




Lineage 2 GRACIA Final под Linux (Geek Time)

И така от липса на друга работа, реших да се хвана да се заиграя отново на Lineage 2 и попаднах на Gracia Final Server (Marines сървъра на spectrumNet). Само дето скоро съвсем ще остана без достъп до работещ Winbows, а няма да се върна заради една игра на него и за това седнах да ровя как да го Wine-зирам и се оказа, че то не е толкова трудно!

I. Подготовка:

1. Драйвери – слагате си драйверите на видео картата!

2. Wine

2.1 сваляте си Wine

2.2 компилирате и инсталирате Wine (има си много читав скрипт, който ви върши цялата работа)

3. Winetricks – разравяте се из google и си намирате скриптчето наречено wintericks

3.1 Инсталация на DirectX 9 – от winetricks става супер лесно

3.2 Инсталация на GECKO – пак от wintericks. Това е важно, само ако ще ползвате update през LineageII.exe

II. Сваляне:

1. Намирате си играта и си я сваляте L2. Тази стъпка трябва да ви е ясна! Забивате я някъде и готово!

(до колкото схващам от цялата философия може и да не ви се наложи да минете през другите стъпки, но това си зависи от вашата система. Аз все пак ще си ви ги напиша.)

III. Настройки – пипкавата работа:

1. /etc/hosts – тези от вас които са играли пиратски сървъри на Lineage 2 под добрата стара боза знаят как се правеха промените в %windows%/system32/driver/etc/hosts файл-а. Е тука ви трябва само в /etc/hosts да добавите:

xx.xx.xx.xx L2authd.lineage2.com

ако разбира се сървъра ви го иска!

(тук е момента да пробвате да влезете в папка system на играта и да напишете wine l2.exe – шанса е 50/50 да тръгне от воле. Не се притеснявайте от онова за AGP inconsistancy)

2. Шрифотве – и така влизате в прозореца на играта … и о чудо – всички бутончета са празни, вие не виждате какво пишете … проблем! Решението е просто: Намерете си tahoma.ttf (копирайте го от font дирецторията на който и да е winbows) и го сложете в ~/.wine/drive_c/windows/fonts

3. Ако точка 1 не успее – опитали сте по т.1 и сте ме наругали защото не е тръгнало. Не се предавайте – решението е просто – отивате в папка system на играта и отваряте l2.ini …

Вариант 1: l2.ini е текстов. Супер! Намерете редовете:

UseHardwareTL=True
UseHardwareVS=True

и ги заменете на

UseHardwareTL=Flase
UseHardwareVS=False

… и това е!

wine l2.exe … и готово.

Вариант 2: l2.ini е бинарен. Мааалка спънка! Но не за дълго:

- немрете си l2encdec от тук

- декриптирайте l2.ini (има си readme)

- когато l2.ini стане текстов … се върни на Вариант 1!

Ето ви го решението. Аз за сега не намирам проблем, а отняколко часа играя …

Ако имате проблеми – казвайте да ги мисля.

Ваш,

Lucifer




Една отдавна бавена стъпка … 2

Проблем 6:

Как подяволите да си подкарам външните VGA/HDMI?

Решение:

Ми всъщност много много просто – в /etc/X11/xorg.conf в секция Screen, суб секция Display, добавяте:

Virtual 2048 2048

това максималната ви допустима разделителна способност толкова. Иначе xrandr взима максималната на 1 от мониторите. После си свалете arandr приложението (най-добре от svn)

svn co http://svn.amsuess.com/svn/tools/arandr/trunk/ arand

старитрате arandr … и готово! Можете като мен да го копирате в /usr/share и да направите sym link към /usr/bin само на изпълнимия arandr.

Проблем 7:

Опции за fglrx драйверите.

Решение:

за по лесно ви паствам целия си xorg.conf – при мен, на моята машна със горе изброените стъпки работи на max!

Section “ServerLayout”
Identifier     “Simple Layout”
Screen      0  “aticonfig-Screen[0]-0″ 0 0
InputDevice    “Mouse1″ “CorePointer”
InputDevice    “Keyboard1″ “CoreKeyboard”
EndSection

Section “Files”
RgbPath      “/usr/share/X11/rgb”
FontPath     “/usr/share/fonts/local/”
FontPath     “/usr/share/fonts/misc/”
FontPath     “/usr/share/fonts/OTF/”
FontPath     “/usr/share/fonts/TTF/”
FontPath     “/usr/share/fonts/Type1/”
FontPath     “/usr/share/fonts/CID/”
FontPath     “/usr/share/fonts/Speedo/”
FontPath     “/usr/share/fonts/75dpi/:unscaled”
FontPath     “/usr/share/fonts/100dpi/:unscaled”
FontPath     “/usr/share/fonts/75dpi/”
FontPath     “/usr/share/fonts/100dpi/”
FontPath     “/usr/share/fonts/cyrillic/”
EndSection

Section “Module”

Load  “dbe”     # Double buffer extension
SubSection “extmod”
Option       “omit xfree86-dga”   # don’t initialise the DGA extension
EndSubSection
Load  “type1″
Load  “freetype”
#Load        “speedo”
Load “GLcore”
Load  “glx”
Load “dri”
EndSection

Section “InputDevice”
Identifier  “Keyboard1″
Driver      “kbd”
EndSection

Section “InputDevice”
Identifier  “Mouse1″
Driver      “mouse”
Option       “Protocol” “Auto”
Option       “ZAxisMapping” “4 5″
# The mouse device.  The device is normally set to /dev/mouse,
Option       “Device” “/dev/mouse”
#   Option “Device”      “/dev/psaux”
EndSection

Section “Monitor”
Identifier   “aticonfig-Monitor[0]-0″
Option       “VendorName” “ATI Proprietary Driver”
Option       “ModelName” “Generic Autodetecting Monitor”
Option       “DPMS” “true”
EndSection

Section “Device”
Identifier  “aticonfig-Device[0]-0″
Driver      “fglrx”
BusID       “PCI:1:0:0″
Option “UseFastTLS” “1″
EndSection

Section “Screen”
Identifier “aticonfig-Screen[0]-0″
Device     “aticonfig-Device[0]-0″
Monitor    “aticonfig-Monitor[0]-0″
DefaultDepth     24
SubSection “Display”
Virtual    2048 2048
Viewport   0 0
Depth     24
EndSubSection
EndSection

Section “DRI”
Mode 0666
EndSection

Проблем 8:

VirtualBox. Нямам USB и нямам USB!

Решенение:

Добавяте потребителя с, който искате да ползвате VirtualBox в vboxusers групата.

Добавяте и в /etc/fstab:

usbfs /proc/bus/usb usbfs devmode=666 0 0

и USB-то … чудотворно се оправя!

Това е от мен, поне за сега!

Ваш,

Lucifer




Една отдавна бавена стъпка …

Предния път набързо само написах, че най-накрая минах на Линукс и по-специално на Slackware current. Винаги съм обичал да съм на ръба на технологиите. А и Slackware-а винаги ми е бил любимата ОС. Много по-лесно сигурно щеше да ми е да мина на нещо по-просто (HellMaster винаги е предлагал Fedora), но честно казано тогава нямаше да ми е интерестно. Предпочитам си Slack-чето. Успях да се сборя с драйверите, сбих се с мрежата, преборих се с ядрото и какво ли още не! За тези 2 седмици научих много. Сега искам да споделя със вас какво и как направих:

Железарии:

ASUS M51V-AP129

CPU: Intel Pentium Dual Core Processor T3200

RAM: 4GB

VC: Radeon HD 3470

Проблем 1:

Kernel-a, който върви със Slack-а не вижда 4-те гиги рам

Решение:

cd /usr/src/linux-2.6.29.2

rm .configure

cp /boot/configure-huge-smp-2.6.29.2-smp .configure

make menuconfig

Отбелязваме отметката за поддръжка до 64 GB RAM

exit

make bzImage

make modules

make modules_install

cp arch/x86/boot/bzImage /boot/vmlinuz-4g

cp System.map /boot/System.map-4g

Коригираме си любимия boot loader … и проблема е решен – ядрото вижда сичките 4 гиги

Проблем 2:

Поддръжка на 3d.

Решение:

Тука идва голямото четене мили деца, защото fglrx драйверите на ati са несъвместими с ядрото … освен, не се пачнат. Та сваляте си пача който е за версия 9.1 (споко работи си) и си пачвате версия 9.5 (тази която е сега), после си я инсталирате и готово! Имате 3D и compositing.

Проблем 3:

Скролера на мишката.

Решение: в /etc/X11/xorg.conf има ред в секцията за Device “mouse”

Protocol “imps/2″

сменяте го на auto и готово.

Проблем 4:

Поддръжка на кирлица в файловата система и KDE

Решение:

/etc/rc.d/rc.font:

#!/bin/sh
#
# Този скрипт зарежда шрифт за виртуален терминал (текстова конзола).
# Достъпните шрифтове се намират в директорията
# /usr/share/kbd/consolefonts.
#

echo -n -e '\033%@' # кодиране UTF-8
setfont Cyr_a8x16

/etc/profile.d/lang.sh:

#!/bin/sh

export LANG="bg_BG.UTF-8"
......
......
# Променливата LC_MESSAGES указва какъв да бъде езика на интерфейса на програмите.
# Ако желаете интерфейса на програмите да бъде
# на английски вместо на български, махнете # в началото на следващия ред
#export LC_MESSAGES=en

# тази команда решава някои проблеми свързани с man
export LESSCHARSET=utf-8

case `tty` in
/dev/console|/dev/tty[0-9]|/dev/vc/[0-9]*)

# повторно зареждане на шрифт и клавиатурна подредба (за всеки случай)
. /etc/rc.d/rc.keymap 2>/dev/null
. /etc/rc.d/rc.font

esac

/etc/rc.d/rc.local:

#!/bin/sh
#
# /etc/rc.d/rc.local:  Local system initialization script.
#
# Put any local setup commands in here:

# настройки за виртуален терминал от 1 до 6:
for i in 1 2 3 4 5 6
do
    echo -n -e '\033%@' > /dev/tty$i
done

Искам да благодаря на момчетата от форума на linux-bg.org за помоща, както и на Валентин Стойков, от чиято статия са извадките по-горе. О и да напомня, че това е за поддръжка на utf-8.

Проблем 5:

След инсталиране на драйврите, имам 3d поддръжка, само ако не ползвам kdm.

Решение:

rm -R /usr/share/config/kdm/*
genkdmconf

Та това е мили деца, от към проблеми с преминаването към linux. Поне при мен. Еми … да ми е честито!

Ваш,

Lucifer





qdisc htb … или лесен за правене shaper

И така … седя си аз на работа и се чудя как да се боря с големите лоши потребители, които ми заемата канала и не мога да си играя играта и да си точна порното. Ядосвам се! Писна ми да ги забранявам IP по IP. Зачетах се из интернет … добрия стар чичо Google ме препрати към lartc.org . Изтеглих си аз ръководството от там (препоръчвам го н а всички) и се хванах да го прочета. О очудване! То Правенето на shaper не било сложно!

Този shaper работи в моята мрежа. Не твърдя да е сложен, защото нямам нужда да се боря с хакери (потребителите ми са “многознайковци” (вие представяте ли си идота който ми се развика защо нямал нет, като се оказа, че сам си е преинсталирал Windows-a  и не е сложил драйвери за дъно и LAN)).

Така, сега по същество:

Конструкция:

Имам 3 LAN мрежи:

192.168.0.0/24 – локална мрежа за администрацията, най-често използвана за служебни задължения, с изключение на 1 поттребител.

192.168.10.0/24 – локална мрежа за залата за обучение, която и трябва web, с изключение на 2-те машини зад които седя.

192.168.3.0/24 – Wi-Fi мрежа за гостите на хотела, която е отворена и безотчетна

Имам 12 Mbit/s biz download на 2Mbit/s upload от приятелите от БТК.

Slackware 12 машинка с 2 LAN карти (WAN и LAN)

Защо HTB?

HTB, ли? Ми защото се пише по-лесно от CBQ, а и в кернела-а на моя комп го има. Няма да ви лъжа, че е по-стабилен или по-напреднал. Аз съм си мързелив. Просто ми е най-лесен.

Лимитации.

За съжаление qdisc не се справя много добре с shape на igress трафик, за това се възползва от опцията на мрежовите протоколи да пращат само колкото бързо можеш да получиш. За това ще работим с egress трафика (изходящия).

Началото.

#/bin/sh
WAN=eth1
LAN=eth2

Дефинираме bash скрипта и дефинираме LAN картите. Тук е мястото тези от вас които си вдигат лан картите или правят специфични настройки като “ip a a” да ги направят:

ifconfig $LAN 192.168.0.1 netmask 255.255.255.0
ifconfig $LAN:1 192.168.10.1 netmask 255.255.255.0
ifconfig $LAN:2 192.168.3.1 netmask 255.255.255.0
ip a a dev $WAN xx.xx.xx.xx

Препръчвам да правите всички мрежови настройки преди да започнете да правите shape-а. Започваме с орязване на входящия тряфик. Както казахме, всъщност не можем да го орежем, но можем да ограничим и контролираме изхода от картата към вътрешните мрежи (в случая $LAN).

tc qdisc del dev $LAN root
tc qdisc add dev $LAN root handle 1: htb default 30

Или преведено на човешки – изтрий всички устройства коит “висят” на интерфейс $LAN и добави root “устройство” закачено на $LAN с идентификатор 1: и използващо htb (честно казано не знам какво прави default и 30, но си ги търси). Следващата стъпка е да създадем “правила” за устрйството.

tc class add dev $LAN parent 1: classid 1:1 htb rate 12000kbit ceil 12000kbit burst 15k
tc class add dev $LAN parent 1:1 classid 1:10 htb rate 5000kbit ceil 12000kbit burst 15k prio 1
tc class add dev $LAN parent 1:1 classid 1:20 htb rate 1000kbit ceil 2000kbit burst 15k prio 2

Обяснявам и тук – добавяме клас 1:1 с “родител” 1: използвайки htb за контрол с минимална скорост 12000 kbit/s (винаги давайте по малки скорости от реалните) и максималан същата. Създаваме 2 “деца” на този клас 1:10 и 1:20. Като 1:10 има запазени 5000 kbit/s и максимум от 12000 kbit/s (когато има други клиенти има гарантирани 5000, но когато останалия канал е свободен, може да го ползва целия), 1:20 е с осигурен 1000 kbit/s и максимум от 2000 kbit/s. Сега, нека пратим трафика по класовете – това става с tc filter.

tc filter add dev $LAN protocol ip parent 1: prio 1 u32 match ip dst 192.168.10.0/24 flowid 1:10
tc filter add dev $LAN protocol ip parent 1: prio 1 u32 match ip dst 192.168.0.0/24 flowid 1:10
tc filter add dev $LAN protocol ip parent 1: prio 2 u32 match ip dst 192.168.3.0/24 flowid 1:20

Използваме така наречените u32 match-ове. В случая изпозлваме ip dst или destination ip. u32 позволява да се фитрира по много показатели:

  • dst
  • src
  • dport
  • sport
  • tos
  • protcol*

*protocol филтъра взима променливите си от /etc/protcols, например ако icmp е 1, то match ip protocol 1 0xff

като могат да се правят n на брой комбинации.

И така какво имам до тук? Имаме едно “дърво”:

  1:
   |
  1:1
   /\
  /  \
 |    |
1:10 1:20

И филтри които да пращат към “клоните”. Това е за входящия трафик. Сега да направим същото за изходящия (извинете но тук няма да обяснявам, защото до сега го обясних достатъчно подробно). Та за $WAN интерфейса:

tc qdisc del dev $WAN root
tc qdisc add dev $WAN root handle 1: htb default 30
tc class add dev $WAN parent 1: classid 1:1 htb rate 2000kbit ceil 2000kbit burst 15k
tc class add dev $WAN parent 1:1 classid 1:10 htb rate 1000kbit ceil 2000kbit burst 15k prio 1
tc class add dev $WAN parent 1:1 classid 1:20 htb rate 512kbit ceil 1000kbit burst 15k prio 2
tc filter add dev $WAN protocol ip parent 1: prio 1 u32 match ip src 192.168.10.0/24 flowid 1:10
tc filter add dev $WAN protocol ip parent 1: prio 1 u32 match ip src 192.168.0.0/24 flowid 1:10
tc filter add dev $WAN protocol ip parent 1: prio 2 u32 match ip src 192.168.3.0/24 flowid 1:20

След този момент вече сте свободни да работите с iptables и да си направите колкото си искате правила за портове и настройки.

Отново подчертавам, че това е една малка и проста конструкция предиведна за SOHO мрежа. Както виждате има и слабо място, но смятам и това да изчистя. Когато го направя ще пиша още.

Ваш,

Lucifer





Squid 3 + IPTABALES … или transparent proxy за секунди!

Тъй като съм алчно и гладно за трафик копеле, реших, че на потребителите не им трябва чак толкова web трафик и реших да им шибна едно прозрачно proxy. Пък и без това искам да знам кой къде ходи.

Та … как става номера:

1. Взимате един Slackware (дори не знам коя версия)

2. Сваляте си последния SQUID 3 (в моя случай squid-3.0.STABLE13)

3. tar -xvf squid-3.0.STABLEx

4. cd squid-3.0.STABLEx

5. ./configure –enable-ssl –enable-linux-netfilter

6. make all

6.1 (ако не сте като root) su

7. make install

8. mv /usr/local/squid/etc/squid.conf /usr/local/squid/etc/squid.conf.orig

ЧЕСТИТО! Ако всичко е минало правилно имате инсталиран squid без конфигурационен файл.

9. nano /usr/local/squid/etc/squid.conf

http_port 3128 transparent
cache_dir ufs /usr/local/squid/var/cache/ 1000 32 512
access_log /var/log/squid/access.log
acl localnet0 src 192.168.0.0/255.255.255.0
acl localnet10 src 192.168.10.0/255.255.255.0
acl localnet3 src 192.168.3.0/255.255.255.0
http_access allow  localnet0
icp_access  allow  localnet0
http_access allow  localnet10
icp_access  allow  localnet10
http_access allow  localnet3
icp_access  allow  localnet3

Сега да обясня!

http_port – оказва порта на който ще слухти октоподчето (3128 – по подразбиране). Опцията “transperant” оказва на октоподчо да си работи невидимо.

cache_dir – оказва каде да е директорията където да се пазят нещата от сесиите. “usf” e файловата система кяото ползвате. След това пътеката където се помещава (squid трябва да има +rw). Следва големината на заделеното място за cache в MB. Другите 2 параметъра са за папки и подпапки за структуриране на информацията.

access_log – указва пътя на log файла (пак +rw)

acl – Access control layer – основния метод за настройка на сигурност. Какво имам аз? Първия параметър след acl е стринг за наименование на контролера, в този случай localnet0. “src” е вида контрол който ще указваме, в случая входящите заявки от 192.168.0.0/24. За съжаление трябва да окажете пълната netmask, “/24″ не върши работа! При мене имам 3 мрежи и ги дефинирам и трите!

http_access – разреши http достъпа за дадения acl.

icp_access – разреши icp достъпа за дадения acl.

Ето ви го конф-а за да работи леко и без проблемно … има още тоолкова опции и възможности, че няма на къде, но за едно бързо и малко web proxy не ви трябва много! Та … записвате конф-а и излизате от редактора!

10. /usr/local/squid/sbin/squid -z за да направим директориите за кеша.

11. /usr/local/squid/sbin/squid -N -d 1 -D – тъй като октоподчо е демон -N го караме да остане отгоре. -d 1 за да задедем debug level. -D за да не прави DNS query към някои основни хостове и да умре без причина! Ако искате да го пратите като демон махнете -N и -d 1.

12. tail -f /var/log/squid/access.log – за да наблудаваме какво иде реч!

13. Сега трябва да пренасочим целия web трафик през окти … аз съм го решил просто (искам само порт 80, защото потребителите ми са обикновенни хора):

iptables -t nat -A PREROUTING -i eth4 -p tcp –dport 80 -j REDIRECT –to-port 3128

14. ЧЕСТИТО! ИМАТЕ СИ ПРОЗРАЧНО PROXY и домаин logger!

За по-подробни разясянения за това кой, как къде, защо и как – ОКТО WIKI.

Ваш,

Lucifer




Return top

Здравейте ...

Добре дошли в моето малко и уютно леговище ... Блога, както и целия домейн anavaro.com служи само и и единствено за пясъчник в който да си играя или лаборатория в която да си провеждам експериментите.