На данный момент все работает, но только с правилом ipfw открыто все. Как начинаешь добавлять правила в ipfw возникают проблемы: не работает нат и нет доступа к компу извне.
Все усугубляется тем, что к компу я сейчас имею доступ по ssh извне. После применения нерабочего правила битый час объяснял человеку, что нужно сделать, чтобы все вернуть в рабочее состояние. Рядом с компом буду еще не скоро, поэтому прошу помощи подсказать что я сделал не так. Подскажите, что не так.
Исходные данные:
OS: FreeBsd 6.2
Ядро пересобрано с добавлением следующих параметров:
Код: Выделить всё
options DUMMYNET
options TCP_DROP_SYNFIN
options BRIDGE
options SC_DISABLE_REBOOT
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000
options IPFIREWALL_FORWARD
options IPDIVERT
options NETGRAPH
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
options NETGRAPH_ETHER
options NETGRAPH_TEE
Код: Выделить всё
hostname="xxxxxxxxx"
gateway_enable="YES"
ifconfig_vr1="inet 192.168.xx.xx netmask 255.255.255.0" #смотрит в локалку
linux_enable="YES"
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="isp"
ppp_nat="YES"
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
dhcpd_enable="YES" #для пользователей в локалке
#natd_enable="YES"
#natd_interface="tun0"
#natd_program="/sbin/natd"
#natd_flags="-f /etc/natd.conf"
sshd_enable="YES"
Код: Выделить всё
default:
set log Phase tun command
set ifaddr 0 0
isp:
set device PPPoE:vr0
set authname xxxxxxx
set authkey xxxxx
set dial
set login
set reconnect 120 0
enable dns
add default HISADDR
nat enable yes
Код: Выделить всё
fwcmd="/sbin/ipfw -q"
# Flush out the list before we begin.
${fwcmd} -f flush
# setup loopback
${fwcmd} add allow ip from any to any via lo0
${fwcmd} add deny ip from any to 127.0.0.0/8
${fwcmd} add deny ip from 127.0.0.0/8 to any
${fwcmd} add allow ip from any to any
Поднятые сетевые интерфейсы по ifconfig:
Код: Выделить всё
# ifconfig
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:22:b0:52:9e:08
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vr1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.xx.xx netmask 0xffffff00 broadcast 192.168.xx.255
ether 00:22:b0:52:9e:0b
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
inet xx.xx.xx.xx --> xx.xx.xx.xx netmask 0xffffffff
Opened by PID 332
Код: Выделить всё
fwcmd="/sbin/ipfw -q"
# Flush out the list before we begin.
${fwcmd} -f flush
# Set these to your outside interface network and netmask and ip.
oif="tun0"
onet="xx.xx.xx.0"
omask="255.255.255.0"
oip="xx.xx.xx.xx"
# Set these to your inside interface network and netmask and ip
iif="vr1"
inet="192.168.xx.0"
imask="255.255.255.0"
iip="192.168.xx.xx"
# Проверяем - соответствует ли пакет динамическим правилам:
${fwcmd} add check-state
# setup loopback
${fwcmd} add allow ip from any to any via lo0
${fwcmd} add deny ip from any to 127.0.0.0/8
${fwcmd} add deny ip from 127.0.0.0/8 to any
# deny on oif:
# ${fwcmd} add deny ip from any to 10.0.0.0/8 in via ${oif}
# ${fwcmd} add deny ip from any to 172.16.0.0/12 in via ${oif}
# ${fwcmd} add deny ip from any to 192.168.0.0/16 in via ${oif}
${fwcmd} add deny ip from any to 0.0.0.0/8 in via ${oif}
${fwcmd} add deny ip from any to 169.254.0.0/16 in via ${oif}
${fwcmd} add deny ip from any to 240.0.0.0/4 in via ${oif}
${fwcmd} add deny ip from 224.0.0.0/4 to any in via ${oif}
${fwcmd} add deny icmp from any to any frag
${fwcmd} add deny icmp from any to 255.255.255.255 in via ${oif}
${fwcmd} add deny icmp from any to 255.255.255.255 out via ${oif}
# nat
${fwcmd} add divert 8668 ip from ${inet}:${imask} to any out via ${oif}
${fwcmd} add divert 8668 ip from any to ${oip} in via ${oif}
# deny through oif
# ${fwcmd} add deny ip from 10.0.0.0/8 to any out via ${oif}
# ${fwcmd} add deny ip from 172.16.0.0/12 to any out via ${oif}
# ${fwcmd} add deny ip from 192.168.0.0/16 to any out via ${oif}
${fwcmd} add deny ip from 0.0.0.0/8 to any out via ${oif}
${fwcmd} add deny ip from 169.254.0.0/16 to any out via ${oif}
${fwcmd} add deny ip from 224.0.0.0/4 to any out via ${oif}
${fwcmd} add deny ip from 240.0.0.0/4 to any out via ${oif}
${fwcmd} add deny tcp from any to any in tcpflags fin,syn
# разрешаем входящии соединения по указанным портам
${fwcmd} add allow tcp from any to ${oip} 22 via ${oif}
${fwcmd} add allow tcp from any to ${oip} 10001 via ${oif}
${fwcmd} add allow tcp from any to ${oip} 10005 via ${oif}
${fwcmd} add allow tcp from any to ${oip} 80 via ${oif}
# разрешаем весь исходящий траффик
${fwcmd} add allow ip from ${oip} to any out via ${oif}
# разрешаем весь tcp,udp,icmp траффик внутри локалки
${fwcmd} add allow tcp from any to any via ${iif}
${fwcmd} add allow udp from any to any via ${iif}
${fwcmd} add allow icmp from any to any via ${iif}
# разрешаем все установленные соединения
${fwcmd} add allow tcp from any to any established
# разрешаем фрaгментированные пакеты
${fwcmd} add allow ip from any to any frag
# разрешаем DNS
${fwcmd} add allow udp from any 53 to any via ${oif}
# ${fwcmd} add allow udp from any to any 53 via ${oif}
# разрешаем NTP
${fwcmd} add allow udp from any 123 to any via ${oif}
${fwcmd} add allow udp from any to any 123 via ${oif}
#разрешаем некоторые типы ICMP
${fwcmd} add allow icmp from any to any icmptypes 0,3,8,11 via ${oif}
# ${fwcmd} add allow log all from any to any
# На всякий случай включил это правило, но даже с ним не прошло
${fwcmd} add allow ip from any to any