Graynder писал(а):Еще дополню , что такая ситуация возникает если в rc.firewall есть правила касающиеся tun0 (интерфейса поднимаемого pppoe).
Поэтому пришлось временно перейти на ppp nat . Надеюсь не надолго.
Э-э-э-ээ... Зачем tun? Да? tun не нужен, tun нафик выбрасить...
Тут же (на сайте) все разжевано вдоль и поперек или действительно так трудно?
Тогда типа мини степ-бай-степа

.
В ядро добавить поддержку mpd и kernel nat, далее ядро пересобрать.
Типа этого:
Код: Выделить всё
options NETGRAPH
options NETGRAPH_BPF
options NETGRAPH_IFACE
options NETGRAPH_IPFW
options NETGRAPH_NAT
options NETGRAPH_NETFLOW
options NETGRAPH_NAT
options NETGRAPH_ONE2MANY
options NETGRAPH_PIPE
options NETGRAPH_PPP
options NETGRAPH_PPPOE
options NETGRAPH_PPTPGRE
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_NAT
options IPSTEALTH
options LIBALIAS
options IPDIVERT
options DUMMYNET
На серваке в локальную сеть смотрит em0 с IP 192.168.1.2
Локальная сеть 192.168.1.0/24
Правила фаервола прописываем в отдельном файлеге /etc/ipfw.conf
Вот приблизительное содержание
Код: Выделить всё
# ------------------- ОЧИЩАЕМ ПЕРЕД ЗАГРУЗКОЙ ВСЕ ПРАВИЛА ------------------ #
-f -q flush
# -------------------------- ЗАПРЕТ X-СКАНИРОВАНИЯ ------------------------- #
add 3 reject log tcp from any to any tcpflags fin,syn,rst,psh,ack,urg
# -------------------------- ЗАПРЕТ N-СКАНИРОВАНИЯ ------------------------- #
add 4 reject log tcp from any to any tcpflags !fin,!syn,!rst,!psh,!ack,!urg
# ------------------------- ЗАПРЕТ FIN-СКАНИРОВАНИЯ ------------------------ #
add 5 reject log tcp from any to any not established tcpflags fin
# --------------------------- ЗАПРЕЩАЕМ СПУФИНГ ---------------------------- #
add 29 deny all from 192.168.1.2/32 to any in via ng0
# ---------------- РУБИМ ЧАСТНЫЕ СЕТИ НА ВНЕШНЕМ ИНТЕРФЕЙСЕ ---------------- #
add 40 deny all from any to 10.0.0.0/8 via ng0
add 41 deny all from any to 172.16.0.0/12 via ng0
add 42 deny all from any to 192.168.0.0/16 via ng0
# -------- РУБИМ АВТОКОНФИГУРИНГ И МУЛЬТИКАСТ НА ВНЕШНЕМ ИНТЕРФЕЙСЕ -------- #
add 43 deny all from any to 0.0.0.0/8 via ng0
add 44 deny all from any to 169.254.0.0/16 via ng0
add 45 deny all from any to 192.0.2.0/24 via ng0
add 46 deny all from any to 224.0.0.0/4 via ng0
add 47 deny all from any to 240.0.0.0/4 via ng0
# ----------------------------- ПЕТЛЕВОЙ ИФЕЙС ----------------------------- #
add 100 allow all from any to any via lo0
add 200 deny all from any to 127.0.0.0/8
add 300 deny all from 127.0.0.0/8 to any
# -------------- РУБИМ К ЧАСТНЫМ СЕТЯМ НА ВНЕШНЕМ ИНТЕРФЕЙСЕ --------------- #
add 400 deny all from 10.0.0.0/8 to any via ng0
add 410 deny all from 172.16.0.0/12 to any via ng0
add 420 deny all from 192.168.0.0/16 to any via ng0
# -------- РУБИМ АВТОКОНФИГУРИНГ И МУЛЬТИКАСТ НА ВНЕШНЕМ ИНТЕРФЕЙСЕ -------- #
add 430 deny all from 0.0.0.0/8 to any via ng0
add 440 deny all from 169.254.0.0/16 to any via ng0
add 450 deny all from 192.0.2.0/24 to any via ng0
add 460 deny all from 224.0.0.0/4 to any via ng0
add 470 deny all from 240.0.0.0/4 to any via ng0
# ------------------ РАЗРЕШАЕМ ПОЛЬЗОВАТЕЛЯМ ВЫХОД В ИНЕТ ------------------ #
add 1000 allow all from 192.168.1.0/24 to any
add 1100 allow all from any to 192.168/1/0/24
# -------------------- ЗАПРЕЩАЕМ И РУБИМ ВСЕ ОСТАЛЬНОЕ --------------------- #
add 65000 deny all from any to any
топаем в порты, собираем и устанавливаем mpd (5.4)
/usr/local/etc/mpd5/mpd.conf
Код: Выделить всё
startup:
# configure mpd users
set user admin foobar admin
set user foo bar
# configure the console
set console self 127.0.0.1 5005
set console open
# configure the web server
set web self 0.0.0.0 5006
set web open
default:
load pppoe0
pppoe0:
create bundle static B1
set iface up-script "/usr/local/etc/mpd5/ng0_up.sh"
set iface down-script "/usr/local/etc/mpd5/ng0_down.sh"
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
create link static L1 pppoe
set link action bundle B1
set auth authname "тут_логин"
set auth password "тут_пароль"
set link max-redial 0
set link mtu 1492
set link keep-alive 5 15
set pppoe iface em1
open
/usr/local/etc/mpd5/ng0_up.sh
Код: Выделить всё
#!/bin/sh
# КОНФИГУРИМ NAT 1 НА ИНТЕРФЕЙСЕ NG0
/sbin/ipfw -q add 61 nat 1 all from any to any out xmit ng0
/sbin/ipfw -q add 62 nat 1 all from any to $3 in recv ng0
# РАЗРЕШАЕМ ПОЛУЧЕННОМУ IP АДРЕСУ ИНТЕРФЕЙСА NG0 ИНЕТ
/sbin/ipfw -q add 600 allow ip from $3 to any
/sbin/ipfw -q add 610 allow ip from any to $3
# ПРОВЕРЯЕМ МАРШРУТ ПО УМОЛЧАНИЮ
# ЕСЛИ НЕТ - ДОБАВЛЯЕМ, ЕСЛИ ЕСТЬ - МЕНЯЕМ
netstat -nr | grep 'default'
if [ $? != 0 ]
then
route -q add default $4
else
route -q change default $4
fi
# ОБЪЯВЛЯЕМ КОНФИГУРАЦИЮ NAT 1 НА ИНТЕРФЕЙСЕ NG0
/sbin/ipfw -q nat 1 config if ng0 reset unreg_only same_ports
/usr/local/etc/mpd5/ng0_down.sh
Код: Выделить всё
#!/bin/sh
# УДАЛЯЕМ ПРАВИЛА ФАЕРВОЛА ОТНОСЯЩИЕСЯ К ИНТЕРФЕЙСУ NG0
# УДАЛЯЕМ ПРАВИЛА 61 И 62 ДЛЯ NAT 1
# УДАЛЯЕМ ПРАВИЛО 600 И 610 ДЛЯ IP АДРЕСА ИНТЕРФЕЙСА NG0
/sbin/ipfw -q delete 61 62 600 610
# ПРОВЕРЯЕМ МАРШРУТ ПО УМОЛЧАНИЮ
# ЕСЛИ ЕСТЬ - УДАЛЯЕМ
netstat -nr | grep 'default'
if [ $? = 0 ]
then
route -q delete default
fi
# УДАЛЯЕМ САМ NAT 1
/sbin/ipfw -q nat 1 delete
кароче.. устал писать, слишкам монога букаф получается.. О_о