zorg писал(а):СМотря что ты хочешь от него!!

Да мне дополнительный сетевой адрес нужен для опытов
Но перейду к ситуации... Есть машина - FreeBSD 5.4, ядро собрано со следующими "файрвольными опциями":
Код: Выделить всё
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPDIVERT
options DUMMYNET
options IPFIREWALL_DEFAULT_TO_ACCEPT
машина одним инерфейсом смотрит в ЛВС и одним в "тырнет"... тип подключения к внешней сети - ADSL-соединение, момед имеет Ethernet-дырку и подключается к сетевухе, подключение к прову реализовано через РРР .... вот ifconfig -a
Код: Выделить всё
9:54#=> ifconfig -a /sys/i386/conf
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::213:d4ff:febc:b62a%rl0 prefixlen 64 scopeid 0x1
inet 192.168.0.100 netmask 0xffffffff broadcast 192.168.0.100
ether 00:13:d4:bc:b6:2a
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet6 fe80::20e:2eff:fe72:9a53%rl1 prefixlen 64 scopeid 0x2
ether 00:0e:2e:72:9a:53
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
inet xx.xxx.xx.xx --> 185.15.55.177 netmask 0xffffffff
Opened by PID 18719
Из вывода команды меня лично смущает вот этот факт
tun0: flags=8051<....> mtu 1492 чего такой размер МТУ? Ну ладно... переходим к настройке файрвола... делал по статье Лиса
http://www.lissyara.su/?id=1127... положу листинг файрвола
Код: Выделить всё
#!/bin/sh
# для начала вводим переменные - для нашего же удобства, чтобы не
# вводить по сотне раз одно и то же, а потом искать почему не работает,
# и в итоге выяснять, что ошибся IP адресом в одном из правил
FwCMD="/sbin/ipfw -q" # собственно где лежит бинарник ipfw
LanOut="tun0" # внешний интерфейс
LanIn="rl0" # внутренний интерфейс
IpOut="xx.xxx.xx.xx" # внешний IP адрес машины
IpIn="192.168.0.1" # внутренний IP машины
NetMask="24" # маска сети (если она разная для внешней
# и внутренней сети - придётся вводить ещё
# одну переменную, но самое забавное, что
# можно и забить - оставить 24 - всё будет
# работать, по крайней мере я пробовал -
# работаало на 4-х машинах, в разных сетях,
# с разными масками - настоящими разными! но -
# это неправильно.)
NetIn="192.168.0.0/24" # Внутренняя сеть
# Сбрасываем все правила:
${FwCMD} -f flush
# Проверяем - соответствует ли пакет динамическим правилам:
${FwCMD} add check-state
# Разрешаем весь траффик по внутреннему интерфейсу (петле)
# Вообще я во многих местах читал что без него может ничё не заработать вообще
# и прочие страшилки. Работает - почта, апач, .... А вот squid - не работает :)
# так что без него и правда - никуда.
${FwCMD} add allow ip from any to any via lo0
# рубим попытки lo0 куда-то лезть и откуда-то лезть на 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
# Вводим запреты:
# режем частные сети на внешнем интерфейсе - по легенде он у нас
# смотрит в интернет, а значит пакетам этим браться неоткуда на нём.
# рубим частные сeти
${FwCMD} add deny ip from any to 10.0.0.0/8 in via ${LanOut}
${FwCMD} add deny ip from any to 172.16.0.0/12 in via ${LanOut}
#${FwCMD} add deny ip from any to 192.168.0.0/16 in via ${LanOut}
${FwCMD} add deny ip from any to 0.0.0.0/8 in via ${LanOut}
# рубим автоконфигуреную частную сеть
${FwCMD} add deny ip from any to 169.254.0.0/16 in via ${LanOut}
# рубаем мультикастовые рассылки
${FwCMD} add deny ip from any to 240.0.0.0/4 in via ${LanOut}
# рубим фрагментированные icmp
${FwCMD} add deny icmp from any to any frag
# рубим широковещательные icmp на внешнем интерфейсе
${FwCMD} add deny log icmp from any to 255.255.255.255 in via ${LanOut}
${FwCMD} add deny log icmp from any to 255.255.255.255 out via ${LanOut}
# отправляем всех на squid - прокси-сервер работает в "непрозрачном режиме"
${FwCMD} add fwd 127.0.0.1,3128 tcp from ${NetIn} to any 80 via ${LanOut}
# пропускаем траффик через трансляцию сетевых адресов (NAT)
${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}
# рубим траффик к частным сетям через внешний интерфейс
# заметьте - эти правила отличаются от тех что были выше!
${FwCMD} add deny ip from 10.0.0.0/8 to any out via ${LanOut}
${FwCMD} add deny ip from 172.16.0.0/12 to any out via ${LanOut}
#${FwCMD} add deny ip from 192.168.0.0/16 to any out via ${LanOut}
${FwCMD} add deny ip from 0.0.0.0/8 to any out via ${LanOut}
# рубим автоконфигуреную частную сеть
${FwCMD} add deny ip from 169.254.0.0/16 to any out via ${LanOut}
# рубаем мультикастовые рассылки
${FwCMD} add deny ip from 224.0.0.0/4 to any out via ${LanOut}
# рубаем мультикастовые рассылки
${FwCMD} add deny ip from 240.0.0.0/4 to any out via ${LanOut}
# разрешаем все установленные соединения (если они установились -
# значит по каким-то правилам они проходили.)
${FwCMD} add allow tcp from any to any established
# разрешаем весь исходящий траффик (серверу-то в инет можно? :))
${FwCMD} add allow ip from ${IpOut} to any out xmit ${LanOut}
# разрешаем DNS снаружи (нам же надо узнавать IP по именам машин?)
${FwCMD} add allow udp from any 53 to any via ${LanOut}
# разрешаем DNS входящий снаружи - если на этой машине работает named
# и держит какую-то зону. В остальных случаях - не нужно
${FwCMD} add allow udp from any to any 53 via ${LanOut}
# разрешаем UDP (для синхронизации времени - 123 порт)
${FwCMD} add allow udp from any to any 123 via ${LanOut}
# правило для работы FTP
${FwCMD} add allow tcp from any to ${IpOut} 20,21 via ${LanOut}
# для узнавания портранджа по которому будет работать, лезем в
#>sysctl net.inet.ip.portrange.first
# net.inet.ip.portrange.first: 49152
#>sysctl net.inet.ip.portrange.last
# net.inet.ip.portrange.last: 65535
${FwCMD} add allow tcp from any to ${IpOut} 49152-65535 via ${LanOut}
# разрешаем некоторые типы ICMP траффика - эхо-запрос,
# эхо-ответ и время жизни пакета истекло
#${FwCMD} add allow tcp from any to ${IpOut} 20,21 in via ${LanOut} setup${FwCMD} add allow icmp fr
# открываем снаружи 80 порт - если у нас есть WWW сервер на машине
${FwCMD} add allow tcp from any to ${IpOut} 80 via ${LanOut}
# открываем снаружи 25 порт (SMTP) если на машине крутится почта
${FwCMD} add allow tcp from any to ${IpOut} 25 via ${LanOut}
# открываем снаружи 22 порт - если надо будет ходить на машину по ssh
# открываем внутри ЛВС 22 порт - будем заходить из локалки
${FwCMD} add allow tcp from any to ${IpOut} 22 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpIn} 22 via ${LanIn}
# открываем снаружи 143 порт(если надо смотреть почту снаружи по IMAP)
${FwCMD} add allow tcp from any to ${IpOut} 143 via ${LanOut}
# открываем снаружи 110 порт(если надо смотреть почту снаружи по POP)
${FwCMD} add allow tcp from any to ${IpOut} 110 via ${LanOut}
# правило для Jabber-daemon
${FwCMD} add allow tcp from any to ${IpOut} 5222 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpOut} 5347 via ${LanOUT}
# для сканируемых портов правила. Для TCP разбиты на
# две группы по причине, что ipfw не позволяет перечислять
# больше 10 портов за раз.
${FwCMD} add allow tcp from any to ${IpOut} \
1,11,15,23,79,81,111,119,540,635 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpOut} \
1080,1524,2000,5742,6667,8080,8085 via ${LanOut}
${FwCMD} add allow udp from any to ${IpOut} \
1,7,9,69,513,635,640,641,700 via ${LanOut}
# разрешаем весь tcp траффик внутри локалки (на внутреннем интерфейсе)
${FwCMD} add allow tcp from any to any via ${LanIn}
# разрешаем весь udp траффик внутри локалки (на внутреннем интерфейсе)
${FwCMD} add allow udp from any to any via ${LanIn}
# разрешаем весь icmp траффик внутри локалки (на внутреннем интерфейсе)
${FwCMD} add allow icmp from any to any via ${LanIn}
# запрещаем всё и всем. Если тип файрволла не open то это правило добавится
# автоматически, но всё-же ну его. Лучше сам. Надёжней.
${FwCMD} add deny ip from any to any
и в файле /etc/rc.conf указываю :
Код: Выделить всё
firewall_enable="YES"
firewall_quite="YES"
firewall_type="/etc/rc.firewall"
###################
#####NATdaemon#####
###################################################################
natd_enable="YES"
natd_interface="tun0"
natd_flags="-m -u"
Значицца чего выходит:
а) пингуем внутреннюю сеть и внутренняя сеть пингует внутренние адреса роутера
б) из вне или изнутри не возможно подцепицца по SSH - подключение не сбрасывает, SSH-клиент (у мя PrivateShell) все время пытается законектится, а на роутере вывод команды:
показывает подключения на 22-ом порту..
в) ррр-демон устанавливает подключение к провайдерскому шлюзу, что собственно видно из ифконфига, но я не могу пропинговать свой внешний АйПи и все шо находится во внешней сети, включая сервера провайдера... т.е. когда начинаю кого-нидь во внешке пинговать, вообще ничего не выдает команда ПИНГ...
Какие будут соображения камрады?