Категории

понедельник, 28 ноября 2011 г.

Удалить SUBSCRIBE TO: POSTS (ATOM)

Открываем в панели управления блогом вкладку Дизайн -> Изменить HTML
ВАЖНО! Поставьте галочку [v] "Расширить шаблоны виджета"
Найдите в коде блок:
<b:if cond='data:blog.pageType != "item"'> <!-- Blog feed links -->
<b:if cond='data:feedLinks'>
<div class='blog-feeds'>
<b:include data='feedLinks' name='feedLinksBody'/>
</div>
</b:if>

Удалите линию:
<b:include data='feedLinks' name='feedLinksBody'/>
Это удалит "Posts (Atom)".

Сменить "имя" и MAC (HWaddress) на FreeBSD

Чтобы сменить системное имя интерфейса и MAC адрес на FreeBSD нужно в блоке с описанием сетевых интерфейсов в файле /etc/rc.conf добавить строки:

....
# External interface
ifconfig_re0_name="ext0" # Меняем имя интерфейса
ifconfig_ext0="ether 00:11:22:33:44:55" # Меняем MAC адрес
ifconfig_ext0_alias0="inet 1.2.3.4/24" # Присваиваем Ip адрес и маску
...
Чуть позже выложу шаблон /etc/rc.conf

Asterisk + pf + NAT

Настройка пакетного фильтра PF для проброса SIP-телефонов или работа Asterisk через NAT.
Чтобы Asterisk за NAT работал корректно, нужно отдельное правило трансляции адресов с опцией static-port и проброс (rdr) 5060 порта, чтобы pf NAT не подменял UDP порт (получится так называемый SIP ALG).
Так как сессии у Asterisk похоже проходят по IP+UDP port, а обычный pf NAT, изменяет порт, отсюда и все проблемы.
Для машин с SIP устройствами за NAT используем следующие настройки пакетного фильтра /etc/pf.conf:
#!/bin/sh

# переменные
ext_if = "em0"
int_if = "re0"
int_net = "192.168.1.0/24"
ipphone1 = "192.168.1.200"
sip_server = "192.168.1.4"


##### 1. Настройки
# Вернет ошибку, порт заблокирован
set block-policy return

# тайм-аут UDP сессии должен быть равен или больше, чем время регистрации SIP 
# Таймер тайм-аута. Обычно достаточно 300 секунд.
set timeout { udp.first 300, udp.single 150, udp.multiple 900 }

# Игнорируем петлевой интерфейс
set skip on lo

# Собираем все части фрагментированного пакета перед отправкой (Нормализуем входящий трафик)
scrub in all

# Для каждого SIP устройства свое правило трансляции nat.
# Параметр static-port нужен для сохранения временного порта UDP.
# Это нужно чтобы удаленный SIP сервер знал к какой сессии привязан наше SIP устройство или Asterisk.
nat on $ext_if inet proto udp from $ipphone1 to any -> ($ext_if) static-port

# Так называемый SIP-ALG
nat on $ext_if inet proto udp from $sip_server to any -> ($ext_if) static-port
rdr on $ext_if inet proto udp from any to ($ext_if) port 5060 -> $sip_server

# Правило NAT для остальных устройств локальной сети
nat on $ext_if from $int_net to any -> ($ext_if)

#### 2. Правила фильтрации
# Разрешим все отовсюду
pass all
Теперь Asterisk будет "видеть" удаленный сервер, будет проходить на нем регистрацию, а главное абоненты будут друг-друга слышать.
В данном кофиге не рассматривались правила фильтрации, очереди и прочее, тут важно было показать как настроить pf NAT и rdr, так, чтобы Asterisk заработал за NAT'ом и показать реализацию SIP ALG средствами pf. Конфигурация была протестирована на Asterisk 1.8, думаю SIP телефоны будут работать так же без особых проблем.

P.S. На всякий случай небольшая справка по pfctl:
Очистить таблицы состояний:
pfctl -F state
Проверка правил:
pfctl -s rules -v


Ссылки по теме:
1. Блог пользователя argo - SIP через NAT
2. Opennet - Настройка пакетного фильтра PF для проброса SIP-телефонов через NAT
3. OpenBSD Pf Firewall "how to" (pf.conf)
4. OpenBSD pf and Voice over IP
5. doc.pfsense.org - Static-Port