Установка PEAR на сервер под FreeBSD

Для работы некоторых PHP скриптов на сервере, порой необходима библиотека классов PHP с открытым исходным кодом — PEAR (PHP Extension and Application Repository).

Установить ее просто, достаточно набрать в shell:

#cd /usr/ports/devel/pear 
#make all install clean 

Иногда в ответ, вместо желаемого отображения хода установки можно получить:

This port requires the CLI version of PHP, but you have already installed a PHP port without CLI.
***Error code 1

Это значит, что в вашей системе не установлен PHP CLI (Command Line Interface), т.е. ваша системная командная оболочка не позволяет выполнять PHP скрипты, что необходимо при сборке PEAR.
Поэтому делаем следующее:

# cd /usr/ports/lang/php5 
# make config 

Устанавливаем галочки Build CLI version и Build Apache module (остальные по необходимости). Потом жмем “ОК”.

# cd /var/db/pkg 
# portupgrade -rf php5-* 

Если утилита portupgrade не установлена, то ее можно установить:

# cd /usr/ports/ports-mgmt/portupgrade 
# make install clean 

PHP будет собран как mod_php так и как CLI и друг-другу мешать они не будут.

Оригинал:  mppks.ru/vds/ustanovka-pear-na-server-pod-freebsd/

Рубрика: *Web, FreeBSD | Оставить комментарий

Centos 6/RHEL install Mutt Email Client Gmail IMAP

Mutt is a very popular and powerful command line client for Email handling and is the tool of choice for many Linux power users.

It is fairly straightforward to configure Mutt Email client for Gmail IMAP on Centos 6/RHEL with a few simple commands.

This is a quick guide to getting it up and running on Centos 6/RHEL in basic IMAP mode for Gmail. If you want more then you could do much worse than checking out the guide at the Arch Linux wiki.

However, if you just want to get your Mutt working with Gmail Centos 6/RHEL then do the following.

First install it.

$sudo yum -y install mutt

Make a directory for the files.

$mkdir .mutt   (or /home//.mutt

Now create and edit a muttrc file

vi ~/.mutt/muttrc        (‘i’ to insert the following)

set imap_user = ‘[email protected]
set imap_pass = ‘your password’
set spoolfile = imaps://imap.gmail.com:993/INBOX
set folder = imaps://imap.gmail.com:993
set record=”imaps://imap.gmail.com/[Gmail]/Sent Mail”
set postponed=”imaps://imap.gmail.com/[Gmail]/Drafts”
set header_cache=”~/.mutt/cache/headers”
set message_cachedir=”~/.mutt/cache/bodies”
set certificate_file=»~/.mutt/certificates»

Save the file (Esc ZZ)

$mutt

Should open up a mutt window accessing your Emails.

Оригинал: minimallinux.blogspot.com/2012/08/centos-6rhel-install-mutt-email-client.html

Рубрика: *Mail, FreeBSD, Postfix | 1 комментарий

Несколько виртуальных интерфейсов через netgraph

Допустим, вам необходимо создать несколько виртуальных интерфейсов, которые будут работать как обычные, не зависимые друг от друга. Это очень легко делается через netgraph. Приведу лишь скрипт, который создаст 3 виртуальных интерфейса, не трогая при этом физический:

#!/bin/sh
 ngctl mkpeer em0: bridge lower link0
 ngctl connect em0: em0:lower upper link1
 ngctl name em0:lower em0Bridge
 ngctl mkpeer em0:lower eiface link3 ether
 ngctl mkpeer em0:lower eiface link4 ether
 ngctl mkpeer em0:lower eiface link5 ether

где em0 – наш физический интерфейс. Теперь вывод ifconfig выглядит так:

# ifconfig
em0: flags=8843 metric 0 mtu 1500
        options=9b
        ether 08:00:27:e3:37:ae
        inet 10.10.10.94 netmask 0xffffff00 broadcast 10.10.10.255
        nd6 options=29
        media: Ethernet autoselect (1000baseT )
        status: active
lo0: flags=8049 metric 0 mtu 16384
        options=3
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21
ngeth0: flags=8843 metric 0 mtu 1500
        options=28
        ether 00:00:00:00:00:00
        nd6 options=29
        media: Ethernet autoselect (1000baseT )
        status: active
ngeth1: flags=8802 metric 0 mtu 1500
        options=28
        ether 00:00:00:00:00:00
        nd6 options=29
        media: Ethernet autoselect (1000baseT )
        status: active
ngeth2: flags=8802 metric 0 mtu 1500
        options=28
        ether 00:00:00:00:00:00
        nd6 options=29
        media: Ethernet autoselect (1000baseT )
        status: active

Но как видим MAC-адреса у нас пустые. Присвоим IP и MAC адреса на ngeth0:

#ifconfig ngeth0 link 00:11:22:33:44:01
#ifconfig ngeth0 inet 192.168.1.254 netmask 255.255.255.0
#ngeth0: flags=8843 metric 0 mtu 1500
        options=28
        ether 00:11:22:33:44:01
        inet 192.168.1.254 netmask 0xffffff00 broadcast 192.168.1.255
        nd6 options=29
        media: Ethernet autoselect (1000baseT )
        status: active

Оригинал: skeletor.org.ua/?p=3007

Рубрика: *CentOS, *Lan&Wan, *Unix,*Linux, *Сети, FreeBSD | 1 комментарий

Два провайдера.

Часто бывает так, что локальная сеть имеет два выхода в Internet, то есть двух провайдеров. Пусть это будут ISP1 и ISP2. эти два канала можно использовать следующим образом:

  • одновременно использовать два канала для load-balancing
  • один канал основной, второй backup’ный

второй канал можно использовать также двумя способами

  • использовать его при падении основного
  • при загрузке основного канала на Х% подключать backup’ный

Если рассматривать вырожденный случай, когда провайдер один и два канала, то тут всё просто. Надо прописать два маршрута по умолчанию одинаковыми метриками

ip route 0.0.0.0 0.0.0.0 195.0.1.2
ip route 0.0.0.0 0.0.0.0 195.0.1.6

И соответственно если мы хотим сделать per-packet load-balancing, то на всех интерфейсах, которые соединяют нас с провайдером, ставим no ip route-cache, если же нужно per-destination, то на всех — ip route-cache. Заметьте, что если хотя бы на одном выходном интерфейсе используется NAT, то нельзя использовать per-packet, так как это приведёт к пропаданию пакетов. Также применение policy routing выключает fast switching.

Если ваша циска поддерживает cef (cisco express forwarding), то тогда для per-packet

ip route-cache cef
ip cef per-packet

для per-destination

ip route-cache cef
ip cef per-destination

можно также договорится с провайдером, и объединить два канала в один логический, используя ppp multilink.

Если провайдеров — два, то они оба а общем случае, предоставляют вам по блоку адресов. Как их использовать? Разместить их за NAT’ом и скрыть топологию сети или использовать реальные адреса? Первое более просто реализовать и к томуже не будет потерян fast switching. Если рассматривать второе, то устройства, имеющие ip адреса первого провайдера, должны ходить через ISP1, а второго — через ISP2. Если упал канал второго провайдера, то устройства с ip адресами из блока второго провайдера не смогут выйти в Internet. Хорошо бы использовать первый канал, но ip адреса — не те. Надо использовать NAT. Если же выйдет из строя первый, то аналогично занатим и пустим через второго.

Так как имеем в сети два блока адресов, то надо применять source-routing. Так как нам нужно определить source ip-адрес пакета, и в зависимости от этого, отправить его либо ISP1 либо ISP два.

Если циска старая ли ios ip only, то есть не поддерживает VLAN’ы на интерфейсе будет что-то типа

!
interface Ethernet0
 ip address 195.0.1.1 255.255.255.0
 ip address 195.0.2.1 255.255.255.0 secondary
 ip nat inside
 ip policy route-map ISP 
!

если поддерживает ip plus и выше

!
interface Ethernet0/0.1
 encapsulation dot1Q 1
 ip address 195.0.1.1 255.255.255.0
 ip nat inside
 ip policy route-map ISP1
!
interface Ethernet0/0.2
 encapsulation dot1Q 2
 ip address 195.0.2.1 255.255.255.0
 ip nat inside
 ip policy route-map ISP
!

теперь разберёмся с route-map’ами

если вы решили разместить их за NAT’ом и скрыть топологию сети, то эту часть можно пропустить. Надо только обязательно включить fast switching, иначе работать не будет. В случае же когда используются реальные адреса, то если внутренний интерфейс не поддерживает VLAN, пишем следующее

! если это пакет локальный пакет, то пусть циска сама роутит... 
route-map ISP deny Local
 match ip address 100
! если пакет с адресом из первого провайдера и канал up 
! то отправляем его первому провайдеру
route-map ISP permit 20
 match ip address ISP1
 set ip next-hop 194.16.0.5
! если пакет с адресом из второго провайдера и канал up 
! то отправляем его второму провайдеру
route-map ISP permit 30
 match ip address ISP2
 set ip next-hop 194.16.0.9
!

если внутренний интерфейс поддерживает VLAN или внутренних интерфейсов два, то

!
[skip]
!
route-map ISP1 permit 20
 match ip address ISP1
 set ip next-hop 194.16.0.5
!
[skip]
!
route-map ISP2 permit 20
 match ip address ISP2
 set ip next-hop 194.16.0.9
!

Local — это ACL, который ловит пакеты, source и destination адреса которых из блоков, предоставленных первым или вторым провайдером.
ISP1 — это ACL, который ловит пакеты с source-адресами из блока, предоставленного ISP1
ISP2 — это ACL, который ловит пакеты с source-адресами из блока, предоставленного ISP2
ISP — это ACL, который ловит пакеты с source-адресами из блоков, предоставленных ISP1 и ISP2

и так… разобрались. Пакеты будут посланы на нужные интерфейсы. Теперь разбираемся с NAT’ом.

Для NAT’а также нужно написать route-map.

!
route-map ISP2-NAT permit 10
 match ip address ISP1
 match interface Serial0/1
!
route-map ISP1-NAT permit 10
 match ip address ISP2
 match interface Serial0/0
!
! ISP1-pool - это пул ip-адресов, которые будут 
! использованы при падении второго канала
ip nat inside source route-map ISP1-NAT pool ISP1-pool overload
!
! ISP2-pool - это пул ip-адресов, которые будут 
! использованы при падении первого канала
ip nat inside source route-map ISP2-NAT pool ISP2-pool overload

Оригинал: cisco.far.ru/2isp.html

Рубрика: *CentOS, *Lan&Wan, *Unix,*Linux, *Windows, *Сети, FreeBSD, Hyper-V | Оставить комментарий

фильтрация UDP Linux\FreeBSD

По многочисленным наблюдениям системных администраторов различных компаний предоставляющих доступ к сети интернет, с начала февраля 2010 года наблюдается ежедневный лавинообразный рост количества пакетов в сети, их фрагментация, а также существенный рост исходящего трафика. Данная проблема связана с новой версией торрент-клиента uTorrent вышедшего 3 февраля 2010 года с поддержкой протокола uTP, работающего поверх UDP. Призванный снизить нагрузку на провайдеров протокол uTP в результате привел к обратному эффекту. Для относительно безболезненной для клиента фильтрации uTP на шлюзе под управлением Linux рекомендуется использовать следующее правило:


   /sbin/iptables -I FORWARD -m udp -p udp -m string 
         --hex-string "|7F FF FF FF AB|" --algo kmp \
      --from 40 --to 44 -m statictic 
--mode random --probability 0.90 -j DROP

Мониторинг работы правила:

   iptables -L FORWARD -nv | grep statist

Для FreeBSD правило будет выглядеть следующим образом:

ngctl mkpeer ipfw: bpf 2 main ngctl name ipfw:2 utp_filter ngctl msg utp_filter: setprogram { thisHook=\"main\" ifMatch=\"\" ifNotMatch=\"main\" bpf_prog_len=12 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=8 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=6 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=4 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=64 jt=0 jf=0 k=20 } { code=21 jt=0 jf=1 k=2147483647 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }   ipfw add 2 netgraph 2 udp from any to any iplen 0-128 

Мониторинг:

   ngctl msg utp_filter: getstats \"main\"

оригинал: cname.org.ua/2010/06/udp-linuxfreebsd/

Рубрика: *CentOS, *Lan&Wan, *Unix,*Linux, *Сети, FreeBSD | Оставить комментарий