Архив на категория: Linux

Споделяне на повече от една Интернет връзка в локална мрежа

Здравейте,

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

Понякога потребителите прекаляват с гледането на клипове, слушане на онлайн радиа и т.н., затова работещите колеги се оплакват от скоростта на Интернет връзката. Шейпърите не са опция във фирмата, затова реших да пусна част от по-работещите потребители през новата оптика, а останалите да си работят както досега.

Настройката е много бърза и малка, но все пак реших да я споделя, освен това е тествана и работи :) Изходните данни са следните:

LAN (eth0):
IP 192.168.0.1
Mask 255.255.0.0

WAN1 (eth1):
IP 10.0.0.2
Gateway 10.0.0.1 (default gateway)
Mask 255.255.255.0

WAN2 (eth2):
IP 10.0.1.2
Gateway 10.0.1.1
Mask 255.255.255.0

Потребителите ползват Интернет през WAN1 по подразбиране, а избраните потребители през WAN2. Споделянето на Интернет връзката през WAN1 е осъществено с iptables и е тривиално, тъй като 10.0.0.1 е default gateway за самия сървър, който споделя Интернет-а.

За използване на втората връзка обаче ще трябва да извършим няколко допълнителни стъпки.

Първо искам да създам routing таблица за втората Интернет връзка. Искам да ѝ задам име, защото така е по-прегледно. Това става като редактирам файла /etc/iproute2/rt_tables. В него на най-долния ред записвам:

4 btcroute

С това задавам име на routing таблица номер 4, а името е btcroute, което явно подсказва, че връзката е към БТК.

Нека проверим какво има в тази routing таблица:

ip route show table btcroute
или същата команда, по номер на таблицата
ip route show table 4

Оказва се, че е празна. Затова ще трябва да я напълним :)

Тъй като ползвам един скрипт за настройка на всички потребители, ползващи Интернет във фирмата, скрипта първо изтрива правилата и после ги инициализира наново. Ако вие ползвате if-up и if-down, просто поставете частта за изтриването на правилата в if-down.

#flush old rules (изтриване на правилата за таблица 4)
ip route flush table btcroute
ip rule del fwmark 4 table btcroute
ip rule del from 10.0.1.2 table btcroute

След като сме изтрили правилата, ги създаваме наново

#add new rules (добавяне на правилата в таблица 4)
ip route add default via 10.0.1.1 dev eth2 table btcroute
ip rule add fwmark 4 table btcroute
ip rule add from 10.0.1.2 table btcroute

Да ги разясним какво правим. С първия ред добавяме default gateway за тази routing таблица. С втория ред решаваме, че всички пакети, които са маркирани с 4, трябва да се обработват с таблица 4. С третия ред казваме, че щом пакета е от алтернативния ни IP адрес (10.0.1.2), таблица 4 ще го обработи.

С това настройката на iproute2 завърши.

Следва да споделим Интернет връзката с някой от колегите, например 192.168.0.5. За целта трябва да изпълним следните две команди:

iptables -t mangle -A PREROUTING -s 192.168.0.5 -j MARK –set-mark 4
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.5 -j SNAT –to-source 10.0.1.2

С първата команда маркираме със стойност 4 всички пакети, които влизат в PREROUTING талбицата на сървъра и са от IP адреса на щастливия 192.168.0.5. С втората команда маскираме Интернет връзката, така че да използва алтернативната Интернет връзка.

Използвана литература:

  1. http://linux-ip.net/html/adv-multi-internet.html

Инсталиране на Oracle Database 10g Express Edition на Debian x64

Здравейте,

Oracle не са направили пакет на техния Oracle 10g XE за amd64 архитектура и е необходимо да инсталираме i386 пакет. След справка в няколко форума и обобщение на няколко поста стигнах до работещ и проверен начин за инсталация на въпросното приложение върху Debian 5 Lenny:

  1. Инсталираме необходимите пакети:
    apt-get install ia32-libs libc6-i386 bc
  2. Изтегляме една допълнителна библиотека:
    wget -c http://oss.oracle.com/debian/dists/unstable/main/binary-i386/libaio_0.3.104-1_i386.deb
  3. Инсталираме библиотеката и Oracle XE
    dpkg -i –force-architecture libaio_0.3.104-1_i386.deb
    dpkg -i –force-architecture oracle-xe-universal_10.2.0.1-1.0_i386.deb (този файл може да бъде изтеглен само след регистрация на сайта на Oracle)
  4. Задължително след инсталацията трябва да конфигурираме базата:
    /etc/init.d/oracle-xe configure
    Отговаряме на няколко лесни въпроса – на кой порт ще работи уеб приложението за конфигурацията, на кой порт ще работи самия сървър и каква е паролата за потребителя SYSTEM. Аз лично ги оставих със стойностите по подразбиране, за което после съжалявах, тъй като уеб приложението искаше да работи на порт 8080 (localhost). В последствие реших, че на localhost не ми е удобно за конфигурация, затова трябваше да разреша достъп от всички интерфейси. Проблема с порт 8080 е, че много често се сканира от ботове и пълни лог файловете с много ненужни записи, затова може да си измислите някакъв ненормален порт като 18238 :)
  5. Добавяме следните редове в ~/.bashrc
    ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
    PATH=$PATH:$ORACLE_HOME/bin
    export ORACLE_HOME
    export ORACLE_SID=XE
    export PATH
  6. С това сме готови и имаме работещ сървър Oracle Database 10g Express Edition. Посетете адреса http://127.0.0.1:<port>/apex за да достъпите контролния панел.

Разбира се елементарни конфигурационни промени могат да се направят от конзолата или през уеб приложението. Например:

  • Ако сте се прецакали (като мен) да ползвате порт 8080 и искате да го смените може да изпълните следната заявка през конзолата:
    1. Логвате се на конзолата:
      sqlplus system@xe
      с паролата, която въведохте по време на конфигурацията
    2. SQL> begin
      2    dbms_xdb.sethttpport(‘18230′);
      3    dbms_xdb.setftpport(‘0′);
      4  end;
      5  /

      с което сте готови.
  • Ако искате да разрешите IP адрес за достъп до apex, различен от 127.0.0.1:
    1. Логвате се на конзолата:
      sqlplus system@xe
    2. EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

Засега това е всичко и това е първия ми сблъсък с Oracle, дано на някой да му е полезна информацията. Ще допълвам статията с нови неща, а и тя е един вид записка, която ще мога да ползвам при необходимост :)

Прехвърляне на вече инсталирана Debian Linux 5 Lenny система от PATA хард диск към SATA хард диск

Здравейте,

Имам няколко стари сървърчета, със сравнително големи хард дискове, но достатъчно нови, за да поддържата SATA твърди дискове. Тъй като съврърите са бюджетни, при закупуването им дори не е ставало дума за един твърд диск повече за изграждането на RAID1 масив.

В много от фирмите продаващи твърди дискове изчезват наличностите от старите ATA дискове, затова се принудих да закупя SATA твърд диск с обем (може би обем не е точното определение за големина на диска) 500GB.

Допуски:

  • root дяла е в /dev/hda1
  • новия диск е /dev/sda
  • използваме GRUB като boot loader

Предварителното планиране изглежда така:

  1. закачаме новия диск и зареждаме какъвто и да е линукс от компакт диск или USB флаш памет. Всичко върши работа, аз предпочитам system rescue cd. Може да използвате дори мрежовия инсталационен компакт диск на Debian 5 Lenny. Важно е да съобразите дали сте инсталирали i386 или amd64 порт, за да изберете същия порт, от който ще заредите ОС
  2. на новия диск създаваме същия брой дялове, както на стария диск. тук можем да променим големината на дяловете, ако случайно някой от тях не е достатъчно голям, аз лично използвам fdisk за разделянето
  3. Уточнявам процеса за /dev/hda1, който е root дяла. За другите дялове важи същата процедура. mount-ваме новия диск в произволна директория – например /mnt/sda1, копираме всичко от / в /mnt/sda1, няма нужда да се копира /dev, /proc, /sys, /tmp но тези директории трябва да се създадат празни.
  4. След като сме копирали всички данни от всички дялове, трябва да редактираме два файла /mnt/sda1/etc/fstab и /mnt/sda1/boot/grub/menu.lst. В първия файл заместваме всички hda с sda. Във втория файл променяме root=/dev/hda1 с root=/dev/sda1, това казва на boot loader-a, че трябва да търси ядрото на новия диск
  5. Трябва да инсталираме boot loader-a в MBR (Master Boot Record) на новия диск. Тази стъпка може да се изпълни по няколко начина в зависимост от това какъв диск използвате.  Ще разгледам по-универсалния вариант, при който не използваме инсталационния компакт диск на Дебиан. Трябва да пресъздадем proc и dev директориите в chroot средата, това става по следния начин:
    1. mount -o bind /proc /mnt/sda1/pro
    2. mount -o bind /dev /mnt/sda1/dev
    3. chroot /mnt/sda1
    4. Вече сме в chroot средата, остава единствено да инсталираме boot loader-a в MBR, това става с командата /usr/sbin/grub-install /dev/sda

Дотук добре, рестартираме сървъра, след като сме изключили стария диск за всеки случай. Всичко работеше перфектно докато не излезе нов пакет за ядрото на Дебиан, който обнових по стандартния начин apt-get update; apt-get upgrade.

Системата не зареди. Какво се случи?

При ъпдейт на ядрото се извиква един скрипт, наречен update-grub. Той не би трябвало да създаде проблем, но уви, не стана точно така. При стартиране на сървъра, той се опитва да намери ядрото на /dev/hda1, вместо на /dev/sda1. WFT? Нали работеше, сървъра е рестартиран няколко пъти и не е имало този проблем.

Оказа се, че трябва да се внимава и за коментираните редове, тъй като тази програма взема предвид и тях, за да генерира нови записи в /boot/grub/menu.lst. Реда:

# kopt=root=/dev/hda1 ro noapic

се използва от update-grub, така че този ред също трябва да се редактира, въпреки че е коментиран.