среда, 3 марта 2010 г.

PF для рабочей станции в локальной сети

Типичный конфиг (файл /etc/pf.conf) для пакетного фильтра рабочей станции:

#PF:2010-03-03
#-------------------
#1/Macros
# Сетевой интерфейс
ext_if="net0"
# Разрешенные типы icmp сообщений
allowed_icmp_types="{ echoreq, unreach }"
# Разрешённые сервисы
# 1. разрешить запросы к серверу NFS и RPCBIND только из локальной сети
# 2. обеспечить запуск с флагами mountd -p 883, rpc.lockd -p 884, rpc.statd -p 885 в rc.conf
# 3. выделенные порты для torrent и http/https/ssh-серверов доступны всем
allowed_lan_tcp_services="{ ssh, www, http, https, ntp, nfsd, rpcbind, 883, 884, 885, 6881:6991, 8080 }"
allowed_lan_udp_services="{ ntp, nfsd, rpcbind, 883, 884, 885, 6881:6991 }"
allowed_wan_tcp_services="{ ssh, www, 6881:6991, 8080, 8081 }"
allowed_wan_udp_services="{ ntp, 5501, 6881:6991 }"
#-------------------
#2/Tables
#-------------------
#3/Options
# ведение лога
#--set loginterface $ext_if
# тем, кто лезет туда, куда не нужно, - бить по рукам
set block-policy drop
# на интерфейсах петли пакеты не фильтровать
set skip on { lo }
# укороченный таймаут для состояния установленного tcp соединения
set timeout { frag 10, tcp.established 24000, icmp.first 10, icmp.error 5 }
#-------------------
#4/Scrub
# Нормализовать все входящие пакеты
scrub in all
#-scrub on $ext_if random-id max-mss 1452 reassemble tcp fragment reassemble
#-------------------
#5/Queueing
#-------------------
#6/Translations
# Перенаправить tcp трафик с порта 80 на порт 8080 для пользовательского Web-сервера
rdr proto tcp from any to any port http -> self port 8080
#-------------------
#7/Filter Rules
# Антиспуффинг
#-antispoof for $ext_if
# Блокировать всё, что не разрешено
block all
#-------------------
# Разрешить входящий ICMP (ping)
pass inet proto icmp all icmp-type $allowed_icmp_types
# Разрешить трафик IGMP для IP-TV
pass quick on $ext_if inet proto igmp from any to any allow-opts
# Разрешающий доступ откуда угодно (ограниченные службы)
pass in quick on $ext_if proto tcp to port $allowed_wan_tcp_services
pass in quick on $ext_if proto udp to port $allowed_wan_udp_services
# Разрешающий доступ из локальной сети (ограниченные службы)
pass in quick on $ext_if proto tcp from $ext_if:network to port $allowed_lan_tcp_services
pass in quick on $ext_if proto udp from $ext_if:network to port $allowed_lan_udp_services
# Разрешить исходящий трафик
pass out all


Проверка синтаксиса


% pfctl -nf /etc/pf.conf


Запуск в работу


% echo 'pf_enable="YES"' >> /etc/rc.conf
% echo 'pf_rules="/etc/pf.conf"' >> /etc/rc.conf
% pfctl -ef /etc/pf.conf


Проверка действующих правил и прочей статистики


% pfctl -sa


Выключение


% pfctl -d


Примечание касательно трансляции IP-TV

При запуске VLC, например, с URL-адресом такого вида udp://@239.1.1.28:5501 воспроизведение начнётся не сразу, а спустя примерно 45 секунд с момента нажатия на кнопку PLAY. Однако переключение на другие каналы будет происходить практически мгновенно.

пятница, 8 января 2010 г.

GNU/Linux не для программистов

В контексте использования Linux НИГДЕ не говорится о зарабатывании денег программированием. Программисты GNU/Linux не могут зарабатывать тем, что они умеют лучше всего!!

И после этого кто-то будет утверждать, что программисты могут заработать денег своими мозгами? Да, только не в GNU/Linux!

GNU/Linux (~10-15% рынка с коммерческим сопровождением) вытеснило другое коммерческое Open Source (примерно 1% рынка с коммерческим сопровождением) на задворки цивилизации и представляет собой настоящий непрошибаемый барьер для других открытых операционных систем и решений. Узурпация майнстрима движения явно неспроста.

Кому это выгодно?

Для Microsoft и Apple решения на базе GNU/Linux — всего лишь писк комара над ухом, не более. Им оно не конкурент В_ПРИНЦИПЕ.
Для Red-Hat, IBM, Oracle решения на базе GNU/Linux — всего лишь платформа для продвижения своих услуг и решений, этакий "паровозик с углём" ("рельсы" стоят денег).

Так какого хрена программистам нужен GNU/Linux, если от написани кода для него получается только FUN? Деньги IBM никогда не подкинет даже в качестве пожертвования, не надейтесь. За какие такие заслуги программисты должны прислушиваться к речам фанатиков от Open Source, если оно GNU/Linux не приносит дохода от непосредственной деятельности программистам? Программисты GNU/Linux не могут зарабатывать тем, что они умеют лучше всего!!

Программисты не идут на GNU/Linux. Они зарабатывают, работая под Windows.

(Кстати, по статистике почти все коммерческие приложения на платформо-независимых языках, таких, как Java, JavaME, да те же ECMAScript и C# с PHP, разрабатываются на Windows, но никак не на Linux. На Linux они тестируются, если находится время и применение.)

Не вкладывайте силы и мозги в GNU. Это не окупается, так как денег не приносит. На поприще GNU может заработать только техподдержка (Вы хотите работать в техподдержке? Сочувствую. Это как эникеем подрабатывать.).

Когда программисты начнут зарабатывать, создавая открытый код, презирая уставки GNU, вот тогда Open Source возродится!

понедельник, 4 января 2010 г.

J2ME на FreeBSD 8.0 [amd64]

Вчера разбирался с J2ME на FreeBSD 8.0 [amd64] чисто из спортивного интереса.

В портах есть Sun WTK 2.2. Он ставится, но не работает под 64-битной Sun JDK 1.6: при запуске эмулятора телефона в KToolbar выводится ошибка работы графической библиотеки.

Проблему решил следующим образом.
Временно снёс нативный JDK1.6. Запустил линуксулатор (эмулятор Linux 2.6.16 + linux_base-f10); поставил 32-битный java/linux-sun-jdk16; установил java/sun-wtk с небольшой шлифовкой его конфигов (переименовал каталог wtklib/FreeBSD в wtklib/Linux); заново установил нативный JDK (64-битный). Оба JDK сосуществуют без проблем — при необходимости нужная JVM выбирается через панель управления настройками javaws. WTK 2.2 работает с собственными настройками: пути к линуксовой JVM автоматически прописаны в скрипты запуска его утилит при инсталляции.

Sun JavaME SDK 2.5.2 похожим образом запустить не удалось — KToolbar при запуске эмулятора пишет об ошибке в распределении памяти shm.