on isa0
ichwd0: Intel ICH9R watchdog timer (ICH9 or equivalent)
Теперь ясно, что у нас действительно есть такой таймер. Действуем дальше.
Для автоматической загрузки драйвера добавляем в /boot/loader.conf:
ichwd_load="YES"
Для запуска демона, "дергающего" watchdog, добавляем в /etc/rc.conf:
watchdogd_enable="YES"
Этот демон будет периодически "дергать" таймер, сообщая ему, что система все еще жива.
Будьте осторожны с этим демоном! Если убить его как обычно (т.е. 15-м сигналом),
он аккуратно снимет таймер с "боевого дежурства". Но если убить его 9-м сигналом,
то таймер перестанет получать наши сигналы, и решит, что система зависла. Произойдет перезагрузка.
Иногда watchdog надо включить в BIOS. На некоторых платах watchdog есть, но воспользоваться им невозможно.
Иногда при инициализации драйвера появляется ругань на параллельный порт, но ее можно игнорировать.
Проверено на FreeBSD 7.1-BETA2.
Автор: Дмитрий Иванов
http://www.opennet.ru/tips/info/1878.shtml
UNIX (в основном FreeBSD) Полезное Tcpdump
tcpdump -ni vlan3 -e 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn'
выведет все syn пакеты, т.е. запросы на установку TCP соединения, c указанием IP и MAC
tcpdump (examples)
Here are some more tcpdump examples for some more advanced use cases. For simple usage examples, see the main tcpdump topic.
Filter on protocol (ICMP) and protocol-specific fields (ICMP type)
Capture all ICMP with some exceptions. For example, if a host runs lots of pings (SmokePing for example), it is useful to suppress ICMP echo requests and replies from dumped packets:
: root@myhost:~# tcpdump -n icmp and 'icmp[0] != 8 and icmp[0] != 0'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
10:05:02.338826 IP 10.10.33.34 > 10.10.121.2: icmp 36: time exceeded in-transit
10:05:02.587494 IP 10.10.144.66 > 10.10.121.2: icmp 36: host 10.10.144.69 unreachable - admin prohibited filter
10:05:02.699110 IP 10.10.153.118 > 10.10.121.2: icmp 36: host 10.10.153.122 unreachable - admin prohibited filter
10:05:04.319451 IP 10.10.33.34 > 10.10.121.2: icmp 36: time exceeded in-transit
10:05:07.363278 IP 10.10.148.138 > 10.10.121.2: icmp 36: host 10.10.148.138 unreachable - admin prohibited filter
10:05:10.220491 IP 10.10.33.34 > 10.10.121.2: icmp 36: time exceeded in-transit
10:05:10.476082 IP 10.10.144.66 > 10.10.121.2: icmp 36: host 10.10.144.69 unreachable - admin prohibited filter
10:05:10.638611 IP 10.10.153.118 > 10.10.121.2: icmp 36: host 10.10.153.122 unreachable - admin prohibited filter
8 packets captured
8 packets received by filter
0 packets dropped by kernel
Same command can be used with predefined header field offset (icmptype) and ICMP type field values (icmp-echo and icmp-echoreply):
: root@myhost:~# tcpdump -n icmp and icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply
Filter on TOS field
Capture all IP packets with a non-zero TOS field (one byte TOS field is at offset 1 in IP header):
: root@myhost:~# tcpdump -v -n ip and ip[1]!=0
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
10:40:03.422052 IP (tos 0x10, ttl 64, id 58534, offset 0, flags [DF], proto 6, length: 100) 10.10.121.2.ssh > 10.10.1.240.33006: P 166745014:16674506
10:40:03.422189 IP (tos 0x10, ttl 64, id 58536, offset 0, flags [DF], proto 6, length: 164) 10.10.121.2.ssh > 10.10.1.240.33006: P 48:160(112) ack 1
10:40:03.422325 IP (tos 0x10, ttl 64, id 58538, offset 0, flags [DF], proto 6, length: 308) 10.10.121.2.ssh > 10.10.1.240.33006: P 160:416(256) ack 1
10:40:03.422906 IP (tos 0x10, ttl 62, id 29167, offset 0, flags [DF], proto 6, length: 52) 10.10.1.240.33006 > 10.10.121.2.ssh: . [tcp sum ok] ack 48
...
Filter on TTL field
Capture all IP packets with TTL? less than some value (on byte TTL field is at offset 8 in IP header):
: root@myhost:~# tcpdump -v ip and 'ip[8]<2'
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
10:30:51.013620 IP (tos 0xc0, ttl 1, id 44119, offset 0, flags [none], proto 2, length: 28) ltest1.arnes.si > 239.255.255.255: igmp v2 report 239.25
10:30:54.035124 IP (tos 0xc0, ttl 1, id 44120, offset 0, flags [none], proto 2, length: 28) ltest1.arnes.si > CISCO-RP-DISCOVERY.MCAST.NET: igmp v2
10:30:56.049046 IP (tos 0xc0, ttl 1, id 44121, offset 0, flags [none], proto 2, length: 28) ltest1.arnes.si > SAP.MCAST.NET: igmp v2 report SAP.MCAS
10:30:56.051242 IP (tos 0xc0, ttl 1, id 44122, offset 0, flags [none], proto 103, length: 726) ltest1.arnes.si > PIM-ROUTERS.MCAST.NET: PIMv2, lengt
Join / Prune (3), upstream-neighbor: rarnes13-F2-0x200.arnes.si
1 group(s), holdtime: 3m30s
group #1: SAP.MCAST.NET, joined sources: 85, pruned sources: 0
joined source #1: hayakawa.lava.net(S)
joined source #2: 64.251.62.34(S)
joined source #3: 64.251.62.35(S)
joined source #4: 64.251.62.36(S)
joined source #5: ...)
4 packets captured
4 packets received by filter
0 packets dropped by kernel
Filter on TCP flags (SYN/ACK)
Catch TCP SYN packets:
: root@myhost:~# tcpdump -n tcp and port 80 and 'tcp[tcpflags] & tcp-syn == tcp-syn'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:15:00.302219 IP 10.10.1.240.33111 > 10.10.121.2.http: S 3284556452:3284556452(0) win 5840
13:15:00.302272 IP 10.10.121.2.http > 10.10.1.240.33111: S 975107341:975107341(0) ack 3284556453 win 32767 In the example above, all packets with TCP SYN flag set are captured. Other flags (ACK, for example) might be set also. Packets which have only TCP SYN flags set, can be captured like this:
: root@myhost:~# tcpdump tcp and port 80 and 'tcp[tcpflags] == tcp-syn'
Catch TCP SYN/ACK packets (typically, responses from servers):
: root@myhost:~# tcpdump -n tcp and 'tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:30:19.501816 IP 10.10.121.2.ssh > 10.10.1.240.33114: S 1940763772:1940763772(0) ack 4250485572 win 32767 Same thing:
: root@myhost:~# tcpdump -n tcp and 'tcp[tcpflags] & tcp-syn == tcp-syn' and 'tcp[tcpflags] & tcp-ack == tcp-ack'
Catch ARP packets
: root@myhost:~# tcpdump -vv -e -nn ether proto 0x0806
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
08:50:35.842999 00:30:48:27:xx:ff > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: arp who-has 193.2.x.y tell 193.2.x.w
08:50:36.841814 00:30:48:27:xx:ff > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: arp who-has 193.2.x.y tell 193.2.x.w
08:50:37.841396 00:30:48:27:xx:ff > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: arp who-has 193.2.x.y tell 193.2.x.w
...
08:53:18.913968 00:14:38:00:e7:d7 > 00:30:48:27:6a:ff, ethertype ARP (0x0806), length 42: arp reply 193.2.x.z is-at 00:14:38:00:xx:yy
Filter on IP packet length
Catch packets of a specified length (IP packet length (16 bits) is located at offset 2 in IP header):
: root@myhost:~# tcpdump -l icmp and '(ip[2:2]>50)' -w - |tcpdump -r - -v ip and '(ip[2:2]<60)'
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
reading from file -, link-type EN10MB (Ethernet)
11:03:59.420856 IP (tos 0x0, ttl 249, id 0, offset 0, flags [none], proto 1, length: 56) lpttlj3-tk.arnes.si > myhost.arnes.si: icmp 36: time exceeded
11:04:02.274135 IP (tos 0x0, ttl 251, id 17095, offset 0, flags [none], proto 1, length: 56) rsik-orm.arnes.si > myhost.arnes.si: icmp 36: host rsik-o
11:04:05.452802 IP (tos 0x0, ttl 249, id 34021, offset 0, flags [none], proto 1, length: 56) 10.10.144.66 > myhost.arnes.si: icmp 36: host ro-mislinja
11:04:05.496384 IP (tos 0x0, ttl 251, id 4071, offset 0, flags [none], proto 1, length: 56) rs-sb-mb.arnes.si > myhost.arnes.si: icmp 36: host ss-sb-m
<^C>
814 packets captured
814 packets received by filter
0 packets dropped by kernel
tcpdump: pcap_loop: error reading dump file: Interrupted system call
Remark: due to some bug in tcpdump, the following command doesn't catch packets as expected:
: root@myhost:~# tcpdump -v -n icmp and '(ip[2:2]>50)' and '(ip[2:2]<60)'
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
[no output]
Because of this, two tcpdumps were used in the example above (tcpdump -l ... -w - |tcpdump -r -...). Option -l is needed to force first tcpdump program to output captured data imeadiately to the second program.
Filter on encapsulated content (ICMP within PPPoE)
Capturing packets from PPPoE session. For example: we mirror a link that connects xDSL modem and home PC or router. Mirrored packets are ethernet frames with PPPoE/IP packets encapsulated. In the following example, we are looking for ICMP packets in PPPoE frames. A simple command like
: root@myhost:~# tcpdump -v -n icmp
will not produce expected results, because packets that we monitor are being encapsulated into a PPPoE frames. Of course, tcpdump can't locate IP protocol == ICMP at normal offset in an ethernet frame. We must therefore take into account the additional headers: 14 bytes for ethernet and 8 bytes for PPPoE. IP protocol is located at offset 9 in the IP header, which gives us offset 31 in the mirrored ethernet frame. Therefore, ICMP packets (protokol 1) are captured with
: root@myhost:~# tcpdump -v -n ether[31] = 1
Simultaneous output to dump file and (decoded) standard output
You may want to dump packets to a file, but still see the decoded headers "live" on your terminal. While this is not supported directly by tcpdump you can use the powerful pipe mechanism to obtain this effect:
: leinen@bonadea[leinen]; sudo tcpdump -s 0 -i tun0 -c 10 -w - -U | tee foo.pcap | tcpdump -n -r -
tcpdump: WARNING: arptype 65534 not supported by libpcap - falling back to cooked socket
tcpdump: listening on tun0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
reading from file -, link-type LINUX_SLL (Linux cooked)
11:04:19.980160 IP 130.59.28.18 > 130.59.10.36: ICMP echo request, id 32872, seq 65, length 64
11:04:19.984536 IP 130.59.10.36 > 130.59.28.18: ICMP echo reply, id 32872, seq 65, length 64
11:04:20.984104 IP 130.59.28.18 > 130.59.10.36: ICMP echo request, id 32872, seq 66, length 64
11:04:20.987571 IP 130.59.10.36 > 130.59.28.18: ICMP echo reply, id 32872, seq 66, length 64
11:04:21.992102 IP 130.59.28.18 > 130.59.10.36: ICMP echo request, id 32872, seq 67, length 64
11:04:21.995676 IP 130.59.10.36 > 130.59.28.18: ICMP echo reply, id 32872, seq 67, length 64
11:04:22.996109 IP 130.59.28.18 > 130.59.10.36: ICMP echo request, id 32872, seq 68, length 64
11:04:22.999714 IP 130.59.10.36 > 130.59.28.18: ICMP echo reply, id 32872, seq 68, length 64
11:04:24.004176 IP 130.59.28.18 > 130.59.10.36: ICMP echo request, id 32872, seq 69, length 64
10 packets captured
10 packets received by filter
0 packets dropped by kernel
11:04:24.007083 IP 130.59.10.36 > 130.59.28.18: ICMP echo reply, id 32872, seq 69, length 64
: leinen@bonadea[leinen]; ls -l foo.pcap
-rw-r--r-- 1 leinen leinen 1184 2008-11-28 11:04 foo.pcap
Explanation: The first tcpdump call captures the packets, and dumps the (binary) data to standard output (-w -). The -U (unbuffered) flag causes each packet to be written out immediately, circumventing the normal output buffering. This preserves the real-time characteristics better. The binary packets are piped to the tee command, which writes them to a file (foo.pcap) and at the same time outputs them again on standard output. From there, they are decoded using tcpdump -r -.
UNIX (в основном FreeBSD) Полезное Сопоставление логинов и хостов для упрощения входа по SSH
При использовании разных имен пользователей на разных хостах часто приходится долго перебирать их и вспоминать,
какой из аккаунтов заведен для данной машины. OpenSSH позволяет определить, какое из имен использовать
для данного хоста по умолчанию.
Пример настроек .ssh/config:
Host *.test1.ru
ServerAliveInterval 60
User user1
Host *.test2.ru
Compression yes
ForwardX11 yes
IdentityFile ~/.ssh/id_dsa_ext
User user2
Теперь при входе "ssh test.test1.ru" будет использовано имя user1, а при "ssh host.test2.ru" - имя user2.
Взято тут: http://www.opennet.ru/tips/info/2158.shtml
UNIX (в основном FreeBSD) Полезное Зашифровать файл или директорию
Encode:
openssl enc -e -aes-256-cbc -k PASSWORD -in FILE_IN -out FILE_OUT
или
cat FILE_IN | openssl enc -e -aes-256-cbc -k PASSWORD > FILE_OUT
Decode:
openssl enc -d -aes-256-cbc -k PASSWORD -in FILE_encoded_IN -out FILE_OUT
Encode dir:
tar -czf - /path/to/DIR_IN | openssl enc -e -aes-256-cbc -k PASSWORD > archive.tar.gz.encoded
Decode dir:
openssl enc -d -aes-256-cbc -in /path/to/archive.tar.gz.encoded | tar -xz
UNIX (в основном FreeBSD) Полезное IPMI и ipmitool
IPMI
========
Посмотреть наличие IPMI в системе:
установить: /usr/ports/sysutils/dmidecode
запустить: dmidecode | grep -A6 IPMI
IPMI Device Information
Interface Type: KCS (Keyboard Control Style)
Specification Version: 2.0
I2C Slave Address: 0x10
NV Storage Device: Not Present
Base Address: 0x0000000000000CA2 (I/O)
Register Spacing: Successive Byte Boundaries
Установить: /usr/ports/sysutils/ipmitool/
Подгрузить: kldload ipmi
Дописать: /boo/loader.conf
ipmi_load="YES"
Настроить:
X = channel num, value 1-14
ipmitool lan print X
ipmitool lan set X ipaddr XX.XX.XX.XX
ipmitool lan set X netmask 255.255.XX.XX
ipmitool lan set X defgw ipaddr XX.XX.XX.XX
ipmitool lan set X vlan id XX
ipmitool user list X
ipmitool user set name Y root #(Y - user number)
ipmitool user set password Y mypass
ipmitool user enable Y
ipmitool user priv Y 4 1
UNIX (в основном FreeBSD) Полезное Dump/Restore
Команды выполняются на клонируемой машине.
Делаем слепок:
# dump -0 -L -f - /usr > /mnt/hdd2/usr.img
Восстанавливаем из слепка:
# newfs /dev/ad4s1f
# mount /dev/ad4s1f /usr
# cd /usr
# restore -rf /mnt/hdd2/usr.img
Тоже самое, но через SSH:
# dump -0 -L -f - /usr | gzip -9 - | ssh root@backup "cat - > /usr/BACKUP/server.usr.img.gz"
# cd /usr
# ssh root@backup "gzip -d -c /usr/BACKUP/server.usr.img.gz -" | restore -rf -
UNIX (в основном FreeBSD) Полезное Неудаляемые файлы
Так борятся с "неудаляемыми" файлами:
rm: obj.old/usr/src/lib32/usr/lib32/libc.so.7: Operation not permitted
chflags -R noschge obj.old obj.old2
rm -rf obj.old obj.old2
UNIX (в основном FreeBSD) BASH Алиасы команд в BASH
Алиасы команд в BASH:
alias update="portsnap fetch update && portupgrade -a"
поднятия после ребута:
/etc/profile
alias update="portsnap fetch update && portupgrade -a"
посмотреть текущие алиасы:
alias -p
соответственно при наборе update в шелле будет выполняться команда "portsnap fetch update && portupgrade -a"
UNIX (в основном FreeBSD) BASH Bash: автодополнение имен хостов по нажатию TAB
Для автодописывания хостов из файла /etc/hosts при командах ssh, telnet и т.д. по нажатию tab на локальной машине в файл /root/.bashrc добавляем:
complete -A hostname ssh rsh telnet rlogin ftp ping fping host traceroute nslookup
что бы тоже самое работало на удаленном хосте пишем тоже самое в файл: /root/.bash_profile
можно брать из фйала ssh/knowhosts, для этого пишем:
complete -W "$(echo `cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | uniq | grep -v "\["`;)" ssh
http://www.macosxhints.com
http://bappoy.pp.ru/2008/04/03/bash-autocompletion/
UNIX (в основном FreeBSD) BASH Bash возврат в предыдущую директорию
Например мы зашли в две директории:
cd /usr/ports
cd /usr/local/www
находясь в www хотим вернуться в ports
пишем cd -
и сразу возвращаемся в /usr/ports
если написать cd - ещё раз, то окажемся в /usr/local/www
UNIX (в основном FreeBSD) BASH Не сохранять историю терминала
/root/.profile:
export HISTFILE=/dev/null
Добавить перед запуском терминала:
export HISTFILE=/dev/null;/usr/local/bin/mrxvt -tn rxvt
UNIX (в основном FreeBSD) Разное Переходник USB->Com
Юзание переходника USB->Com:
1. kldload uplcom.ko
2. kldstat | grep uplcom (убедиться что подгрузился)
2. подключить переходник
3. cu -l /dev/cuaU0
UNIX (в основном FreeBSD) Разное Монтирование ISO образов
Монтирование ISO'шников (FreeBSD 5.x и выше):
mdconfig -a -t vnode -f /ftp/example.iso -u 1
mount_cd9660 /dev/md1 /mnt/cdrom
UNIX (в основном FreeBSD) Разное Объединение двух HDD в один
Объединение используемого и нового диска в одно пространство:
//Создание файла для "псевдодиска" размером ZZМб:
#dd if=/dev/zero of=/usr/left_space0 bs=1024k count=ZZ
//Присоединение его к /dev/md1:
#mdconfig -a -t vnode -f /usr/left_space0 -u 1
//Строим stripe:
#gvinum
gvinum -> create
drive a device /dev/md1
drive b device /dev/adX
volume stripe
plex org striped 512k
sd length ZZm drive a
sd length YYm drive b
gvinum -> exit
newfs /dev/gvinum/stripe
mount /dev/gvinum/stripe /mnt
UNIX (в основном FreeBSD) Разное Программы под X-сы
Video:
/usr/ports/multimedia/mplayer
/usr/ports/multimedia/vlc
Audio: /usr/ports/audio/mpg123
CHM:
/usr/ports/deskutils/kchmviewer
/usr/ports/deskutils/gnochm
/usr/ports/deskutils/kchm
/usr/ports/deskutils/xchm
DJVU: /usr/ports/graphics/djvulibre
PDF:
/usr/ports/print/acroread7/
/usr/ports/graphics/gpdf
Images:
/usr/ports/graphics/gimp
/usr/ports/graphics/xnview/
Excel: /usr/ports/math/gnumeric/
Word: /usr/ports/editors/abiword
Calc: /usr/ports/math/gcalctool
Write CD-DVD: /usr/ports/sysutils/k3b/
IRC: /usr/ports/irc/xchat2
Torrent: /usr/ports/net-p2p/ktorrent
DC: /usr/ports/net-p2p/valknut
Mail: /usr/ports/mail/thunderbird
Remote desktop client: /usr/ports/net/grdesktop
Terminals:
/usr/ports/x11/mrxvt (./configure --with-term=Eterm)
/usr/ports/x11/eterm
/usr/ports/x11/gnome-terminal
Music player: /usr/ports/russian/xmms
ICQ: /usr/ports/net-im/sim-im
Clock: /usr/ports/x11-clocks/wmclock
Мониторинг состояния системы: /usr/ports/sysutils/gkrellm2
в портах есть плагины, найти можно так:
cd /usr/ports
make search name=gkrellm
UNIX (в основном FreeBSD) Разное Какие процессы используют звук в X11
Узнать какие процессы используют звук:
fstat ¦ grep '\(dsp\¦mixer\)'
UNIX (в основном FreeBSD) Разное альтернатива systat
альтернатива systat
gstat
UNIX (в основном FreeBSD) Разное Средства мониторинга
FreeBSD: Средства мониторинга
Во FreeBSD существует огромное количество средств для получения информации о функционировании системы. Однако некоторые из них спрятаны немного нетривиально.
1. Информация о дисках
1. mount - показывает смонтированные подразделы и флаги из монтирования
2. df - показывает смонтированные подразделы, их размер и свободное место на них
3. fdisk /dev/ad0 - показывает информацию о диске ad0 и разделах на нем
4. disklabel /dev/ad0s1 - показывает список подразделов в первом разделе диска ad0
5. swapinfo - показывает список подразделов свопинга на дисках и их использование
6. fstat - показывает список открытых файлов (имена файлов не выводятся)
7. pstat -f - выводит список открытых файлов (имена файлов не выводятся)
8. systat -vmstat n - каждые n секунд выводит количество транзакций с диском в секунду, объем записанных/считанных данных на диск в секунду, средний размер транзакции и процент времени в течение которого диск был занят работой.
9. iostat - выводит информацию, аналогичную systat -vmstat, но не выводит занятости диска по времени и может выводить среднюю статистику с момента загрузки.
10. vmstat - выводит количество операций на диске в секунду
11. /stand/sysinstall - можно посмотреть и изменить разметку диска и монтирование
12. less /etc/fstab - таблица монтирования при загрузке
2. Информация о процессоре и памяти
1. systat -vmstat n - вывод показателей загрузки (number of jobs in the run queue averaged over 1, 5 and 15 min), состояния памяти (в страницах), количества процессов в группах, количество вызовов специальных функций ядра (traps, interrupts, system calls, network software interrupts), использование процессора, трансляции имен, активность свопа, прерывания, а также информацию по использованию диска (см)
2. top - аналогичная информация в сокращенном виде + использование памяти и свопа в мегабайтах, список процессов, отсортированных по использованию процессора.
3. ps afx - список запущенных процессов и время процессора на каждый
3. Информация о сети
1. ifconfig - список сетевых интерфейсов с ip-адресами, масками, mac-адресами, типами карт и их статусами (названия карточек можно посмотреть в файле конфигурации ядра)
2. systat -ifstat n - объем трафика за n секунд на всех сетевых интерфейсах
3. netstat - вывод активных сетевых соединений (сокетов)
4. systat -netstat n - аналог netstat в реальном времени
5. systat -ip n - таблица IP-пакетов и ошибок по типам за n секунд
6. systat -tcp n - таблица TCP-пакетов и ошибок по типам за n секунд
7. systat -icmp n - таблица ICMP-пакетов и ошибок по типам за n секунд
8. netstat -ibt - список интерфейсов, разбитых по ip-адресам (!) с объемом трафика на каждом, количеством ошибок, коллизий, значением watchdog-таймера
9. netstat -r - таблица маршрутизации
10. arp -a - таблица ARP
11. tcpdump -i rl0 host 192.168.61.20 and port 80 - сниффер пакетов на интерфейсе rl0, фильтрующий пакеты, содержащие адрес 192.168.61.20 и порт 80
12. trafshow -i rl0 - программа для сортировки и вывода сетевых потоков (устанавливается дополнительно пакетом или из портов)
13. netstat -Lan показывает размеры очередей на слушающих портах.
4. Службы времени
1. date - выводит текущее время и дату
2. w - выводит, сколько времени назад система загрузилась и залогиненных пользователей
3. last - выводит историю перезагрузок и входов пользователей
UNIX (в основном FreeBSD) Разное Update портов (обновление дерева портов /usr/ports)
For FreeBSD port upgrade / Обновить дерево портов:
Три варианта:
1. portsnap fetch update
после первого запуска и закачки snapshot`а потребуется единожды выполнить команду:
portsnap extract
о чем он напишет в консоли
2. установить /usr/ports/net/cvsup-without-gui
создать файл - /etc/cvsup.conf:
*default host=cvsup4.ru.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_6_1 #правильно указать версию BSD
*default delete use-rel-suffix
*default compress
ports-all
далее запуск - cvsup /etc/cvsup.conf
3. не устанавливая cvsup:
csup /etc/cvsup.conf
Пересобрать обновившиеся порты поможет:
/usr/ports/sysutils/portupgrade
Пересобрать все обновившиеся порты установленные на компе:
portupgrade -a
(рекомендуем прочесть man portupgrade)
UNIX (в основном FreeBSD) Разное Программы - разное
IP Subnet calc`s:
/usr/ports/net-mgmt/subcalc
/usr/ports/sysutils/prips
/usr/ports/sysutils/ipsc
/usr/ports/net-mgmt/subcalc
/usr/ports/net-mgmt/sipcalc
/usr/ports/misc/aclgen - Generate ACL for CISCO (with wildcard bits)
UNIX (в основном FreeBSD) Разное Переключение между раскладками в X11
Установить /usr/ports/x11/xxkb
Вставить в xorg.conf:
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "XkbModel" "pc101"
Option "XkbLayout" "us,ru"
Option "XkbVariant" ",winkeys"
Option "XKbOptions" "grp:ctrl_shift_toggle,grp_led:scroll_lock"
EndSection
UNIX (в основном FreeBSD) Разное Команда date
из консоли:
текущая дата минус один день:
date -v-1d '+/%Y/%m/%d'
узнать какая дата содержится в unixtime:
date -r 1208808000
узнать текущий unixtime:
date +%s
UNIX (в основном FreeBSD) Разное Звук
Кол-во каналов:
/etc/sysctl.conf
hw.snd.pcm0.vchans=4
hw.snd.maxautovchans=4
Загрузка драйверов:
cat /boot/loader.conf
snd_emu10k1_load="YES"
snd_hda_load="YES"
Рекомендуется использовать, порт:
/usr/ports/audio/esound/
/usr/local/bin/esd и /usr/local/bin/esdplay
UNIX (в основном FreeBSD) Разное Подцепляем bluetooth мышку
1. kldload ng_ubt
можно потом прописать в /boot/loader.conf
ng_ubt_load="YES"
2. /etc/rc.d/bluetooth start ubt0
если после запуска выдается
root: /etc/rc.d/bluetooth: ERROR: Unable to setup Bluetooth stack for device ubt0
то выключаем bluetooth и включаем его заново, смотрим в /var/log/messages что девайс поднялся и определился как ubt0
и снова запускаем команду, если сообщение продолжает появляться, то ждем мальца и пробуем снова, в конечном итоге подцепится.
3. осуществляем поиск девайсов
hccontrol -n ubt0hci inquiry
если найден девайс, то будет выдаваться что то типа:
Inquiry result, num_responses=1
Inquiry result #0
BD_ADDR: 00:07:61:66:35:86
Page Scan Rep. Mode: 0x1
Page Scan Period Mode: 0x2
Page Scan Mode: 00
Class: 00:25:80
Clock offset: 0x5d4c
4. перенаправляем в файл вывод bthidcontrol команды:
bthidcontrol -a 00:07:61:66:35:86 query > /etc/bluetooth/bthidd.conf
5. добавляем в /etc/rc.conf
bthidd_enable="YES"
6. /etc/rc.d/bthidd start
Все, bluetooth мыша должна ожить
Можно ещё "покурить":
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-bluetooth.html
http://www.lissyara.su/?id=1381
UNIX (в основном FreeBSD) Разное Быстрое поднятие SSL для Apache под FreeBSD
Оригинал: http://strict.spb.ru/ssl.html
Эта небольшая практическая заметка как быстро создать сертификаты для установки связи по SSL c помощью OpenSSL и быстро настроить веб-сервер Apache+mod_ssl под FreeBSD для установки защищённого соединения.
Введение
Пытаясь настроить кодированное соединение по https-протоколу, чтобы просто не гонять пароли открытым текстом, столкнулась с проблемой - развитие документации, проработка удобства, и чарующая простота не являются свойствами этой технологии. Хотя, вроде всё просто - есть дерево подписей и подписанный сертификат (грубо говоря - визитка сервера, с которым происходит соединение). Вы смотрите дерево подписей и сами думаете, доверяете вы этим подписям или нет. Или же у вас есть копия сертификата и вы сравниваете. В конце концов (и это требуется чаще всего) вам хочется не очень светиться эксклюзивными данными и вам всё равно какие там визитки. Эту простую задачу превратили в монстроидальный набор крючочков и ручечек. Мне понадобилась неделя чтобы, используя иногда по 3 статьи на разных языках одновременно , дойти до решения вопроса (у меня была задача номер три из моего списка :)
Задача
Создать конфигурацию виртуального сервера с возможностью подключения по HTTPS-протоколу для более менее безопасной передачи эксклюзивных данных (трафик будет шифроваться). Вопрос начального обмена ключами, который может повлиять на безопасность соединения, я оставлю для самостоятельного изучения, как проблему выходящую за рамки этой статьи.
Используемые инструменты
* FreeBSD-4.7
* OpenSSL 0.9.6g
* Apache/1.3.26 + mod_perl/1.27
Настройка конфигурации OpenSSL
В файлике /etc/ssl/openssl.cnf надо проделать следующие изменения:
[ CA_default ]
# Это каталог для работы с ssl
dir = .
# Это где будут лежать сертификаты
certs = $dir/ssl.crt
# Это где будут листы "отзывов подписей"
crl_dir = $dir/ssl.crl
# Здесь index file для индексирования запросов на подпись
database = $dir/index.txt
# Сюда будут писать новые сертификаты
new_certs_dir = $dir/ssl.crt
# Корневой сертификат
certificate = $dir/nemesida-ca.pem
# Серийный номер запроса
serial = $dir/serial
# Текущий лист отзывов подписей
crl = $dir/ssl.crl/nemesida.pem
# Секретный ключ для основного сертификата
private_key = $dir/ssl.key/nemesida-ca.key
RANDFILE = $dir/ssl.key/.rand #
Я так и не нашла, как обойти эти вещи заданием ключей, так что придётся править конфиг.
Создаём "корневой" сертификат
Для удобства, перейдём в каталог с конфигурацией Apache, где у меня располагаются подкаталоги с искомыми сертификатами:
# cd /usr/local/etc/apache
Корневой сертификат является корнем дерева подписей и является как бы самой ГЛАВНОЙ подписью. Секретный ключ (он нужен для того, чтобы можно было воспользоваться вашим корневым сертификатом для подписи остальных) и сертификат создаются одной командой:
# openssl req -config /etc/ssl/openssl.cnf -new -x509 -keyout ssl.key/nemesida-ca.pem -out nemesida-ca.pem -days 3650
Вас спросят пароль - введите и запомните его. Все остальные поля заполняйте так, как вам подскажет сердце. Снимите пароль с ключа:
# openssl rsa -in ssl.key/nemesida-ca.pem -out nemesida-ca.key
Если вы не сможете спасти этот ключ от посягательств, то и пароль вам не поможет.
Что делает эта строка, я затрудняюсь ответить точно, но так сделать рекомендуют:
# openssl x509 -in nemesida-ca.pem -out nemesida-ca.crt
Вот и всё - главная подпись, т.е. корневой сертификат, у вас есть. Он подписан сам собой.
Подготавливаем площадку
Следующие действия, которые надо не забыть совершить, вызывают у меня бурный восторг. Следует создать два файла с некоторой индексной информацией, создать которые openssl не может, равно как и выдать разумное сообщение по этому поводу. Создадим индексный файл (ключевое слово database из openssl.cnf):
# touch index.txt
Создадим файл серийных номеров (ключевое слово serial из openssl.cnf):
# echo '01' > serial
Этот файл должен содержать две цифры (обязательно). Если вы ещё не создавали никаких сертификатов кроме корневого, файл должен содержать 01.
Создаём сертификат сервера.
Создание сертификатов сервера состоит из процедуры создания запроса на попись, а затем подписания этого запроса в отличии от создания самоподписанного корневого сертификата. Создаём запрос на подпись нового сертификата и создаём секретный ключ к нему:
# openssl req -config /etc/ssl/openssl.cnf -new -keyout ssl.key/nemesida.pem -out ssl.csr/nemesida.pem
Вводя даные, учтите, что поле Common Name должно содержать полностью определённое доменное имя (FQDN) того сайта, где вы будете использовать https-протокол, чтобы броузеры не выдавали предупреждения о неверности имени. Снимите пароль с ключа:
# openssl rsa -in ssl.key/nemesida.pem -out nemesida.key
Подпишите запрос (подписка запроса и есть создание нового сертификата) своим корневым сертификатом:
# openssl ca -config /etc/ssl/openssl.cnf -policy policy_anything -out ssl.crt/nemesida.pem -infiles ssl.csr/nemesida.pem
Подготовьте сертификат к использованию:
# openssl x509 -in ssl.crt/nemesida.pem -out ssl.crt/nemesida.crt
Списки запросов
Создайте на всякий случай список запросов (там будут храниться и данные по отзывам подписей, если вам это когда-либо понадобится):
# openssl ca -gencrl -out ssl.crl/nemesida.pem
Настройка Apache.
В файле httpd.conf (сами найдите ваш файл конфигурации) прописываем:
NameVirtualHost *:443
DocumentRoot "/home/nemesida/www"
ServerName nemesida.ru
ScriptAlias /cgi-bin/ /home/nemesida/cgi-bin/
SSLEngine on
SSLCertificateFile /usr/local/etc/apache/ssl.rt/nemesida.crt
SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/nemesida.key
SSLCACertificateFile /usr/local/etc/apache/nemesida-ca.crt
SSLCARevocationFile /usr/local/etc/apache/ssl.crl/nemesida.crl
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
Вот собственно и всё. Запускаете Apache и проверяете.
Замечания
* Пока вы не разберётесь в работе SSL, нельзя считать соединение безопасным. В данном случае представлен быстрый вариант настройки, не дающий никаких гарантий. Практически - это защита от дурака, которой тоже пренебрегать не следует.
* Берегите секретные ключи - иначе вся эта мышиная возня не имеет смысла.
* Поддержка виртуальных хостов "name based" возможна не в полном варианте - сетрификат вы не сможете сделать различными для разных "name based" виртуальных хостов. Это связано с тем, что сначала устанавливается SSL-туннель, а затем по нему идёт обмен данными, что определяет выбор сертификатов до получения HTTP-запроса.
03-Jul-2003, Stricty
UNIX (в основном FreeBSD) Разное Конвертирование файла из одной кодировки в другую
Например из koi в windows-1251
iconv -f koi8-r -t cp1251 MY-FILE
UNIX (в основном FreeBSD) Разное Установка плагинов для браузера (Browser Plugins)
JAVA:
/usr/ports/java/jdk16/
После установки убедиться что /usr/local/lib/browser_plugins/libjavaplugin_oji.so является симлинком на /usr/local/jdk1.6.0/jre/plugin/i386/ns7/libjavaplugin_oji.so
Flash:
/usr/ports/www/linux-flashplugin7
/usr/ports/www/flashplugin-mozilla
После установки плагинов проинсталить их в браузер можно с помощью /usr/ports/www/nspluginwrapper
nspluginwrapper -v -a -i
Можно почитать тут:
http://www.lissyara.su/?id=1476
В Firefox информацию об установленных плагинах можно посмотреть введя в адресную строку
about:plugins
В Opera:
opera:plugins
UNIX (в основном FreeBSD) Разное FIND - помощь
Найти на диске файлы более 500мб:
find / -size +500M -exec ls -l {} \;
Удаление файлов старше указанной даты:
/usr/bin/find /var/ftp -type f -mtime +30d -delete
Сделать chmod только на директории:
find /path/to/dir -type d -exec chmod g+w {} \;
Сделать chmod только на файлы:
find ./path/to/dir -type f -exec chmod a-x {} \;
Найти файлы модифицированные за последние сутки:
find /path/to/dir -mtime -1 -type f
Найти файлы старше года назад и отпечатать:
find /path/to/dir -type f -mtime +365 -print
Найти файлы старше года назад и отпечатать и переместить:
find /path/to/dir -type f -mtime +365 -print -exec mv '{}' /new/path/{} \;
UNIX (в основном FreeBSD) Разное Очистка swap
Если свободной памяти для вмещения swap достаточно
Перенести инфу из swap в память и отмонтировать:
swapoff -a
по окончанию напишет в консоль подобное:
swapoff: removing /dev/ad8s1b as swap device
Затем примонтировать swap обратно:
swapon -a
напишет в консоль подобное:
swapon: adding /dev/ad8s1b as swap device
получаем чистый и yже занятый swap
UNIX (в основном FreeBSD) Разное Температура HDD
Установить порт:
/usr/ports/sysutils/smartmontools
Затем командой смотрим температуру, например для диска ad4:
/usr/local/sbin/smartctl -a /dev/ad4 | grep '194 Temper' | awk '{ print $10 }'
UNIX (в основном FreeBSD) Разное kernel environment
kenv -- dump or modify the kernel environment
производитель, серийник, версия BIOS и т.п.:
kenv | grep smbios
для вывода инфы необходимо устройство:
только должно быть устройство (см. pciconf -lv):
ichsmb0@pci0:31:3: class=0x0c0500 card=0x03461014 chip=0x27da8086 rev=0x01 hdr=0x00
vendor = 'Intel Corporation'
device = '82801G (ICH7 Family) SMBus Controller'
class = serial bus
subclass = SMBus
UNIX (в основном FreeBSD) Разное coretemp
The coretemp driver first appeared in FreeBSD 7.0.
kldload coretemp
sysctl dev.cpu.0.temperature
dev.cpu.0.temperature: 19
sysctl dev.cpu.1.temperature
dev.cpu.1.temperature: 23
UNIX (в основном FreeBSD) Разное Посмотреть файл корки ядра (kernel crash)
kgdb /boot/kernel/kernel /var/crash/vmcore.2
затем:
bt
UNIX (в основном FreeBSD) Разное Использование произвольного зеркала с distfiles для ports
/etc/make.conf
MASTER_SITE_OVERRIDE=ftp://192.168.1.2/freebsd/distfiles/${DIST_SUBDIR}/
UNIX (в основном FreeBSD) Разное X11 => resolution: 96x96 dots per inch
Правим файлик /usr/local/bin/startx . Находим в нем строку
defaultserverargs="" и приводим ее к виду:
defaultserverargs="-dpi 96"
Сохраняемся, рестартуем иксы. Проверяем через xdpyinfo:
# xdpyinfo | egrep -i "resolut|dimens"
dimensions: 1024x768 pixels (270x203 millimeters)
resolution: 96x96 dots per inch
UNIX (в основном FreeBSD) Разное ngrep
/usr/ports/net/ngrep
ngrep strives to provide most of GNU grep's common features, applying
them to the network layer.
ngrep a pcap-aware tool that will allow you to specify extended
regular expressions to match against data payloads of packets. It
currently recognizes TCP, UDP, and ICMP across Ethernet, PPP, SLIP,
FDDI, Token Ring and null interfaces, and understands BPF filter
logic in the same fashion as more common packet sniffing tools,
like tcpdump and snoop.
WWW: http://ngrep.sourceforge.net/
Позволяет увидеть содержимое запроса, например по 80-му порту:
ngrep -d em0 -tqW byline -w Host: tcp and port 80
UNIX (в основном FreeBSD) Разное Как заблокировать в FreeBSD действие комбинации CTRL+ALT+DEL
включить в конфигурацию ядра:
options SC_DISABLE_REBOOT
и пересобрать его
UNIX (в основном FreeBSD) Разное ipfw и kernel nat
включаем в ядро:
options IPFIREWALL_NAT #ipfw kernel nat support
options LIBALIAS
либо подгружаем модули:
kldload ipfw_nat.ko
kldload libalias.ko
В конфигурационном файле ipfw:
NatIP="111.111.111.111"
ipfw nat 123 config ip ${NatIP} log
ipfw add 10 nat 123 ip from 192.168.0.0/16 to any
ipfw add 20 nat 123 ip from any to ${NatIP}
источник: http://www.opennet.ru/tips/info/1618.shtml
Редирект порта:
ipfw nat 1 config if EXT_IFACE log redirect_port tcp 192.168.0.5:9999 9999
ipfw add 100 nat 1 tcp from any to EXT_IP 9999 via EXT_IFACE
ipfw add 100 allow tcp from any to 192.168.0.5 9999 via INT_IFACE
UNIX (в основном FreeBSD) Разное Трабл с Хсами после обновления портов от 27.01.09
1. portupgrade -rf libxcb
2. Сделал make config в x11-server/xorg-server:
WITHOUT_HAL=true
WITHOUT_AIGLX=true
WITH_SUID=true
и ребилднул его
3. в /etc/X11/xorg.conf:
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
"AllowEmptyInput" "off"
InputDevice "Mouse0" "CorePointer"
"AllowEmptyInput" "off"
EndSection
Section "ServerFlags"
Option "AutoAddDevices" "False"
EndSection
UNIX (в основном FreeBSD) Разное из консоли отправить письмо с приаттаченым файлом
$ uuencode shot0001.jpg я_и_мой_дед.jpg | cat поездка.txt - | mail -s "как я ездил отдыхать" user@host.tld
где:
shot0001.jpg - имя файла
я_и_мой_дед.jpg - имя аттача
поездка - файл с письмом
"как я ездил отдыхать" - поле `Subject:' письма
user@host.tld - поле `To:' письма
`cat поездка.txt -' соединяет файл `поездка.txt' и stdin (стандартный ввод)
или в самом клиенте mail(1) можно сделать:
а вот моя фотка где я и мой дед
~r !uuencode shot0001.jpg я_и_мой_дед.jpg
UNIX (в основном FreeBSD) Разное portupgrade Cannot locate current working directory: No such file or directory
Запускаем:
portupgrade -a
Получаем:
Cannot locate current working directory: No such file or directory
Запускаем с дебагом:
portupgrade -v -a
Получаем тоже самое сообщение...
Начинаем мыслить, а где именно должна быть working directory и почему он её не находит ? Хотя ещё недавно все работало.
Все дело оказывается в том ,откуда (тек. каталог в котором вы находитесь) вы его запускаете....
У него оказывается есть такая тема, что если сидеть в любой папке /usr/ports/.... у него крышу и сносит
выходим в корень:
cd /
запускаем:
portupgrade -a
и все работает.
UNIX (в основном FreeBSD) Разное DMI decode
DMIdecode (в портах - /usr/ports/sysutils/dmidecode) выдает информацию об аппаратном обеспечении системы, как описано в ее BIOS в соответствии со стандартом SMBIOS/DMI. Часто включается состояние использования сокетов процессоров, слотов расширения и слотов планок памяти, а также список портов ввода-вывода.
UNIX (в основном FreeBSD) Разное Apache (httpd) отключить логирование чего либо
Для одного проекта понадобилось отключить логирование обращения к картинкам
полазал в доках, почитал, сделал:
SetEnvIf Request_URI "\.png$" dontlog
SetEnvIf Request_URI "\.gif$" dontlog
SetEnvIf Request_URI "\.png$" dontlog
SetEnvIf Request_URI "\.jpg$" dontlog
SetEnvIf Request_URI "\.ico$" dontlog
CustomLog /var/log/http/access.log common env=!dontlog
можно использовать как и основной конфигурации так и в VirtualHost
UNIX (в основном FreeBSD) Разное Ускорение запуска FireFox
1. идём в about:config, вводим jit и ставим все значения в true
2. выходим из FireFox
3. find ~/.mozilla/firefox/ -name *.sqlite -exec sqlite3 {} VACUUM \;
4. старт FireFox
UNIX (в основном FreeBSD) Разное Монтирование с поддержкой русской кодировки (mount)
Например монтирование флешки:
mount_msdosfs -L ru_RU.KOI8-R -D CP866 /dev/da0s1 /mnt
UNIX (в основном FreeBSD) Разное "Быстрые клавиши" в Un*x
Общесистемные
* Ctrl-l — перерисовать экран.
* Ctrl-a — переместиться в начало строки.
* Ctrl-e — переместиться в конец строки.
* Ctrl-b — переместиться на один символ назад.
* Ctrl-f — переместиться на один символ вперёд.
* Ctrl-s — остановить вывод на консоль.
* Ctrl-q — восстановить вывод на консоль после Ctrl-s.
* Ctrl-v — ввести следующий символ «как есть» (без распознавания сочетаний клавиш).
* Ctrl-d — удалить символ под курсором.
* Ctrl-h — удалить символ позади курсора.
* Ctrl-w — удалить от курсора до начала слова.
* Ctrl-k — удалить символы от курсора до конца строки.
* Ctrl-u — удалить символы от курсора до начала строки. В некоторых системах удаляет всю строчку.
Bash
* Ctrl-r — перейти в режим поиска в ранее введённых командах.
UNIX (в основном FreeBSD) Разное Установка Firebird-2.1.3
Исходки: http://www.firebirdsql.org/
http://sql.ru/forum/actualthread.aspx?tid=667564&pg=5&hl=freebsd#7729154
на "чистой" FreeBSD 7.2 (установка User)
1. установить и обновить порты (portsnap www.freebsd.org/doc/ru/books/handbook/portsnap.html)
2. ставим autoconf262 (/usr/ports/devel/autoconf262) и autoconf-archive (/usr/ports/devel/autoconf-archive), они за собой много чего потянут установить - соглашаемся
3. скачиваем текущую версию исходников
cvs -d:pserver:anonymous@firebird.cvs.sourceforge.net:/cvsroot/firebird co -r B2_1_Release -P firebird2
4. запускаем ./autogen.sh (например ./autogen.sh --without-editline --disable-raw-devices)
5. gmake, gmake install
6. необходимо скопировать библиотеки из подкаталога gen/firebird/lib в /usr/local/firebird/lib (в текущих версиях установочных скриптов не копируются libicuuc.so.30.0 libicudata.so.30.0 libicui18n.so.30.0 )
7. запустить/перезапустить inetd (установщик добавит нужную сроку запуска для в файл конфигурации inetd.conf)
чтобы не было ошибки вида CHARACTER SET WIN1251 is not defined
необходимо проверить наличие файла fbintl.conf в каталоге с fbintl (/usr/local/firebird/intl)
если при сборке из исходников fbintl.conf не появился (а он не появляется) - создаем его рукочками
vi fbintl.conf
и в него пишем приблизительно следующее (подсмотрено в fbintl.conf из виндовой установки)
<intl_module fbintl>
filename /usr/local/firebird/intl/fbintl
</intl_module>
<charset WIN1251>
intl_module fbintl
collation WIN1251
</charset>
UNIX (в основном FreeBSD) Разное Использование ESD в кач-ве общего звукового сервера
Как с двух компов поюзать одни колонки если оба компа под freebsd ?
запуск сервера:
/usr/local/bin/esd -tcp -public -bind IP -port PORT &
запуск клиента (должны быть хотя бы либы от ESD):
- скопировать ~/.esd_auth с сервера в домашнюю диру юзера
- в шелле установить переменную окружения export ESPEAKER="IP:PORT"
MANUAL: http://www.paci.us/esd_missing_manual.html
UNIX (в основном FreeBSD) Разное utftpd
cd /usr/ports/net/utftpd
make && make install
/usr/local/etc/utftpd.conf:
class pub
{
read="/tftpboot";
write="/tftpboot";
create="/tftpboot";
}
client 10.0.0.1: pub;
mkdir /tftpboot && chown -R nobody:nogroup /tftpboot
cd /usr/local/etc && utftpd_make utftpd.cdb utftpd.tmp < utftpd.conf
/usr/local/sbin/utftpd -c /usr/local/etc/utftpd.cdb -u nobody -s 10.0.0.2 -l
Cisco Routing Policy Routing на Cisco (Source routing)
Policy routing - это более гибкий механизм маршрутизации пакетов, чем
адресная маршрутизация (destination routing). Его главная особенность
состоит в том, что перед маршрутизацией все пакеты проходят через
маршрутную карту (route map), которая определяет, какие пакеты
маршрутизировать и какой роутер будет следующим. Вы можете включить
policy routing если хотите, чтобы некоторые пакеты были направлены по
пути, отличному от очевидно самого короткого пути (the obvious
shortest path), то есть пути взятого из таблицы маршрутизации.
Применение данного метода самые разные, но более распространенный когда необходимо смаршрутизировать два канала от двух разных провайдеров.
Пример настройки:
1. conf t
2. sdm prefer routing
3. reload
4. создать standart access-list (например номер 10) где описать подсети выделенные провайдером1
(ip access-list standard 10
permit ХХ.ХХ.241.0 0.0.0.63)
5. создать standart access-list (например номер 11) где описать подсети выделенные провайдером2
(ip access-list standard 11
permit УУ.УУ.18.0 0.0.0.63)
6. создаем маршрутную карту:
route-map TEST permit 10
macth ip address 10
set ip next-hop XX.XX.XX.1
route-map TEST permit 20
macth ip address 11
set ip next-hop УУ.УУ.УУ.1
7. в режиме конфигурирования заходим в интерфейс (int vlan Х) смотрящий "вниз"
8. ip policy route-map TEST
9. wri
Командой debug ip policy вы можете включить режим, который поможет вам
определить, что делает policy routing - попадают ли пакеты под
соответствующие правила и информацию о маршрутизации пакета
Предостережение. Внимательно отнеситесь к включению этого режима, так
как он может дать на выходе очень много информации, что неблагоприятно
отразится на работе вашего маршрутизатора. Используйте этот режим при
низком трафике через маршрутизатор, или укажите список доступа,
который будет ловить интересующие вас пакеты.
Cisco Shape Shaping на 10 мбит/с
Shaping на 10 мбит/с
class-map match-all SHAPE
match access-group name CLIENT-SHAPE
!
policy-map PCLIENT-SHAPE
class SHAPE
police 10000000 16000 exceed-action drop
!
interface FastEthernet0/XX
switchport mode access
service-policy input PCLIENT-SHAPE
no cdp enable
!
ip access-list extended CLIENT-SHAPE
permit ip any any
!
Не забыть включить QOS:
1. conf t
2. mls qos
Cisco SNMP Получение информации о VLAN на Cisco по SNMP
Первый интересующий нас факт: наличие тегирования фреймов на порту как такового
(switchport mode trunk для конфигурирования в CLI). Для этого справшиваем этот OID: 1.3.6.1.4.1.9.9.46.1.6.1.1.14.
Значение 1 соответствует включенному тегированию, значение 2 - порт имеет какой-то другой режим, отличный от trunk.
Информация, получаемая по snmp, остается актуальной только в том случае, если порт,
о котором мы спашиваем устройство, сконфигурирован. (Опять же прошу не путать определения порта и интерфейса.)
Чтобы узнать фреймы какой ВЛС не тегируются на порту и принимаются в девственном виде (это я так описал native vlan),
нужно спросить OID 1.3.6.1.4.1.9.9.46.1.6.1.1.5.N, где N -- полный номер порта (включает модуль, адаптер и непосредственно номер порта).
Задачей сложнее является определение того, какие именно вланы разрешены на порту устройства.
Как известно, каждый vlan имеет идентификатор, значение которого выбирается из диапазона от 1 до 4095 (12 бит).
Если 4096 разделить на четыре, то получим четыре диапазона идентификаторов: 1-1023, 1024-2047,
2048-3071 и 3071-4095. С этими знаниями мы можем спросить о наличии ВЛС на порту у следующих OID'ов:
1.3.6.1.4.1.9.9.46.1.6.1.1.4 для диапазона 1-1023
1.3.6.1.4.1.9.9.46.1.6.1.1.17 1024-2047
1.3.6.1.4.1.9.9.46.1.6.1.1.18 2048-3071
1.3.6.1.4.1.9.9.46.1.6.1.1.19 3071-4095
Каждый запрос по OID'у, указанному выше, вернет информацию о вланах в виде HEX-строки для каждого порта.
Расшифровка этой строки следующая: каждый N-ый бит (считаем биты слева направо) соответствует
идентификатору vlan'а в своем диапазоне. Наличие этого бита говорит о том, что на порту используется
соответствующий влан. Например, для того, чтобы узнать о наличии vlan'а 3100, мы должны спросить
OID 1.3.6.1.4.1.9.9.46.1.6.1.1.19, и посмотреть на значение 29 бита. Его значение, равное 1,
говорит нам о том, что на порту разрешен vlan 3100.
Хорошая ссылка: http://tools.cisco.com/Support/SNMP/do/BrowseOID.do
Автор: Трушкин Вячеслав
Cisco Разное Зимнее/летнее время
Cisco: Переход с зимнего на летнее время и наборот
(conf)clock timezone MSK 3
(conf)clock summer-time MSD recurring last Sun Mar 2:00 last Sun Oct 2:00
(conf)ntp server IP_ADDR_SERVER version 2 [source vlan XXX]
задать время можно прям в enable режиме:
clock set 10:52:50 3 Jul 2007
Cisco Разное Привычное человеку отображение даты в show logging
Нормальное время по show logging
1. conf t
2.service timestamps log datetime localtime
3. exit
4. wri
Cisco Разное Alias команд
Alias команд
например при наборе "svb" выполняется команда "show vlan brief"
1. conf t
2. alias exec svb show vlan brief
3. exit
4. wri
проверить можно набрав в консоли svb
Cisco Разное Трансиверы
Трансиверы
1000BASE-BX-D (1310 nm ) и 1000BASE-BX-U (1490 nm) позволяют организовать связь по одной оптической жиле SMF
"A 1000BASE-BX10-D device is always connected to a 1000BASE-BX10-U device
with a single strand of standard SMF with an operating transmission range up to 10 km."
подробнее см http://www.cisco.com/en/US/products/hw/modules/ps5455/products_data_sheet0900aecd8033f885.html
трансивер с 1550nm - это 1000BASE-ZX с увеличенным расстоянием (до 70км) - работает на двухжильном SMF(single-mode fiber )
Cisco Разное Перепрошивка IOS
Перепрошивка IOS:
1. copy new IOS (c2960-lanbasek9-mz.122-55.SE1.bin) to flash
например:
copy http: flash:
Address or name of remote host []? 192.168.1.2
Source filename []? c2960-lanbasek9-mz.122-55.SE1.bin
Destination filename [c2960-lanbasek9-mz.122-55.SE1.bin]?
Loading http://192.168.1.2/c2960-lanbasek9-mz.122-55.SE1.bin
2.verify /md5 flash:c2960-lanbasek9-mz.122-55.SE1.bin
3. conf t
4. boot system flash:c2960-lanbasek9-mz.122-55.SE1.bin
5. exit
6. write
7. reload
Cisco Разное Radius Accounting VoIP
В режиме conf t:
aaa new-model
aaa authorization exec h323 group radius local
aaa authorization exec sip group radius local
aaa authorization network default group radius local
aaa authorization network h323 group radius local
aaa accounting delay-start
aaa accounting update periodic 1
aaa accounting exec default start-stop group radius
aaa accounting exec h323 start-stop group radius
aaa accounting exec sip start-stop group radius
aaa accounting network default start-stop group radius
aaa accounting network h323 start-stop group radius
aaa accounting network sip start-stop group radius
aaa accounting connection default start-stop group radius
aaa accounting connection h323 start-stop group radius
aaa accounting connection sip start-stop group radius
aaa nas port extended
aaa nas port voip
aaa session-id common
gw-accounting aaa
suppress voip rotary
ip radius source-interface FastEthernet0/0
radius-server host XX.XX.XX.XX auth-port 1812 acct-port 1813
radius-server timeout 30
radius-server key KEY
radius-server vsa send accounting
Так же можно прочесть на сайте Cisco
Cisco Разное Block ARP Packets with Use of MAC Access Lists
Block ARP Packets with Use of MAC Access Lists and VLAN Access Maps on Catalyst 2970, 3550, 3560, and 3750 Series Switches
Configure
In this section, you are presented with the information to configure the features described in this document.
In order to configure MAC address filtering and apply it to the VLAN interface, you must complete several steps. First, you create the VLAN access maps for each type of traffic that requires filtering. You select a MAC address or range of MAC addresses for blocking. You also need to identify the ARP traffic in the access list. According to RFC 826 leavingcisco.com, an ARP frame uses the Ethernet protocol type of value 0x806. You can filter on this protocol type as interesting traffic for the access list.
1.
In global configuration mode, create a named MAC extended access list with the name ARP_Packet.
Issue the mac access-list extended ACL_name command and add the host MAC address or addresses that you want to block.
Switch(config)#mac access-list extended ARP_Packet
Switch(config-ext-nacl)#permit host 0000.861f.3745 host 0006.5bd8.8c2f 0x806 0x0
Switch(config-ext-nacl)#end
Switch(config)#
2.
Issue the vlan access-map map_ name command and the action drop command, which is the action to perform.
The vlan access-map map_ name command uses the MAC access list that you created to block ARP traffic from the hosts.
Switch(config)#vlan access-map block_arp 10
Switch (config-access-map)#action drop
Switch (config-access-map)#match mac address ARP_Packet
3.
Add an additional line to the same VLAN access map in order to forward the rest of the traffic.
Switch(config)#vlan access-map block_arp 20
Switch (config-access-map)#action forward
4.
Choose a VLAN access map and apply it to a VLAN interface.
Issue the VLAN filter vlan_access_map_name vlan-list vlan_number command.
Switch(config)#vlan filter block_arp vlan-list 2
Verify
Use this section to confirm that your configuration works properly.
You can verify if the switch has learned the MAC address or ARP entry before you apply the MAC ACL. Issue the show mac-address-table command, as this example shows.
The Output Interpreter Tool ( registered customers only) (OIT) supports certain show commands. Use the OIT to view an analysis of show command output.
switch#show mac-address-table dynamic vlan 2
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
2 0000.861f.3745 DYNAMIC Fa0/21
2 0006.5bd8.8c2f DYNAMIC Fa0/22
Total Mac Addresses for this criterion: 2
switch#show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.1.1.2 26 0000.861f.3745 ARPA Vlan2
Internet 10.1.1.3 21 0006.5bd8.8c2f ARPA Vlan2
Internet 10.1.1.1 - 000d.65b6.9700 ARPA Vlan2
Sample Configuration
This sample configuration creates three MAC access lists and three VLAN access maps. The configuration applies the third VLAN access map to VLAN interface 2.
mac access-list extended ARP_Packet
permit host 0000.861f.3745 host 0006.5bd8.8c2f 0x806 0x0
!--- This blocks communication between hosts with this MAC.
!
mac access-list extended ARP_ONE_OUI
permit 0000.8600.0000 0000.00ff.ffff any 0x806 0x0
!--- This blocks any ARP packet that originates from this vendor OUI.
!
mac access-list extended ARP_TWO_OUI
permit 0000.8600.0000 0000.00ff.ffff any 0x806 0x0
permit 0006.5b00.0000 0000.00ff.ffff any 0x806 0x0
!--- This blocks any ARP packet that originates from these two vendor OUIs.
!
vlan access-map block_arp 10
action drop
match mac address ARP_Packet
vlan access-map block_arp 20
action forward
vlan access-map block_one_oui 10
action drop
match mac address ARP_ONE_OUI
vlan access-map block_one_oui 20
action forward
vlan access-map block_two_oui 10
action drop
match mac address ARP_TWO_OUI
vlan access-map block_two_oui 20
action forward
!
vlan filter block_two_oui vlan-list 2
!--- This applies the MAC ACL name “block_two_oui” to VLAN 2.
cisco.com
Cisco Разное SSH login
1. Если у девайса отсутствует domain-name то нужно задать его (используется для генерации rsa ключа)
c3560(config)#ip domain-name domain.ru
2. Генерируем rsa ключ
c3560(config)#crypto key generate rsa
При запросе вводим битность для криптования (рекомендуют задавать от 1024 и выше)
How many bits in the modulus [512]: 1024
3. Включаем ssh на девайсе
c3560(config)#ip ssh version 2
(Дополнительные опции - таймаут, количество ретраев и т.д. видим по c3560(config)#ip ssh + TAB)
4. Включаем локальную авторизацию на нужных интерфейсах
c3560(config)#line vty 0 15
c3560(config-line)#login local
Объявляем на этих же интерфейсах какие протоколы можно использовать для коннекта к девайсу и с него
c3560(config-line)#transport input ssh
c3560(config-line)#transport output all
5. Создаём логин пользователя и его уровень привилегий для коннекта по ssh
c3560(config)#username admin privilege 1 password test
6. Не забываем криптовать все пароли (чтобы они нигде не фигурировали в явном виде)
c3560(config)#service password-encryption
Cisco Разное Configuring SDM Templates
Разъяснения по SDM Templates http://www.cisco.com/en/US/products/hw/switches/ps5528/products_configuration_guide_chapter09186a0080211379.html
Cisco Разное Multicast
Настройка:
ip multicast-routing distributed
ip mroute 0.0.0.0 0.0.0.0 X.X.X.X
ip pim rp-address X.X.X.X
ip pim spt-threshold infinity
ip msdp peer X.X.X.X connect-source VlanXXX remote-as 65000
ip msdp cache-sa-state
ip msdp default-peer X.X.X.X
ip msdp originator-id VlanXXX
ip pim sparse-mode #на ip-шном ифейсе, например на vlan
Просмотр:
show ip igmp snooping groups
show ip igmp groups
show ip mroute
show ip mroute summary
show ip mroute 224.0.X.X
show ip mroute active
show ip mroute count
show ip pim neighbor
show ip pim rp
show ip pim interface
show ip pim interface count
sh ip rpf events
sh ip msdp peer X.X.X.X accepted-SAs
Чистка:
clear ip mroute *
Принудительно подписать влан на группу:
int vlan X
ip igmp join-group 224.0.X.X
Cisco Разное Отправить log на ftp
isp ср фев 18 2009 12:41:16
тут в процессе исследований нашел такую штуку у циски:
#sh logging | redirect ftp://10.15.1.101/logging
isp ср фев 18 2009 12:41:40
если необходимо лог дебага например быстро отправить кому нить
Cisco Разное Нестандартные модули SFP
в режиме глобального конфигурирования:
service unsupported-transceiver
no errdisable detect cause gbic-invalid
no errdisable detect cause sfp-config-mismatch
Cisco Разное Высокая нагрузка на CPU
1. sh processes cpu | inc CPU
2. sh processes cpu | exclude 0.00
3. show interfaces switching
4. sh ip traffic
5. show interfaces stats
6. show platform tcam utilization
7. show ip cef summary
8. show ip cef
9. show cef interface
10. show ip cef switching statistics
11. show ip interface
http://www.cisco.com/en/US/products/hw/routers/ps133/products_tech_note09186a00800a70f2.shtml
BGP RIPE Описание объекта AS-SET в БД RIPE
Объекты в БД RIPE типа route, aut-num и as-set.
Объект типа as-set объединяет группу объектов aut-num.
А у объектов типа route есть поле origin, которое указывает принадлежность префикса в автономной системе.
Провайдеры содержат as-set в котором перечислены все aut-num'ы клиентов.
Название этого as-setа провайдеры сообщают своим пирам и апстримам с фразой "хотим чтобы вы строили свои BGP фильтры по объекту AS-TESTNAME"
у тех провайдеров, у кого есть автоматическое обновление фильтров - достаточно просто создать route объект в базе RIPE и в течении 1-3 суток все эти провайдеры обновляют свои фильтры и пропускают новый анонс
Статья: Объекты БД RIPE (ripe.net): mntner, as-set, aut-num, route, inetnum, person, domain
Документы RIPE которые следует прочесть:
https://www.ripe.net/ripe/docs/ipv4-policies.html
http://www.ripe.net/ripe/docs/databaseref-manual.html
BGP RIPE ALLOCATION vs ASSIGNMENT
ALLOCATION
===========
larger block of addresses set aside for the future use of the LIR and its customers. Out of this block the LIR makes assignments for its infrastructure or for its customers.
ASSIGNMENT
===========
address space that is actually in use by the LIR /customers of LIR.
The assignments have been approved by the RIPE NCC and are registered in the RIPE database.
Статья: Объекты БД RIPE (ripe.net): mntner, as-set, aut-num, route, inetnum, person, domain
BGP RIPE RIR Service Regions
BGP F.A.Q. Частые вопросы по AS
ОРИГИНАЛ: www.nic.ru
Мы арендуем сети у провайдера, хотим иметь второе подключение, каковы условия получения номера AS, необходимого для такого подключения ?
Во-первых выделение номера AS требует наличия определённого адресного пространства (не менее класса C), а во-вторых необходимость регистрации AS должна быть обусловлена наличием у сети собственной политики маршрутизации.
Такие сети называют мультихоумными (multihomed):
Multihoming implies that you will be talking BGP to at least two other BGP peers and they will be announcing your block of IP nets with your ASN as the source of those nets.
(см. также Frequently Asked Questions on Multi-homing and BGP)
Формально для регистрации номера AS необходимо знать номера AS своих провайдеров и IP-адреса, которые будут анонсироваться данной AS.
Пожалуйста учтите, что наиболее распространённой является ситуация, когда организация получает номер AS ПОСЛЕ получения статуса Локальной Регистратуры и провайдерского блока адресов.
Сообщите пожалуйста какова стоимость регистрации номеров Автономных систем (AS) ?
Тарифов на получение AS, установленных RIPE NCC, не существует.
Регистрация номера AS входит в набор услуг, предоставляемых Локальной Регистратуре. Подробнее об этом можно прочитать здесь.
Возможно ли получение номера автономной системы без получения статуса LIR и что для этого необходимо ?
Возможно, для этого Вам необходимо обратиться к провайдеру, имеющему статус Локальной Регистратуры.
По согласованию с провайдером Ваша заявка будет переправлена в Региональную Регистратуру (RIPE NCC), которая и распределяет номера AS для Европы. Форму заявки для получения номера AS можно взять здесь. Как правило сеть, организующая Автономную Систему, располагает адресами, не являющимися подмножеством какого-либо провайдерского блока.
Поэтому не рассчитывайте на адреса, полученные из провайдерского блока, если только провайдер не предлагает соответствующие условия их использования (см. следующий вопрос).
Мы получили номер AS и для подключения к второму провайдеру хотим использовать адреса, полученные у первого провайдера, возможно ли таким способом обеспечить мультихоумность нашей сети ?
Вы можете попытаться договориться с первым провайдером об анонсе Ваших адресов, (входящих в его провайдерский блок) как "more specific route"; считается, что это позволит Вам проанонсировать адреса другому провайдеру. Вот что пишет RIPE:
However, it is also possible to multi-home by having a PA address range announced through two providers. If the PA addresses come from ISP A's allocation, the customer would have to agree with ISP B to announce that range separately. ISP A would also have to announce the range as a more specific route together with their aggregate.
Как нам получить независимые от провайдера адреса ?
Вопрос получения таких IP-адресов решается двумя способами.
Первый: если Вы знаете, что ваша сеть не будет развиваться за счет абонентских локальных сетей, требующих выделения значительного количества постоянных IP-адресов, Вы можете попробовать получить провайдеро-независимые адреса из блоков региональной Регистратуры RIPE NCC, обратившись к любому из Ваших Internet провайдеров.
Как правило, провайдер является Локальной регистратурой Internet (LIR) и в состоянии переправить Ваш запрос (по форме ripe-336) в RIPE NCC, который, если сочтёт Ваш запрос обоснованным, выделит провайдеро-независимые адреса.
Внимание! Заявку по форме ripe-336 RIPE принимает ТОЛЬКО от организаций, имеющих статус LIR.
Второй способ: в случае, если планируется развитие Вашей сети (до размеров не менее чем 8 class C адресов в течение двух лет) и Вы согласны оплачивать услуги RIPE NCC (порядка 1750 Евро в год + разовый вступительный взнос - 2000 Евро), Вам необходимо обратиться в RIPE NCC для получения Вашей организацией статуса Локальной регистратуры (LIR). В последнем случае в качестве стандартной услуги Вы получаете провайдерский блок IP-адресов и номер Автономной Системы (процедура получения статуса LIR при поддержке РСИЦ описана здесь, с RIPE можно сотрудничать и напрямую: New Members).
Нам необходимы провайдеро-независимые адреса, провайдер отказывается их получать для нас в RIPE, может ли Ваша регистратура ru.rosniiros предоставить провайдеро-независимые адреса ?
Адpесное пpостpанство, имеющееся непосpедственно в pаспоpяжении РосНИИРОС (Local Registry - ru.rosniiros) pаспpеделяется ТОЛЬКО для научно-обpазовательных сетей, пpежде всего pегиональных.
Провайдеро-независимые адреса распределяет действующая регистратура Last Resort, RIPE NCC.
RIPE NCC является владельцем крупных блоков таких адресов и ведёт их учёт.
Если Вы не видите перспектив развития Вашей провайдерской сети и не намерены получать статус LIR , а Ваши провайдеры готовы взаимодействовать с Вашей будущей Автономной Системой, мы готовы оказать Вам консультационные услуги по регистрации провайдеро-независимых IP-адресов и номера Автономной Системы.
Пожалуйста заполните форму ripe-336, приложите к форме Ваш комментарий и отправьте заявку по адресу:
ip-reg@nic.ru
Мы являемся сервис-провайдером и Локальной регистратурой, один из наших клиентов имеет два независимых подключения и они хотят работать с динамической маршрутизацией. Если я правильно понимаю, для этого им нужно зарегистрировать Автономную Систему, но на нашем блоке адресов нам этого делать не хочется. Каким образом можно решить такую проблему?
Вы правильно отметили, что не стоит разрешать клиенту анонсировать адреса из Вашего блока другим провайдерам, могут возникнуть проблемы с прохождением анонсов специфик или Вы получите нежелательный трафик. Возможно Вы найдёте приемлимое решение.
Однако Вы можете посодействовать клиенту в получении номера AS и некоторого количества провайдеро-независимых адресов из старых блоков RIPE, получив от него заполненные формы ripe-336, ripe-278 и отправив заявки в RIPE от имени своей Регистратуры. За обработку данных заявок RIPE не будет взымать с Вас дополнительную плату.
Нами получен статус LIR и блок адресов /19, но заключение договора со вторым peer'ом откладывается на неопределенное время. Можем ли мы использовать свои новые адреса, имея только одно подключение ?
Вы можете продолжать работать по IGP (OSPF) со своим провайдером, сообщив ему свой новый диапазон адресов. То есть провайдер по-прежнему будет осуществлять маршрутизацию Вашей сети.
В плане перехода на использование внешнего протокола маршрутизации Вы можете также работать по BGP, используя приватный номер Автономной Системы.
BGP F.A.Q. Разное
Что такое RIPE NCC?
RIPE NCC - это независимая некоммерческая организация , которая поддерживает инфраструктуру Интернет посредством технической координации в своем регионе. Самая заметная деятельность RIPE NCC состоит в том , чтобы выступать в качестве регионального Интернет-реестра (RIR), предоставлющего глобальные ресурсы Интернет и сопутствующие услуги своим членам в своем регионе. Сообще ство членов RIPE в основном состоит из Интернт-провайдеров (ISP) , телекоммуникационных компаний и больших корпораций , расположенных в Европе , на Ближнем востоке и , частично , в Центральной Азии.
Что такое локальный интернет –реестр (LIR)?
Локальный Интернет-реестр (LIR – Local Internet Registry) – термин, используемый для описания членов RIPE NCC. Их называют локальными Интернет-реестрами (LIR) потому что они несут ответственность за распределение адресного пространства и регистрацию адресного пространства на локальном уровне.Локальные Интернет-реестры также утверждают общеобязательные политики и процедуры на локальном уровне. Организации, которые становятся локальными Интернет-реестрами - это в основном Интернет-провайдеры (ISP), которые выделяют и назначают адресное пространство своим клиентам, телекоммуникационные организации и коммерческие предприятия наряду с академическими учреждениями. Академические учреждения – это организации, которым требуются большие блоки адресного пространства, которые не могут быть получены у вышестоящего провайдера.
Нужно ли мне становиться локальным интернет-реестром (LIR) ?
RIPE NCC оставляет решение о том , становиться или нет локальным интернет-реестром (LIR) , на усмотрение самой организации. Любая организация ,имеющая официальное представительство в регионе RIPE NCC может стать LIR. Становиться локальными интернет-реестрами рекомендуется организациям , которым требуется собственный маршрутизируемый блок адресов и которые нуждаются в большом количестве адресов. В других случаях организациям , нуждающиесся в IP-адресах , следует сначала попытаться получить адресное пространство от вышестоящего провайдера для того , чтобы поддержать цели консервации и агрегации , выдвигаемых сообществом RIPE.
Могу ли я купить IP-адреса у RIPE NCC?
Вкратце: нет. IP-адреса - это общий ресурс и они не предназначены для продажи. Эффективное управление этим ресурсом жизненно важно для поддержания нормального функционирования Интернет. Если Вы получили IP-адреса от RIPE NCC, тогда у Вас будет право продолжать использование этих адресов при условии, что Вы будете использовать их в соответствии с правилами RIPE NCC из размещения и выделения и при условии, что Ваше членство продолжается (или , в случае если Вы не являетесь членом , что Вы будете продолжать платить суммы, необходимые на содержание ).
Сколько стоят IP-адреса?
RIPE NCC НЕ продает IP-адреса. Использование IP-адресов основано на периодической выплате членских взносов.
Почему мне следует в первую очередь обращаться за IP-адресами к Интернет-провайдеру , а не к RIPE NCC?
Первое - потому что RIPE NCC не может гарантировать , что любое выделенное этой организацией адресное пространство будет глобально маршрутизируемым. Это обусловлено тем , что политики фильтрации , реализуемые транзитными провайдерами по всему миру , находятся вне контроля RIPE NCC. Наилучший способ избежать проблем с фильтрацией состоит в том , чтобы удостовериться , что Ваша сеть включена в адресное пространство большей сети , (такой , например , как сеть Вашего провайдера) , так что большие количества адресов будут агрегированы и представлены глобально как один маршрут. Более короткий префикс подобного глобального маршрута увеличит шансы быть неподверженным политикам фильтрации больших транзитных провайдеров.
Также в интересах Интернет-сообщества в целом - поддерживать количество отдельных маршрутов, включенных в глобальные таблицы маршрутизации, минимальным. Убеждать организации получать адресное пространство у Интернет-провайдеров , когда это возможно , важно для достижения этой цели .
Я хотел бы сменить провайдера. Могу ли я переместить IP-адреса , которыми пользуюсь в данный момент , к новому провайдеру?
Существуют два типа пространства адресов IPv4: агрегируемый провайдером (Provider Aggregatable (PA)) и не зависимый от провайдера (Provider Independent (PI)).
* Если Вы - конечный пользователь адресов типа PA и переходите на пользование услугами другого провайдера , то от Вас потребуется возврат адресов Вашему предыдущему провайдеру.
* Если Вы являетесь локальным интернет-реестром (LIR) и имеете адресное пространство типа PA , выделенное RIPE NCC, то Вы не обязаны возвращать адресное пространство в случае , если Вы переходите на пользование услугами другого вышестоящего провайдера.
* Адресное пространство типа PI остается назначенным конечному пользователю так долго , пока соблюдаются условия первоначального назначения
За более подробной информацией о адресном пространстве типов PI и PA обратитесь к документу RIPE "IPv4 Address Allocation and Assignment Policies in the RIPE NCC Service Region" раздел 9: Агрегируемые и независимые от провайдера адреса ("Provider Independent vs Provider Aggregatable Addresses").
BGP Разное Secure BGP Template
Secure BGP Template Version 2.3
By Rob Thomas 07 AUG 2002
Introduction
BGP is the routing protocal that drives the Internet. Proper
configuration of BGP is critical, as mistakes in BGP can result in
disaster for both local and remote networks. Further, without a few
additional steps to increase the security and defense of BGP, it is
possible for miscreants to cause havoc with the BGP and, by extension,
routing tables.
This document includes a template configuration for BGP. As with all
such templates, this one must be modified to fit the specific
requirements of the local network(s). It is not wise to simply cut and
paste without a thorough understanding of each command. Comments are
included with each command. A more thorough understanding of BGP can
be obtained from:
o Internet Routing Architectures
, by Bassam Halabi, published by Cisco Press.
o BGP4, by John W. Stewart III, published by Addison-Wesley.
As an aside, debugging BGP issues can be difficult without an external
view. To see how the rest of the Internet views my prefix
announcements, I use the route servers. Simply telnet to these route
servers and issue commands such as sh ip bgp NETBLOCK or sh ip route
NETBLOCK. Here is a partial list:
route-views.oregon-ix.net
ner-routes.bbnplanet.net
route-server.cerf.net
route-server.ip.att.net
route-server.east.attcanada.com
route-server.west.attcanada.com
route-server.cbbtier3.att.net
route-server.gblx.net
route-server.as5388.net
route-server.exodus.net
route-server-ap.exodus.net
route-server-eu.exodus.net
route-server-au.exodus.net
route-server.colt.net
route-server.opentransit.net
This great collection of route servers, plus a few more, can be found
by querying the following range of DNS RRs:
routeserver[1-15].sentex.ca
For example:
dig +short routeserver1.sentex.ca
route-views.oregon-ix.net.
198.32.162.100
- or -
dig +short routeserver7.sentex.ca
route-server.gt.ca.
216.18.63.214
Thanks to Mike Tancsa for making this available!
It may also be helpful to receive the bgp-stats report, either daily
or weekly. This will help you to size your maximum-prefix statements,
as well as maintaining accurate bogon filters. You may subscribe to
the bgp-stats report by sending a note to majordomo@lists.apnic.net
with the message text of "subscribe bgp-stats".
While I list the bogon ranges on /8 boundaries, you may prefer a
greater level of aggregation. For this I recommend consulting my
Bogon List (http://www.cymru.com/Documents/bogon-list.html).
Barry Greene and Philip Smith, both of Cisco, have recently released a
book entitled Cisco ISP Essentials. This is an excellent collection of
clue. You can learn more about it at http://www.ispbook.com.
Barry also keeps a nice collection of Cisco security documents
here (http://www.cisco.com/public/cons/isp/security).
Credits
My thanks to the following folks for providing input and suggestions!
Roy Arends
Larry Bishop
Oded Comay
Hank Nussbacher
James A. T. Rice
Mike Tancsa
David Wolsefer
As always, the FIRST community http://www.first.org/
Assumptions
* IOS 12.0.X or higher.
* Understanding of BGP and the Cisco IOS.
* This template is used by a non-transit network.
* The local ASN is 111, the remote ASNs are 222 and 333.
* The local netblock is 1.88.0.0/19.
* The router has already been secured. For details on a secure IOS
configuration template, please consult my Secure IOS Template.
http://www.cymru.com/Documents/secure-ios-template.html
* This template was crafted for a network that would be dual-homed
and BGP peered to two Tier One ISPs.
* The IP address of the router used in this template is 172.17.70.1.
Questions, Comments, Suggestions
Feedback is both welcome and encouraged! This document is a
work-in-progress as changes to the Cisco IOS, BGP, or corrections to
this document appear. Please send any questions along to
robt@cymru.com.
Template
The actual commands are in BOLD text so that they stand out from the
comment blocks.
! Our ASN is 111
router bgp 111
!
! Don't wait for the IGP to catch up.
no synchronization
!
! Be a little more forgiving of an occasional missed keepalive.
no bgp fast-external-fallover
!
! Track and punt, via syslog, all interesting observations about our
! neighbors.
bgp log-neighbor-changes
!
! Enable our dampening parameters. See the route map and prefix-lists
! below.
bgp dampening route-map graded-flap-dampening
!
! Announce our netblock(s) in a manner that does not increase CPU
! utilization. Redistributing from an IGP is dangerous as it increases
! the likelihood of flapping and instability. Redistributing static is
! more stable, but requires the CPU to peruse the routing table at a
set
! interval to capture any changes. The network statement, combined
with
! a null route, is the least expensive (in terms of CPU utilization)
and
! most reliable (in terms of stability) option.
network 1.88.0.0 mask 255.255.224.0
!
! Our first neighbor, 10.10.5.1, is an eBGP peer with the ASN of 333.
neighbor 10.10.5.1 remote-as 333
!
! Set for soft reconfiguration, thus preventing a complete withdrawal
! of all announced prefixes when clear ip bgp x.x.x.x is typed.
neighbor 10.10.5.1 soft-reconfiguration inbound
!
! Type in a description for future reference. Not everyone memorizes
! ASNs. :-)
neighbor 10.10.5.1 description eBGP with ISP333
!
! Set up a password for authentication.
neighbor 10.10.5.1 password bgpwith333
!
! Hard-set for version 4. Disabled BGP version negotiation, thus
! bringing the peering session on-line more quickly.
neighbor 10.10.5.1 version 4
!
! Block any inbound announcments that include bogon networks. A prefix
! list is used because it is:
! 1) Easier on the CPU than ACLs, and
! 2) Easier to modify.
! See the actual bogons prefix-list below.
neighbor 10.10.5.1 prefix-list bogons in
!
! Announce only those networks we specifically list. This also
prevents
! the network from becoming a transit provider. An added bit of
protection
! and good netizenship. See the announce prefix-list below.
neighbor 10.10.5.1 prefix-list announce out
!
! Prevent a mistake or mishap by our peer (or someone with whom our
peer
! has a peering agreement) from causing router meltdown by filling the
! routing and BGP tables. This is a hard limit. At 75% of this limit,
! the IOS will issue log messages warning that the neighbor is
approaching
! the limit. All log messages should be sent to a remote syslog host.
! The warning water mark can be modified by placing a value after the
! maximum prefix value, e.g. maximum-prefix 125000 50. This will set
the
! IOS to issue warning messages when the neighbor reaches 50% of the
limit.
neighbor 10.10.5.1 maximum-prefix 125000
!
! Our next neighbor is 10.10.10.1, an eBGP peer with the ASN of 222.
neighbor 10.10.10.1 remote-as 222
neighbor 10.10.10.1 soft-reconfiguration inbound
neighbor 10.10.10.1 description eBGP with ISP222
neighbor 10.10.10.1 password bgpwith222
neighbor 10.10.10.1 version 4
neighbor 10.10.10.1 prefix-list bogons in
neighbor 10.10.10.1 prefix-list announce out
neighbor 10.10.10.1 maximum-prefix 125000
!
! This is our iBGP peer, 172.17.70.2.
neighbor 172.17.70.2 remote-as 111
!
neighbor 172.17.70.2 soft-reconfiguration inbound
!
! Again, a handy description.
neighbor 172.17.70.2 description iBGP with our other router
!
neighbor 172.17.70.2 password bgpwith111
! Use the loopback interface for iBGP announcements. This increases
the
! stability of iBGP.
neighbor 172.17.70.2 update-source Loopback0
neighbor 172.17.70.2 version 4
neighbor 172.17.70.2 next-hop-self
neighbor 172.17.70.2 prefix-list bogons in
neighbor 172.17.70.2 maximum-prefix 125000
!
! Do not automatically summarize our announcements.
no auto-summary
! If we have multiple links on the same router to the same AS, we like
to
! put them to good use. Load balance, per destination, with
maximum-paths.
! The limit is six. For our example, we will assume two equal size
pipes
! to the same AS.
maximum-paths 2
!
! Now add our null route and the loopback/iBGP route. Remember to add
! more specific non-null routes so that the packets travel to their
! intended destination!
ip route 1.88.0.0 255.255.224.0 Null0
ip route 1.88.50.0 255.255.255.0 192.168.50.5
ip route 1.88.55.0 255.255.255.0 192.168.50.8
ip route 1.88.75.128 255.255.255.128 192.168.50.10
ip route 172.17.70.2 255.255.255.255 192.168.50.2
!
! We protect TCP port 179 (BGP port) from miscreants by limiting
! access. Allow our peers to connect and log all other attempts.
! Remember to apply this ACL to the interfaces of the router or
! add it to existing ACLs.
access-list 185 permit tcp host 10.10.5.1 host 172.17.70.1 eq 179
access-list 185 permit tcp host 10.10.5.1 eq bgp host 172.17.70.1
access-list 185 permit tcp host 10.10.10.1 host 172.17.70.1 eq 179
access-list 185 permit tcp host 10.10.10.1 eq bgp host 172.17.70.1
access-list 185 permit tcp host 172.17.70.2 host 172.17.70.1 eq 179
access-list 185 permit tcp host 172.17.70.2 eq bgp host 172.17.70.1
access-list 185 deny tcp any any eq 179 log-input
!
! The announce prefix list prevents us from announcing anything beyond
! our aggregated netblock(s).
ip prefix-list announce description Our allowed routing announcements
ip prefix-list announce seq 5 permit 1.88.0.0/19
ip prefix-list announce seq 10 deny 0.0.0.0/0 le 32
!
! The bogons prefix list prevents the acceptance of obviously bogus
! routing updates. This can be modified to fit local requirements.
! While aggregation is possible - certainly desirable - IANA tends
! to allocate netblocks on a /8 boundary. For this reason, I have
! listed the bogons largely as /8 netblocks. This will make changes
! to the bogons prefix-list easier to accomplish and less intrusive.
! I have listed more specific netblocks when documentation, such as
! RFC1918, is more granular.
! Please see the IANA IPv4 netblock assignment document at the
! following URL:
! http://www.isi.edu/in-notes/iana/assignments/ipv4-address-space
ip prefix-list bogons description Bogon networks we won't accept.
ip prefix-list bogons seq 5 deny 0.0.0.0/8 le 32
ip prefix-list bogons seq 10 deny 1.0.0.0/8 le 32
ip prefix-list bogons seq 15 deny 2.0.0.0/8 le 32
ip prefix-list bogons seq 20 deny 5.0.0.0/8 le 32
ip prefix-list bogons seq 25 deny 7.0.0.0/8 le 32
ip prefix-list bogons seq 30 deny 10.0.0.0/8 le 32
ip prefix-list bogons seq 35 deny 23.0.0.0/8 le 32
ip prefix-list bogons seq 40 deny 27.0.0.0/8 le 32
ip prefix-list bogons seq 45 deny 31.0.0.0/8 le 32
ip prefix-list bogons seq 50 deny 36.0.0.0/8 le 32
ip prefix-list bogons seq 55 deny 37.0.0.0/8 le 32
ip prefix-list bogons seq 60 deny 39.0.0.0/8 le 32
ip prefix-list bogons seq 65 deny 41.0.0.0/8 le 32
ip prefix-list bogons seq 70 deny 42.0.0.0/8 le 32
ip prefix-list bogons seq 75 deny 49.0.0.0/8 le 32
ip prefix-list bogons seq 80 deny 50.0.0.0/8 le 32
ip prefix-list bogons seq 85 deny 58.0.0.0/8 le 32
ip prefix-list bogons seq 90 deny 59.0.0.0/8 le 32
ip prefix-list bogons seq 95 deny 60.0.0.0/8 le 32
ip prefix-list bogons seq 115 deny 70.0.0.0/8 le 32
ip prefix-list bogons seq 120 deny 71.0.0.0/8 le 32
ip prefix-list bogons seq 125 deny 72.0.0.0/8 le 32
ip prefix-list bogons seq 130 deny 73.0.0.0/8 le 32
ip prefix-list bogons seq 135 deny 74.0.0.0/8 le 32
ip prefix-list bogons seq 140 deny 75.0.0.0/8 le 32
ip prefix-list bogons seq 145 deny 76.0.0.0/8 le 32
ip prefix-list bogons seq 150 deny 77.0.0.0/8 le 32
ip prefix-list bogons seq 155 deny 78.0.0.0/8 le 32
ip prefix-list bogons seq 160 deny 79.0.0.0/8 le 32
ip prefix-list bogons seq 165 deny 82.0.0.0/8 le 32
ip prefix-list bogons seq 170 deny 83.0.0.0/8 le 32
ip prefix-list bogons seq 175 deny 84.0.0.0/8 le 32
ip prefix-list bogons seq 180 deny 85.0.0.0/8 le 32
ip prefix-list bogons seq 185 deny 86.0.0.0/8 le 32
ip prefix-list bogons seq 190 deny 87.0.0.0/8 le 32
ip prefix-list bogons seq 195 deny 88.0.0.0/8 le 32
ip prefix-list bogons seq 200 deny 89.0.0.0/8 le 32
ip prefix-list bogons seq 205 deny 90.0.0.0/8 le 32
ip prefix-list bogons seq 210 deny 91.0.0.0/8 le 32
ip prefix-list bogons seq 215 deny 92.0.0.0/8 le 32
ip prefix-list bogons seq 220 deny 93.0.0.0/8 le 32
ip prefix-list bogons seq 225 deny 94.0.0.0/8 le 32
ip prefix-list bogons seq 230 deny 95.0.0.0/8 le 32
ip prefix-list bogons seq 235 deny 96.0.0.0/8 le 32
ip prefix-list bogons seq 240 deny 97.0.0.0/8 le 32
ip prefix-list bogons seq 245 deny 98.0.0.0/8 le 32
ip prefix-list bogons seq 250 deny 99.0.0.0/8 le 32
ip prefix-list bogons seq 255 deny 100.0.0.0/8 le 32
ip prefix-list bogons seq 260 deny 101.0.0.0/8 le 32
ip prefix-list bogons seq 265 deny 102.0.0.0/8 le 32
ip prefix-list bogons seq 270 deny 103.0.0.0/8 le 32
ip prefix-list bogons seq 275 deny 104.0.0.0/8 le 32
ip prefix-list bogons seq 280 deny 105.0.0.0/8 le 32
ip prefix-list bogons seq 285 deny 106.0.0.0/8 le 32
ip prefix-list bogons seq 290 deny 107.0.0.0/8 le 32
ip prefix-list bogons seq 295 deny 108.0.0.0/8 le 32
ip prefix-list bogons seq 300 deny 109.0.0.0/8 le 32
ip prefix-list bogons seq 305 deny 110.0.0.0/8 le 32
ip prefix-list bogons seq 310 deny 111.0.0.0/8 le 32
ip prefix-list bogons seq 315 deny 112.0.0.0/8 le 32
ip prefix-list bogons seq 320 deny 113.0.0.0/8 le 32
ip prefix-list bogons seq 325 deny 114.0.0.0/8 le 32
ip prefix-list bogons seq 330 deny 115.0.0.0/8 le 32
ip prefix-list bogons seq 335 deny 116.0.0.0/8 le 32
ip prefix-list bogons seq 340 deny 117.0.0.0/8 le 32
ip prefix-list bogons seq 345 deny 118.0.0.0/8 le 32
ip prefix-list bogons seq 350 deny 119.0.0.0/8 le 32
ip prefix-list bogons seq 355 deny 120.0.0.0/8 le 32
ip prefix-list bogons seq 360 deny 121.0.0.0/8 le 32
ip prefix-list bogons seq 365 deny 122.0.0.0/8 le 32
ip prefix-list bogons seq 370 deny 123.0.0.0/8 le 32
ip prefix-list bogons seq 375 deny 124.0.0.0/8 le 32
ip prefix-list bogons seq 380 deny 125.0.0.0/8 le 32
ip prefix-list bogons seq 385 deny 126.0.0.0/8 le 32
ip prefix-list bogons seq 390 deny 127.0.0.0/8 le 32
ip prefix-list bogons seq 395 deny 169.254.0.0/16 le 32
ip prefix-list bogons seq 400 deny 172.16.0.0/12 le 32
ip prefix-list bogons seq 405 deny 192.0.2.0/24 le 32
ip prefix-list bogons seq 410 deny 192.168.0.0/16 le 32
ip prefix-list bogons seq 415 deny 197.0.0.0/8 le 32
ip prefix-list bogons seq 420 deny 201.0.0.0/8 le 32
ip prefix-list bogons seq 440 deny 222.0.0.0/8 le 32
ip prefix-list bogons seq 445 deny 223.0.0.0/8 le 32
ip prefix-list bogons seq 450 deny 224.0.0.0/3 le 32
! Allow all prefixes up to /27. Your mileage may vary,
! so adjust this to fit your specific requirements.
ip prefix-list bogons seq 455 permit 0.0.0.0/0 le 27
!
! Now we configure our prefix lists for our dampening requirements.
! These are configured along the lines of the recommendations made
! by RIPE. The goal is to minimalize the effect of dampening on
! the shorter and historically more stable prefixes as well as the
! netblocks that contain DNS root servers. The longer prefixes
! are dampened for longer periods of time, as these have been the
! the source of a greater percentage of the instability in the
! global routing table.
! Note that a longer prefix equates to a less-aggregated and smaller
! netblock.
!
! The damplongprefixes list is for prefixes of /24 and longer.
ip prefix-list damplongprefixes description Prefixes of /24 and
longer.
ip prefix-list damplongprefixes seq 5 permit 0.0.0.0/0 ge 24
!
! The dampmediumprefixes list is for prefixes of /22 and /23.
ip prefix-list dampmediumprefixes description Prefixes of /22 and /23.
ip prefix-list dampmediumprefixes seq 5 permit 0.0.0.0/0 ge 22 le 23
!
! The dampshortprefixes list is for prefixes of /21 and shorter.
ip prefix-list dampshortprefixes description Prefixes of /21 and
shorter.
ip prefix-list dampshortprefixes seq 5 permit 0.0.0.0/0 le 21
!
! The rootservers prefix list is to prevent dampening of
! the root DNS server netblocks.
ip prefix-list rootservers description DNS root server netblocks.
ip prefix-list rootservers seq 5 permit 198.41.0.0/24
ip prefix-list rootservers seq 10 permit 128.9.0.0/16
ip prefix-list rootservers seq 15 permit 192.33.4.0/24
ip prefix-list rootservers seq 20 permit 128.8.0.0/16
ip prefix-list rootservers seq 25 permit 192.203.230.0/24
ip prefix-list rootservers seq 30 permit 192.5.4.0/23
ip prefix-list rootservers seq 35 permit 192.112.36.0/24
ip prefix-list rootservers seq 40 permit 128.63.0.0/16
ip prefix-list rootservers seq 45 permit 192.36.148.0/24
ip prefix-list rootservers seq 50 permit 193.0.14.0/24
ip prefix-list rootservers seq 55 permit 198.32.64.0/24
ip prefix-list rootservers seq 60 permit 202.12.27.0/24
!
! We apply our dampening prefix-lists with our route-map entries.
! Don't dampen the rootservers prefix-list.
route-map graded-flap-dampening deny 10
match ip address prefix-list rootservers
! Dampen the /24 and greater prefixes for a maximum of 60 minutes.
route-map graded-flap-dampening permit 20
match ip address prefix-list damplongprefixes
set dampening 30 750 3000 60
! Dampen the /22 to /23 prefixes for a maximum of 45 minutes.
route-map graded-flap-dampening permit 30
match ip address prefix-list dampmediumprefixes
set dampening 15 750 3000 45
! Dampen the /21 and shorter prefixes for a maximum of 30 minutes.
route-map graded-flap-dampening permit 40
match ip address prefix-list dampshortprefixes
set dampening 10 1500 3000 30
!
! END
VoIP Asterisk Dialplan: звонок с определенного номера на определенный
Для того что бы exten отрабатывать только при звонке с определенного номера:
exten => 500/9999,1,Answer()
Сработает только если на номер 5000 позвонят с номера 9999
или по шаблону:
exten => 500/_XXXX,1,Answer()
сработает только тогда когда на номер 500 позвонят с четырехзначного номера.
VoIP Asterisk Автоответ: номер не найден
Автоответ что номера не существует:
1. Способ
Файл extensions.conf
[nomatch]
exten => _.,1,answer
exten => _.,2,wait(.5)
exten => _.,3,playback(vm-extension)
exten => _.,4,sayalpha(${EXTEN})
exten => _.,5,playback(invalid)
exten => _.,6,hangup
и это нужно включить ваш контекст (например default)
[default]
include => nomatch
2. Способ
Воспользоваться DIALSTATUSом (http://www.voip-info.org/wiki/view/Asterisk+variable+DIALSTATUS) CHANUNAVAIL
Файл extensions.conf
exten => _XXX,1,Dial(SIP/${EXTEN},40,tT)
exten => _XXX,n,Goto(s-${DIALSTATUS},1)
exten => s-CHANUNAVAIL,1,playback(/usr/local/share/asterisk/sounds/pbx-invalid)
exten => s-CHANUNAVAIL,n,Hangup()
VoIP Asterisk "Железная леди" - IVR (Interactive voice response)
IVR (Interactive voice response)
Например:
Поднимаем трубку при звонке из города, говорим приветствие + то что 4 это отдел продаж, 5 - отдел тех.поддержки
[fromcity]
exten => s,1,Answer() ;Поднимаем трубку
exten => s,n,Background(hello) ;Запускаем приветствие
exten => s,n,Set(numTries=0) ;Выставляем кол-во попыток
exten => s,n(naberite),Background(naberite) ;Рассказываем о возможности набрать цифры 4 и 5
exten => s,n,WaitExten() ;Ждем ввода от пользователя
exten => 4,1,Goto(otdel-prodaj,s,1) ; Нажали 4-ре переходим на голосовое меню отдела продаж
exten => 5,1,Goto(supports,s,1) ;Нажали 5-ть - переходим на голосовое меню тех.подов
exten => i,1,Playback(pbx-invalid) ;Нажали не 4-ре и не 5-ть - говорим что ввод не верный
exten => i,n,Goto(s,naberite) ; Возвращаемся и повторяем сообщение о том какие кнопки можно нажимать
exten => t,1,Set(numTries=$[${numTries} + 1]) ; Увеличивает кол-во попыток на 1-цу при таймауте набора
exten => t,n,GotoIf($["${numTries}" < "3"]?s|naberite) ;Пока кол-во потыток меньше 3-х повторяем сообщение о том какие кнопки можно нажимать
exten => t,n,Playback(bay) ;Кол-во попыток на таймаут израсходовано, прощаемся
exten => t,n,Hangup() ; Вешаем трубку
[otdel-prodaj]
exten => s,1,Playback(vi_nahodites_v_menu)
exten => s,n,Playback(otdela_prodag)
exten => s,n,Background(glavnoe_menu_nazmite_zvezdochka)
exten => s,n,Background(dlya_zaversheniya_nazmite_reshetka)
exten => s,n,WaitExten()
exten => *,1,Goto(fromcity,s,naberite) ;Нажали звездочку, выходим в главное меню
exten => #,1,Hangup() ;Нажади решетку - вешаем трубку
exten => i,1,Playback(pbx-invalid)
exten => i,n,Goto(s,1)
exten => t,1,Playback(bay)
exten => t,n,Hangup()
[supports]
exten => s,1,Playback(vi_nahodites_v_menu)
exten => s,n,Playback(otdela_supportov)
exten => s,n,Background(glavnoe_menu_nazmite_zvezdochka)
exten => s,n,Background(dlya_zaversheniya_nazmite_reshetka)
exten => s,n,WaitExten()
exten => *,1,Goto(fromcity,s,naberite)
exten => #,1,Hangup()
exten => i,1,Playback(pbx-invalid)
exten => i,n,Goto(s,1)
exten => t,1,Playback(bay)
exten => t,n,Hangup()
Вот так это работает. Вы можете создать ещё саб-менюхи.
В саб-менюхах (в примере это otdel-prodaj и supports) вы можете описывать новые саб-меню по нажаитию кнопок и т.д.
Главное чтобы саб-меню выступали как отдельные экстеншены, чтобы не сталкнуться с проблемой описанной мной в первом сообщении.
Не маловажно помнить о том, что при проигрывании сообщения с помощью функции Playback нажатие каких либо клавиш игнорируются, "прослушка" ввода клавиши от юзера ТОЛЬКО при использовании функции Background.
VoIP Asterisk Обработчик логов / Биллинг
Обработчик логов
www.voip-info.org/wiki/view/Asterisk+queue_log+on+MySQL
www.voip-info.org/wiki/view/Asterisk+CDR+csv+conversion+mysql
www.voip-info.org/wiki/view/Asterisk+CDR+csv+mysql+import
Биллинг:
trac.asterisk2billing.org
forum.asterisk2billing.org
Так же можно получать данные о звонке через AGI скрипт.
Когда астериск передает управление скрипту он передает в него и данные о звонящем, а именно массив:
Key: priority Value: 1
Key: callingani2 Value: 0
Key: accountcode Value:
Key: channel Value: SIP/ХХХ.ХХХ.125.46-0877f000
Key: callerid Value: 8495ХХХ8108
Key: context Value: default
Key: callington Value: 0
Key: dnid Value: ХХХ3011
Key: request Value: test_agi_script.pl
Key: calleridname Value: unknown
Key: extension Value: 6
Key: language Value: en
Key: uniqueid Value: 1201697110.46
Key: callingpres Value: 0
Key: type Value: SIP
Key: rdnis Value: unknown
Key: callingtns Value: 0
Key: enhanced Value: 0.0
этот массив или необходимые данные из него можно уже "загонять" куда угодно, хоть в базу, хоть в файл, например:
FILE test_agi_script.pl:
#!/usr/bin/perl
use Asterisk::AGI;
$AGI = new Asterisk::AGI;
my %input = $AGI->ReadParse();
open(F,">>/usr/local/share/asterisk/agi-bin/t.log");
foreach $k (keys %input){
$t=sprintf("Key: %s Value: %s\n",$k,$input{$k});
print F $t;
}
close F;
а в диал плане, например, вешаем отработку скрипта по нажатию на цифру 6:
exten => 6,1,AGI(test_agi_script.pl)
Файл test_agi_script.pl должен лежать в /usr/local/share/asterisk/agi-bin
VoIP Asterisk Запрет вход/исх вызовов для НЕ авторизованных
Запрет вход/исх вызовов для НЕ авторизованных по SIP
нужно в описании пользователя
в sip.conf и в user.conf указывать поле secret=user_secret_password
VoIP Asterisk Ограничение линий
В sip.conf в секции номера указать call-limit=Х, где Х кол-во линий
Например:
[6000]
type=friend
call-limit=1
context=default
host=192.168.1.10
reinvite=no
canreinvite=no
disallow=all
allow = alaw
VoIP Asterisk Командная строка
После запуска asterisk в командной строке сервера:
asterisk -r
набираем help для просмотра списка команд
VoIP Asterisk Asterisk 1.4 и очереди
Asterisk 1.4+ корректно работает с очередями (app_queue) только в случае если в sip.conf прописаны лимиты линий на peers:
[general]
limitonpeer=yes
[peer1]
call-limit=50
вроде такого. иначе все операторы в очереди будут со статусом not in use, не зависимо идёт на них ringing или линия in use. корректно будет работать только manager interface, CLI и всякие фишки очередей типа ringinuse=no не зафурычат.
если у вас не заводится мотор - замените дворники. молодцы индусы.
да, и не забывайте переименовать app_queue.so в какойнить x_queue.so или выставить ему загрузку руками после chan_sip в конфиге. иначе при рестарте PBX все операторы в очереди будут invalid.
Автор disserman (http://disserman.blogspot.com/2008/05/asterisk-14.html)
VoIP Asterisk Автоматический обзвон
Для авто обзвона нам необходимо:
1. добвать в extensions.conf блок вида:
[outboundmsg1]
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,Background(/usr/local/share/asterisk/sounds/my-auto-message)
exten => s,n,hangup
2. для совершения звонка положить в /var/spool/asterisk/outgoing файл вида:
Channel: SIP/89031234567@my-provider
Callerid: 7891
MaxRetries: 5
RetryTime: 300
WaitTime: 45
Context: outboundmsg1
Extension: s
Priority: 1
EOF
в папку /var/spool/asterisk/outgoing добавляем столько файлов сколько звонков должен совершить наш астериск
VoIP Asterisk Складываем логи о звонках в бд Mysql
Для этого нам нужно:
1. установить asterisk-addons
2. отредактировать файл:
/usr/local/etc/asterisk/cdr_mysql.conf
[global]
hostname=localhost
dbname=asterisk
table=cdr
password=password
user=asterisk
port=3306
sock=/tmp/mysql.sock
3. создать в mysql БД asterisk с таблицей cdr:
--
-- Структура таблицы `cdr`
--
CREATE TABLE `cdr` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`calldate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL DEFAULT '',
`src` varchar(80) NOT NULL DEFAULT '',
`dst` varchar(80) NOT NULL DEFAULT '',
`dcontext` varchar(80) NOT NULL DEFAULT '',
`channel` varchar(80) NOT NULL DEFAULT '',
`dstchannel` varchar(80) NOT NULL DEFAULT '',
`lastapp` varchar(80) NOT NULL DEFAULT '',
`lastdata` varchar(80) NOT NULL DEFAULT '',
`duration` int(11) NOT NULL DEFAULT '0',
`billsec` int(11) NOT NULL DEFAULT '0',
`disposition` varchar(45) NOT NULL DEFAULT '',
`amaflags` int(11) NOT NULL DEFAULT '0',
`accountcode` varchar(20) NOT NULL DEFAULT '',
`uniqueid` varchar(32) NOT NULL DEFAULT '',
`userfield` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
и ессно дать на нее необходимые права
VoIP Asterisk Asterisk не слышит нажатие клавиш (кнопок) на телефоне
Ноги растут из DTMF
1. посмотреть в настройках телефона, какой режим DTMF выставлен
я использовал rfc2833
2. в Астериске в sip.conf (секция general) добавить строчку:
dtmfmode = rfc2833
3. если соединение идет через голосовую циску, то в диалпир добавить:
dtmf-relay rtp-nte h245-signal h245-alphanumeric
VoIP Asterisk SOX convert wav to gsm
Convert записанный с помощью Windows recorder голосовой файл.
Параметры записи: Формат PCM, Mono, 8bit
sox input.wav -r 8000 -c 1 output.gsm resample -ql
Если sox версии 14.3.0 и выше:
sox input.wav -r 8k -c 1 -e gsm output.gsm
VoIP Cisco Debug и полезные команды
как "ходят" звонки: debug isdn q931
активные звонки: sh call leg act sum
под какой dial-peer попал звонок: debug voip dialpeer all
как идет факс: debug fax relay t30 all-level-1
debug voip dialpeer all
show call history voice
sh call active voice brief
sh call active fax brief
debug voip ccapi inout
debug voip vtsp all
show voice dsp
show voice call summ
show dialplan
show dialplan TEL-NUM
debug voip dsm all
debug voip hpi all
show call history fax
show dial-peer voice
debug cch323 error
debug ccsip all
Для хождения факсов (в dial-peer`e):
fax proto t38 ls-redun 0 hs-redun 0 fallback cisco
или
fax protocol t38 ls-redun 0 hs-redun 0 fallback g711alaw
либо другой кодек, т.к. кодек cisco не все устройства воспринимают:
Поток E1:
sh isdn status
sh controllers E1
Выставляем clock на E1 (если есть ошибки):
1. conf t
2. controllers e1 0/0
3. clock source internal | external
4. framing crc4 | no-crc4
З.Ы. Не забываем, что если вы "сидите" на cisco не через консоль давать команду terminal monitor для вывода debug в консоль.
Verifying SIP DTMF Support
To verify SIP DTMF support, perform the following steps as appropriate (commands are listed in alphabetical order).
SUMMARY STEPS
1. show running-config
2. show sip-ua retry
3. show sip-ua statistics
4. show sip-ua status
5. show sip-ua timers
6. show voip rtp connections
7. show sip-ua calls
VoIP Cisco сброс звонка на 5350
#sh isdn active - смотрим активные сессии
--------------------------------------------------------------------------------
ISDN ACTIVE CALLS
--------------------------------------------------------------------------------
Call Calling Called Remote Seconds Seconds Seconds Charges
Type Number Number Name Used Left Idle Units/Currency
--------------------------------------------------------------------------------
Out 8656 2312 75107 0 0 0
делаем:
#clear call voice causecode 1 calling-number 8656
проверяем:
#sh isdn active
--------------------------------------------------------------------------------
ISDN ACTIVE CALLS
--------------------------------------------------------------------------------
Call Calling Called Remote Seconds Seconds Seconds Charges
Type Number Number Name Used Left Idle Units/Currency
--------------------------------------------------------------------------------
Вариант 2:
5350_Main#show voice call status
CallID CID ccVdb Port DSP/Ch Called # Codec Dial-peers
0x9009 1F71 0x63DABE1C 3/0:D.28 1009/2 595797 g729r8 6/89
5350_Main#clear interface ser 3/0:28
VoIP Cisco Статистика использования DSP
c5350#show call resource voice stats
Resource Monitor - Dial-up Resource Statistics Information:
DSP Statistics:
Utilization: 15.00 percent
Total channels: 60
Inuse channels: 9
Disabled channels: 0
Pending channels: 0
Free channels: 51
DS0 Statistics:
Utilization: 13.33 percent
Total channels: 62
Addressable channels: 60
Inuse channels: 8
Disabled channels: 0
Free channels: 52
VoIP Cisco isdn cause codes
isdn cause codes
http://www.cisco.com/en/US/tech/tk801/tk379/technologies_tech_note09186a008012e95f.shtml
ISDN Cause Code Override
http://www.cisco.com/en/US/docs/ios/12_0t/12_0t5/feature/guide/isdnscrn.html#wp14911
Configurable PSTN Cause Code to SIP Response Mapping
http://www.google.ru/search?hl=ru&newwindow=1&q=voice+cause-code+site%3A+cisco.com&aq=f&aqi=&aql=&oq=&gs_rfai=
VoIP Addpac Пример конфига
!
version 8.23H
!
hostname addpac-test
!
!
no bridge spanning-tree
!
access-list 30 permit ip host 192.168.1.77 host 192.168.1.10
!
!
ip-share enable
ip-share interface net-side ether0.0
ip-share interface local-side ether1.0
!
interface ether0.0
ip address 192.168.1.10 255.255.255.0
ip access-group 30 in
!
interface ether1.0
no ip address
shutdown
!
snmp name AP200B
!
no arp reset
!
route 0.0.0.0 0.0.0.0 192.168.1.77
!
no service ftpd
no service httpd
!
!
!
!
!
! VoIP configuration.
!
!
! Voice service voip configuration.
!
voice service voip
fax protocol t38 redundancy 0
fax rate 9600
h323 call start fast
h323 call tunnel enable
timeout tidt 5
busyout monitor gatekeeper
no busyout monitor callagent
busyout monitor voip-interface
!
!
! Voice port configuration.
!
! FXS
voice-port 0/0
description 2_Fax(AOH-7777)
!
!
! FXS
voice-port 0/1
!
!
!
!
! Pots peer configuration.
!
dial-peer voice 3 pots
destination-pattern 7777
port 0/0
!
!
!
! Voip peer configuration.
!
dial-peer voice 2 voip
destination-pattern .T
session target 192.168.1.77
session protocol sip
codec g711alaw
dtmf-relay rtp-2833
no vad
description 2_Asterisk
!
!
!
!
!
!
! Gateway configuration.
!
gateway
h323-id voip.192.168.1.10
no ignore-msg-from-other-gk
!
!
! SIP UA configuration.
!
sip-ua
!
!
! MGCP configuration.
!
mgcp
codec g711ulaw
!
!
! Tones
!
!
!
!
Полезный линк: http://www.svpro.ru/faq_addpac.htm
VoIP Разное Soft Switch
freeswitch
VoIP Разное Soft Phones
Zoiper:
Отличный софт телефон.
Поддерживает 6-ть одновременных линий и множество SIP аккаунтов.
www.zoiper.com
X-Lite:
Хороший софт телефон, но в бесплатной версии с ограничениями.
Только 2 одновременных линии и 1 SIP аккаунт.
www.counterpath.com
Программы QMAIL QMAIL: IP отправителя в header письма
Для того что бы QMAIL писал в header IP отправителя нужно:
открыть файл received.c и добавить
qmail_puts(qqt,"Received: from ");
safeput(qqt,remotehost);
qmail_puts(qqt," [");
safeput(qqt,remoteip);
qmail_puts(qqt,"] ");
Программы QMAIL Прикручиваем RoundCube (Webmail) + Courier-IMAP к Qmail
Прикручиваем RoundCube (Webmail) + Courier-IMAP к Qmail
Формат почтовых ящиков - Maildir
Идем в /usr/ports/mail/courier-imap/
make (в меню отмечаем AUTH_USERDB)
make install
После установки правим конфиг: /usr/local/etc/courier-imap/imapd
Прописываем ADDRESS=127.0.0.1
В моем случае 127.0.0.1 т.к. веб морда, qmail и IMAP живет на одном сервере.
Правим /usr/local/etc/authlib/authdaemonrc, строчки authmodulelist и authmodulelistorig:
authmodulelist="authuserdb"
authmodulelistorig="authuserdb"
Правим /etc/rc.conf и дописываем:
courier_imap_imapd_enable="YES"
courier_authdaemond_enable="YES"
Что бы логировать демон авторизации и imapd можно прописать в начало /etc/syslog.conf:
!authdaemond
*.* /var/log/authdaemond.log
!imapd
*.* /var/log/imapd.log
!-authdaemond,imapd
а в файле /usr/local/etc/authlib/authdaemonrc можно задать необходимый уровень дебага, переменная DEBUG_LOGIN
Теперь необходимо создать файл /usr/local/etc/userdb с помощью которого и будут авторизоваться пользователи.
Формат файла такой:
LOGIN systempw=MD5_PASSWORD|uid=888|gid=82|home=/var/qmail/popboxes/my-domain-ru/user
Где:
/var/qmail/popboxes/my-domain-ru/user - полный путь до папки почтового ящика
LOGIN - логин пользователя
MD5_PASSWORD - пароль в MD5, поможно сделать с помощью программы userdbpw
uid - юзер ID которому принадлежит папка /var/qmail/popboxes/my-domain-ru/user
gid - груп ID которому принадлежит папка /var/qmail/popboxes/my-domain-ru/user
Смотреть содержимое файла userdb можно с помощью:
userdb -show
а так же управлять им, например:
userdb LOGIN set mail=/var/qmail/popboxes/my-domain-ru/user
этой командой он допишет в /usr/local/etc/userdb указанному юзеру указанный параметр.
После того как мы создали и отредактировали /usr/local/etc/userdb нужно запустить makeuserdb, который создаст /usr/local/etc/userdb.dat
Если при выполнении команды makeuserdb выдается сообщение:
/usr/local/etc/userdb: MAY NOT HAVE GROUP OR WORLD PERMISSIONS!!
то выставляем права chmod 600 /usr/local/etc/userdb и ещё раз выполняем makeuserdb
Советую полистать для более полного понимания:
man userdb
man userdbpw
man makeuserdb
Исталим веб морду http://www.roundcube.net/ , в портах /usr/ports/mail/roundcube
Как инсталить читаем в INSTALL после сборки командой make
В итоге потребуется создать БД, поправить пару конфигов и ессно настроить ваш веб сервер (например apache)
в main.inc.php:
правим переменную $rcmail_config['default_host'] равную 127.0.0.1
$rcmail_config['create_default_folders'] устанавливаем как TRUE
$rcmail_config['locale_string'] пишем ru
Итак, все подготовлено к запуску, стартуем:
/usr/local/etc/rc.d/courier-imap-imapd start
/usr/local/etc/rc.d/courier-authdaemond start
Несколько слов про квоты.
Квота на ящик задается в файле /var/qmail/popboxes/my-domain-ru/user/Maildir/maildirsize в виде <[XXXXS],[YYYYC]>\n
, где
XXXX - Объем сообщений в байтах;
YYYY - Количество сообщений в ящике.
Должно быть задан либо объем либо количество либо и то и то.
Также немного следует изменить содержимое .qmail на:
|/usr/local/bin/deliverquota ./Maildir/
Программы QMAIL Big Qmail (работа Qmail графически)
Можно использовать как шпору.
Программы MySQL Downgrading MySQL 4.1.x to 4.0.x
Downgrading MySQL 4.1.x to 4.0.x
[Guide] Downgrading MySQL 4.1.x to 4.0.x
The table format in 4.1 changed to include more and new character set information. Because of this, you must use mysqldump to dump any tables you have created with the newer MySQL server.
В моем случае база работала под MySQL 4.1.3-beta (Language: Russian (ru-utf-8 ); Сопоставление соединения с MySQL utf8_general_ci) и нужно было обеспечить совместимость с MySQL 4.0.27 собранным с WITH_CHARSET=cp1251
Таким образом, нужно сделать дамп базы в нужной кодировке (которая юзается на серваке куда переносим) и с поддержкой совместимости с более ранней версией MySQL
Создаем дамп нужной базы:
shell> mysqldump -u root -p --create-options --compatible=mysql40 --default-character-set=cp1251 db_name > /path/to/dump_file
Если понадобятся какие-то дополнительные опции при создания дампа - поможет man mysqldump. Там их вагон.
Теперь затягиваем полученный дамп в нужную базу нашего более старого по версии сервера:
shell> mysql db_name < dump_file
иной способ:
1. создать пустую базу
2. запустить mysql (консоль)
3. use db_name
4. source /path/to/dump_file;
Единственная проблема с которой пришлось столкнуться - при втягивании дампа базы была ошибка дублирования всталяемых данных. Это была база форума и ошибку вызывала запись в таблу в которой хранились шаблоны поиска юзеров; решение было простым - удаление из дампа базы строки INSERT с этими шаблонами (не было смысла искать что там дублируется; в любом случае эта таблица потом снова постепенно заполнится той помойкой которую используют юзеры при поиске инфы Wink
После этого всё прошло без проблем.
Программы ProFTPD Proftpd и symlink
proftpd как правильно сделать symlink через mount_nullfs
Подсказала статья:
DefaultRoot, Symlinks and chroot()
http://www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-Chroot.html
1.
Код:
df -H
Код:
Filesystem Size Used Avail Capacity Mounted on
/dev/ad10s1a 1.9G 56M 1.7G 3% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad10s1e 5.8G 42K 5.3G 0% /tmp
/dev/ad10s1f 57G 3.8G 48G 7% /usr
/dev/ad10s1d 3.9G 89M 3.5G 2% /var
/dev/ad6s1d 361G 136G 196G 41% /mnt/disk1
/dev/ad8s1d 174G 6.0K 160G 0% /mnt/disk21
/dev/ad8s1e 174G 6.0K 160G 0% /mnt/disk22
/dev/ad8s1f 12G 6.0K 11G 0% /mnt/disk23
2.
Код:
mkdir /mnt/disk1/Video
mkdir /usr/local/ftp/Video
создать все остальные пары директорий
3.
Код:
mount_nullfs /mnt/disk1/Video /usr/local/ftp/Video
4.
Код:
df -H
Код:
Filesystem Size Used Avail Capacity Mounted on
/dev/ad10s1a 2.1G 58M 1.9G 3% /
devfs 1.0k 1.0k 0B 100% /dev
/dev/ad10s1e 6.2G 31k 5.7G 0% /tmp
/dev/ad10s1f 61G 4.0G 52G 7% /usr
/dev/ad10s1d 4.2G 93M 3.7G 2% /var
/dev/ad6s1d 387G 146G 210G 41% /mnt/disk1
/dev/ad8s1d 187G 146G 26G 85% /usr/local/ftp/Software
/dev/ad8s1e 187G 4.1k 172G 0% /usr/local/ftp/Games
/dev/ad8s1f 13G 4.1k 12G 0% /usr/local/ftp/Upload
/mnt/disk1 387G 146G 210G 41% /usr/local/ftp/Video
6.
Код:
ee /etc/fstab
7.
Код:
df -h
Код:
Filesystem Size Used Avail Capacity Mounted on
/dev/ad10s1a 1.9G 56M 1.7G 3% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad10s1e 5.8G 42K 5.3G 0% /tmp
/dev/ad10s1f 57G 3.8G 48G 7% /usr
/dev/ad10s1d 3.9G 89M 3.5G 2% /var
/dev/ad6s1d 361G 136G 196G 41% /mnt/disk1
/dev/ad8s1d 174G 6.0K 160G 0% /mnt/disk21
/dev/ad8s1e 174G 6.0K 160G 0% /mnt/disk22
/dev/ad8s1f 12G 6.0K 11G 0% /mnt/disk23
8.
Код:
ee /usr/local/etc/rc.d/mount_nullfs.sh
9.
Код:
#!/bin/sh
mount_nullfs /mnt/disk1/Books /usr/local/ftp/Books
mount_nullfs /mnt/disk1/Music /usr/local/ftp/Music
mount_nullfs /mnt/disk1/Video /usr/local/ftp/Video
mount_nullfs /mnt/disk1/Video_study /usr/local/ftp/Video_study
mount_nullfs /mnt/disk21/Software /usr/local/ftp/Software
mount_nullfs /mnt/disk22/Games /usr/local/ftp/Games
mount_nullfs /mnt/disk23/Upload /usr/local/ftp/Upload
10.
Код:
chmod 0555 /usr/local/etc/rc.d/mount_nullfs.sh
11.
Код:
reboot
12.
Код:
df -h
Код:
Filesystem Size Used Avail Capacity Mounted on
/dev/ad10s1a 1.9G 56M 1.7G 3% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad10s1e 5.8G 42K 5.3G 0% /tmp
/dev/ad10s1f 57G 3.8G 48G 7% /usr
/dev/ad10s1d 3.9G 89M 3.5G 2% /var
/dev/ad6s1d 361G 136G 196G 41% /mnt/disk1
/dev/ad8s1d 174G 6.0K 160G 0% /mnt/disk21
/dev/ad8s1e 174G 6.0K 160G 0% /mnt/disk22
/dev/ad8s1f 12G 6.0K 11G 0% /mnt/disk23
/mnt/disk1/Books 361G 136G 196G 41% /usr/local/ftp/Books
/mnt/disk1/Music 361G 136G 196G 41% /usr/local/ftp/Music
/mnt/disk1/Video 361G 136G 196G 41% /usr/local/ftp/Video
/mnt/disk1/Video_study 361G 136G 196G 41% /usr/local/ftp/Video_study
/mnt/disk21/Software 174G 6.0K 160G 0% /usr/local/ftp/Software
/mnt/disk22/Games 174G 6.0K 160G 0% /usr/local/ftp/Games
/mnt/disk23/Upload 12G 6.0K 11G 0% /usr/local/ftp/Upload
Программы VLC VLC media player (UDP Multicast)
Запуск вещания VoD (Video on Demand)
c unicast адреса 172.16.10.14 порта 5554
Консоль сервера:
================
1. vlc --ttl 12 --color -I telnet --telnet-password 123 --rtsp-host 172.16.10.14:5554
2. telnet localhost 4212
3.
> new Test vod enabled
> setup Test input /path/to/file.avi
На клиенте:
===========
запускаем vlc проигрыватель
нажимаем "Файл" ->"Открыть URL"
в строке MRL пишем: rtsp://172.16.10.14:5554/Test
жмем ОК - смотрим фильм "по запросу"
Multicast вещание нескольких видео файлов на адреса 239.255.1.1 и 239.255.1.2
Консоль сервера:
================
1. vlc --ttl 12 --color -I telnet --telnet-password 123
2. telnet localhost 4212
3.
> new channel1 broadcast enabled
> setup channel1 input /path/to/file_1.avi
> setup channel1 output #rtp{mux=ts,dst=239.255.1.1,sap,name="Channel1"}
> new channel2 broadcast enabled
> setup channel2 input /path/to/file_2.avi
> setup channel2 output #rtp{mux=ts,dst=239.255.1.2,sap,name="Channel2"}
> control channel1 play
> control channel2 play
Если мы хотим зациклить проигрывание файлов до бесконечности "по кругу":
> setup channel1 loop
> setup channel2 loop
На клиенте:
===========
запускаем vlc проигрыватель
нажимаем "Настройки" -> "Настройки" -> раскрываем "Вывод потока", а там ищем "Модули вывода", в поле "Интерфейс вывода IPv4 multicast" пишем IP-адрес который прописан на вашей сетевой карте ( смотрящей в сторону сервера вещающего поток), жмем "Сохранить"
После тока как выполнили настройки: "Файл" ->"Открыть URL"
в строке MRL пишем:
udp://@239.255.1.1 (что бы посмотреть видео из файла file_1.avi)
или
udp://@239.255.1.2 (что бы посмотреть видео из файла file_2.avi соответственно)
Все нижеизложенное относится к последней версии VLC media player 0.8.6
Информация для тех, кто хочет транслировать видео на приставку с компьютера, но
получает на выходе только звук (то есть подразумевается, что UDP Multicast и
роутинг между VLAN настроен корректно)
Q: Я начинаю транслировать фильм через VLC, включаю первый канал, но слышу
только звук. В окне сообщений VLC показывается строка: ffmpeg error: unable to
open vcoder?
A: Такая ошибка возникает в том случае, если вы пытаетесь транслировать файл с
"киношной" частотой кадров (23.97 fps). Дело в том, что при mpeg2 кодировании по
умолчанию используются интерлейсинг, а файлы, полученные на основе
видеоматериалов оцифрованных с киношной пленки ("целки" на жаргоне наших
пиратов) содержат progressive фреймы. Поэтому кодек отказывается их
воспринимать. Чтобы решить эту проблему используйте опцию --sout-transcode-fps,
например следующим образом:
vlc.exe filename.avi --sout-transcode-fps 25.000 --sout
"#transcode{vcodec=mp2v,vb=4096,scale=1,acodec=mpga,ab=192,channels=2}:std{access=udp,mux=ts,url=239.255.0.97:5500}"
Естественно воспроизведение немного ускорится, но поверьте, большинство
современных сериалов, которые снимаются на киношную пленку, идут по нашему
телевидению именно в таком "ускоренном" режиме.
Q: Изначальный aspect Ratio моего файла 1:2.33. На экране моего телевизора
изображение сильно сжато по горизонтали (или растянуто по вертикали, что одно и
то же). Что делать?
A: Если фильм широкоэкранный (16:9 или 1:2.33), существует два варианта
востановить пропорции исходного изображения:
1. Обрезать изображение по краям: если у вас широкоэкранный телевизор - 16:9, а
фильм 1:2.33, то обрезав по 12% изображения по краям можно вполне комфортно
смотреть на полный экран; аналогично можно обрезать фильм 16:9 для стандартных
телевизоров 4:3. В случае же, когда сам фильм 1:2.33, а телевизор у вас 4:3,
такой вариант будет неоптимальным, так как потеряется около 50% изображения. Для
обрезки картинки используются следующие опции коммандной строки:
--sout-transcode-croptop, --sout-transcode-cropleft,
--sout-transcode-cropbottom, --sout-transcode-cropright
Для примера, возьмем фильм властелин колец, исходный размер 672x288, aspect 1:2.33
Трансляция с обрезкой под широкоэкранный телевизор:
vlc.exe filename.avi --sout-transcode-cropleft 80 --sout-transcode-cropright 80
--sout-transcode-fps 25.000 --sout
"#transcode{vcodec=mp2v,vb=4096,scale=1,acodec=mpga,ab=192,channels=2}:std{access=udp,mux=ts,url=239.255.0.97:5500}"
Трансляция с обрезкой под стандартный телевизор (не рекомендуется!):
vlc.exe filename.avi --sout-transcode-cropleft 144 --sout-transcode-cropright
144 --sout-transcode-fps 25.000 --sout
"#transcode{vcodec=mp2v,vb=4096,scale=1,acodec=mpga,ab=192,channels=2}:std{access=udp,mux=ts,url=239.255.0.97:5500}"
2. Добавить черные полосы по краям изображения, приведя его под соотношение
сторон своего телевизора (плюсы - исходное разрешение картинки будет выше,
минусы - черные полосы по краям экрана). Для этого используются опции:
--sout-transcode-paddtop, --sout-transcode-paddleft,
--sout-transcode-paddbottom, --sout-transcode-paddright. Но есть и более простой
вариант, для стандартных соотношений сторон, с использованием комманды
--sout-transcode-canvas-aspect.
Возвращаясь к нашему примеру с фильмом
Трансляция на широкоэкранный телевизор с небольшими черными полосками сверхну и
снизу:
vlc.exe filename.avi --sout-transcode-canvas-aspect 16:9 --sout-transcode-fps
25.000 --sout
"#transcode{vcodec=mp2v,vb=4096,scale=1,acodec=mpga,ab=192,channels=2}:std{access=udp,mux=ts,url=239.255.0.97:5500}"
Трансляция на стандартный телевизор (полоски будут отжирать поэкрана)
vlc.exe filename.avi --sout-transcode-canvas-aspect 4:3 --sout-transcode-fps
25.000 --sout
"#transcode{vcodec=mp2v,vb=4096,scale=1,acodec=mpga,ab=192,channels=2}:std{access=udp,mux=ts,url=239.255.0.97:5500}"
Q: А почему я не могу использовать комманду --crop-geometry?
A: Потому что эти фильтры накладываются непосредственно перед выводом потока на
экран, средствами графического адаптера, соответсвенно при перекодировки потока
они недоступны.
Программы Apache :: httpd .htaccess
Запретить всем все, но разрешить показ своих ErrorDocument
< Files ~ "^40.\.html" >
order deny,allow
Satisfy All
< /Files >
Order Allow,Deny
Allow from IP-ADDRESS
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
Программы Apache :: httpd Доступ по паролю только к некоторым файлам
в .htaccess
< Files ~ ".\.jpg">
Order deny,allow
AuthType Basic
AuthName "Restricted Directory"
AuthUserFile /web/users
AuthGroupFile /web/groups
require valid-user
< /Files>
Программы Разное Посмотреть разницу двух файлов
Сравнить два файла:
diff -NuN file1 file2
Программы Разное Архиваторы
Архивы
TAR:
tar --bzip2 --create --file=nazvanie_arhiva.tbz2 link_to_files/folder
ex: tar --bzip2 --create --file=ospl.tbz2 os.pl
extract: tar --bzip2 --extract --file=file kak_to_tak man tar
RAR:
rar a FILE_NAME.rar -ep PATH_TO_FOLDER
Для backup:
rar a -x@/root/exclude.conf -ep1 -m5 -ow -ag+YYYY-MM-DD-HH_MM_{www_files} /path/
for/save/ /path/to/resut/file/
а в файле /root/exclude.conf можно перечислять папки/файлы исключения
Программы Разное WGET (выкачивание сайтов или файлов с сайтов)
WGET (выкачивание сайтов или файлов с сайтов)
скачать все: wget -b -r -np
Программы Разное WHOIS
WHOIS
=====
AS info: whois -h whois.ripe.net AS111
Reverse deligation info:
whois -r -- '-r -G -B 16.172.217.in-addr.arpa'
Скриптинг PERL Множественный коментарий
Множественный коментарий:
=pod
...commented code...
...commented code...
...commented code...
=cut
=pod и =cut обязательно с новой строки
Скриптинг PERL Убрать виндовый перенос строки из файла
Убрать сивол ^M из файла:
perl -i -npe 's/\r//' /path/to/file
Аналог на sed:
cat file.txt | sed -E 's/\r//' > file1.txt
Аналог на cat:
cat file1 | col -bx > file2
Эта команда позволяет убрать символы возврата каретки из правленого в Windows редакторе файла file1 и записать поправленный вариант в fil2
Скриптинг PERL Копируем по scp или выполняем команды через ssh из скрипта
/usr/ports/net/p5-Net-SCP-Expect/
/usr/ports/net/p5-Net-SSH-Expect
Скриптинг PERL Рекурсия по директориям
dir_recursive("/path/to/dir");
sub dir_recursive {
my $dir = shift;
opendir DIR, $dir or return;
my @contents =
map "$dir/$_",
sort grep !/^\.\.?$/,
readdir DIR;
closedir DIR;
foreach (@contents) {
next unless !-l && -d;
dir_recursive($_);
print $_;
print "\n";
}
}
Скриптинг PERL Проверка синтаксиса perl скрипта без его исполнения
perl -wc perl_script_name.pl
Скриптинг PERL Как получить информацию о файле (время создания, изменения и т.п.)?
Способ 1 - функции -X:
if (-e $filename) { print "Файл существует.\n"; }
if (-z $filename) { print "Файл существует и он пустой.\n"; }
if (-r $filename) { print "У меня есть право на чтение файла.\n"; }
if (-w $filename) { print "У меня есть право на изменение файла.\n"; }
if (-x $filename) { print "У меня есть право на выполнение файла.\n"; }
if (-o $filename) { print "Я владелец файла.\n"; }
if (-f $filename) { print "$filename - это обычный файл.\n"; }
if (-d $filename) { print "$filename - это каталог.\n"; }
if (-l $filename) { print "$filename - это символическая ссылка.\n"; }
if (-p $filename) { print "$filename - это FIFO.\n"; }
if (-S $filename) { print "$filename - это сокет.\n"; }
if (-b $filename) { print "$filename - это блок-ориентированное спец. устройство.\n"; }
if (-c $filename) { print "$filename - это символьное спец. устройство.\n"; }
if (-t $filename) { print "Файловый манипулятор открыт для терминала.\n"; }
if (-u $filename) { print "У файла установлен бит setuid\n"; }
if (-g $filename) { print "У файла установлен бит setgid\n"; }
if (-k $filename) { print "У файла установлен бит запрета (бит-липучка)\n"; }
if (-T $filename) { print "Это текстовый файл.\n"; }
if (-B $filename) { print "Это двоичный файл.\n"; }
$size = -s $filename;
print "Размер файла: $size.\n"; }
$modification_time = int(-M $filename);
print "Со времени последнего изменения файла прошло $modification_time дней.\n";
$access_time = int(-A $filename);
print "Со времени последнего чтения файла прошло $access_time дней.\n";
$ctime = int(-C $filename);
print "Со времени последнего изменения файлового дескриптора прошло $ctime дней";
Способ 2 - функция stat:
($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
$atime, $mtime, $ctime, $blksize, $blocks) = stat($filename);
($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
$atime, $mtime, $ctime, $blksize, $blocks) = stat(FILEHANDLE);
stat возвращает список из 13-ти элементов. Вот их значение:
0 $dev номер устройства, на котором расположен файл
1 $ino номер файлового дескриптора
2 $mode флаги файла (права, setuid и прочее)
3 $nlink количество (жестких) ссылок на файл
4 $uid числовой идентификатор пользователя владельца файла
5 $gid числовой идентификатор группы владельца файла
6 $rdev идентификатор устройства (только спец. файлов)
7 $size размер файла в байтах
8 $atime время последнего чтения файла в секундах с 1.1.1970
9 $mtime время последнего изменения файла в секундах с 1.1.1970
10 $ctime время последнего изменения файлового дескриптора в секундах с 1.1.1970
11 $blksize предпочтительный размер блока в файловой системе
12 $blocks количество блоков, зарезервированых на данный момент
Скриптинг PERL Encode source code
FreeBSD:
# cd /usr/ports/devel/p5-PAR-Packer && make install clean
# pp -o binary_file source_file.pl
Скриптинг PHP Создание дочерних процессов в PHP(fork)
Основная суть:
Пользователь заходит на сайт. Вызывается php скрипт, который формирует страницу сайта. В некоторой точке скрипта вызывается функция pcntl_fork(), которая порождает второй(дочерний процесс). Дочерний процесс может выполнить другие задачи, не влияя на ход работы родительского процесса.
Пример использования:
$pid = pcntl_fork();
if ($pid == -1) {
die('не получилось');
} else if ($pid) {
// это родительский процесс
print_index_page(); //продолжаем дальше работать на пользователя
} else {
// дочерний процесс
slave_the_world();//работаем на себя
}
Одно важное замечание. Код который будет расположен после if будет выполняться обеими процессами!!!
Скриптинг PHP запуск php скрипта в консоли с передачей параметров
test.php:
#!/usr/local/bin/php
print_r($argv);
?>
Запускаем:
./test.php Hello
Вывод:
Array
(
[0] => ./logging.php
[1] => Hello
)
Скриптинг SQL Получение маски подсети из CIDR нотации sql запросом
Таблица: `subnets`
Поле: `grid` содержит подсети в формате: 10.10.0.0/16
Запрос:
SELECT ( substring( `grid` , 1, length( `grid` ) -3 ) ) AS `net` , inet_ntoa(pow( 2, 32 ) - pow( 2, ( 32 - substring( `grid` , -2) ) ) ) AS `mask` FROM `subnets`
Результат отработки SQL запроса:
net mask
10.10.0.0 255.255.0.0
Скриптинг Разное Остановка netgraph node
Остановка netgraph node после mpd
С помощью этого маленького скрипта, можно выполнить освобождение netgraph нод,
которые оставляет за собой упавший в "корку" MPD3.
#!/bin/sh
for j in "" 1 2 3 4 5 6 7 8 9 10 11 12; do
for i in 0 1 2 3 4 5 6 7 8 9; do
echo $j$i
ngctl shutdown ng$j$i:
ngctl shutdown mpd$1-pptp$j$i:
done
done
Разное Разное Расчет подсетей без перевода в двоичную систему
Расчет подсетей без перевода в двоичную систему
первый хитрый пример -
определить адрес сети, широковещательный адрес, число рабочих адресов
213.45.64.123/27
по шагам:
1)32-27 = 5 бит
2)двойка в 5-ой степени - 32
3) значит, имеем 30 рабочих адресов
4) в 123 целых 32-ек укладывается 3 раза
5) адрес сети - 213.45.64.96 (32x3)
6) широковещательный 213.45.64.127 (32х4-1)
второй хитрый пример -
определить адрес сети, широковещательный адрес, число рабочих адресов
192.168.32.48
255.255.255.192
1) 256-192 - 64
2) значит, имеем 62 рабочих адреса
3) в 48 входит 0 целых 64-ок
4) адрес сети 192.168.32.0 (0х64)
5) широковещательный - 192.168.32.63 (64х1-1)
Разное Разное Dlink 3526 и igmp
Включение:
enable igmp_snooping
config igmp_snooping all state enable
Просмотр групп:
show igmp_snooping group
Убедиться, что нет включенного storm-control на multicast:
show traffic control
Выключить:
config traffic control all multicast disable
Разное Разное Planet (свичи) и igmp
Точно работает на:
PLANET WGSD-1022 - 8+2G Managed Switch
PLANET WGSW-24010 24G Ethernet Switch
configure
console(config)# ip igmp snooping
console(config)# bridge multicast filtering
console(config)# int vlan 1
console(config-if)# ip igmp snooping
console(config-if)# bridge multicast forward-all add ethernet e1
console# show bridge multicast filtering 1 (посмотреть какие порты разрешены во влане)
========================================
Обе функции IGMP snooping и Bridge Multicast Filtering должны быть
включены. При настройке через WEB-интефейс рекомендовано дублировать
включение опции Bridge Multicast Filtering из консоли.
Пример:
====================================================
console# config
console(config)# ip igmp snooping
console(config)# bridge multicast filtering
Console(config)# interface vlan 10
Console(config)# ip igmp snooping
==================================================
При этом конфигурация VLAN'ов:
====================================================
# show startup-config
bridge multicast filtering
interface range ethernet e(6-8)
switchport mode general
exit
vlan database
vlan 10
exit
interface ethernet e6
switchport general pvid 10
exit
interface ethernet e7
switchport general pvid 10
exit
interface ethernet e8
switchport general pvid 10
exit
interface range ethernet e(6-8)
switchport general allowed vlan add 10 untagged
Разное Разное tcpdump to monitor RTP and RTCP
RTP traffic
tcpdump -T rtp -vvv
RTCP traffic
tcpdump -s 128 -vvv -T rtcp
http://www.erg.abdn.ac.uk/users/alastair/tcpdump.html