Уважаемые здравствуйте.Есть задача:
клиентская машина должна по udp заходить 87 порт на удаленный сервер (ФПСУ-IP/клиент от http://www.amicon.ru/)Казалось бы что может быть проще
add 50 divert natd all from 192.168.0.2 to 77.108.111.100 # это удаленный сервер
...
add 400 pass log udp from any to 77.108.111.100 via rl0 keep-state
...От локальной машины udp-Пакеты через локальный интерфейс приходят на freebsd7-машину, уходят через внешний интерфес на удаленный сервер, приходит ответ на внешний интерфес, а вот до локальной машины ответ не доходит
Что я делаю не правильно ? Помогите пожалуйста.
вот правила для ipfw:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# loopback
add 10 pass all from any to any via lo0
add 10 deny all from any to 127.0.0.0/8
add 10 deny ip from 127.0.0.0/8 to any
#
# LAN interfaces
#
add 20 pass ip from any to any via fxp0 # local net interface
#
# Only for WLAN via rl0 rules below
add 30 deny log ip from any to any not via rl0 # rl0 - wan interface
#
# нахрем мне чужой нетбиос и сам не мусорю наружу
#
add 30 deny log udp from any to me 135,137,138,139,369,445,514,520,583,901,953,3306,5000, 8080 in via rl0
add 30 deny log tcp from any to me 135,137,138,139,369,445,514,520,901,5000,8080 in via rl0
add 30 deny log udp from me 135,137,138,139,369,445,514,520,901,5000 to any out via rl0
add 30 deny log tcp from me 135,137,138,139,369,445,514,520,901,5000 to any out via rl0
#
# NAT
add 50 divert natd all from me to any
add 50 divert natd all from any to me
#
add 50 divert natd all from 192.168.чч.чч/28 to 77.108.111.100 # это удаленный сервер
#
#
add 50 divert natd tcp from 192.168.1.0/28 to any dst-port 25 out via rl0
add 50 divert natd tcp from 192.168.1.0/28 to any dst-port 110 out via rl0
add 50 divert natd tcp from 192.168.1.0/28 to any dst-port 5190 out via rl0
add 50 divert natd tcp from 192.168.1.0/28 to any dst-port 123 out via rl0
add 50 divert natd tcp from 192.168.1.0/28 to any dst-port 22,443,1723 out via rl0
# GRE
add 50 divert natd gre from 192.168.1.0/28 to any out via rl0 # for vpn connect
#
add 50 forward 192.168.1.1,8080 all from 192.168.1.0/28 to any dst-port 20,21,70,80,210,280,443,563,591,777,1443 out via rl0
#
add 50 divert natd icmp from any to any
#
# allowed IN rules
#
add 189 deny icmp from any to any in icmptype 5,6,13,14,15,16,17
#
add 190 reject log tcp from any to any not established tcpflags fin
add 191 reject log tcp from any to any tcpflags fin, syn, rst, psh, ack, urg
add 192 reject log tcp from any to any tcpflags !fin, !syn, !rst, !psh, !ack, !urg
#
# established and fragmented
add 200 pass tcp from any to any in established
add 200 pass all from any to any in frag# icmp
add 200 pass icmp from any to any in
#add 200 deny icmp from any to any in# gre
add 200 pass gre from any to any in# incoming sshd, www, vpn
add 200 pass tcp from any to me 22 setup
add 200 pass tcp from any to me 1723 setup
add 210 deny tcp from any to me 80 setup
#
# other incoming connections are refused
add 250 deny log tcp from any to me setup
#
# allow OUT rules# established and fragmented
add 400 pass tcp from any to any out established
add 400 pass all from any to any out frag# icmp
add 400 pass icmp from any to any out# gre
add 400 pass gre from any to any out# FPSU-IP/client
add 400 pass log udp from any to 77.108.111.100 keep-state# dns, ntp
add 400 pass udp from me to any 53,123 keep-state# allow access from this machine
add 400 pass tcp from me to any# anti-spooffing
add 1000 deny log ip from any to any not verrevpath in
#
#
# everything else is denied
add 1100 deny log all from any to any# everything else is allowed
add 65000 pass all from any to any~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Что еще не хватает чтобы ответы удаленного сервера дошли до локального хоста ?
подскажите пожалуйста, что я упустил
>Уважаемые здравствуйте.
>
>Есть задача:
>клиентская машина должна по udp заходить 87 порт на удаленный сервер (ФПСУ-IP/клиент
>от http://www.amicon.ru/)
>add 50 divert natd all from 192.168.0.2 to 77.108.111.100 # это
>удаленный сервер
>...
>add 400 pass log udp from any to 77.108.111.100 via rl0 keep-state
>Что я делаю не правильно ? Помогите пожалуйста.Добавить к каждому правилу deny log logamount 1000 и читать /var/log/security
естественно при net.inet.ip.fw.verbose=1
Попробуй после последнего divert natd прописать:
add 60 divert natd all from any to me in via rl0
>...Ну, за полтора месяца думаю автор и сам решил проблему - но вдруг кому-то
пригодится:во-первых:
>add 400 pass log udp from any to 77.108.111.100 via rl0 keep-stateтут keep-state не срабатывает для фрагментированных пакетов:
второй и последующие фрагменты не содержат заголовка, позволяющего
проверить их на соответствие динамическим правилам.
Поэтому keep-state тут убрать...во-вторых:
>add 200 pass all from any to any in fragтут у тебя эти (да и другие, наверно) фрагменты акцептятся, а что с ними кернелу делать?
их бы в натд отправить надобно; да и вообще - коли ты фрагментированные
пакеты решил пропускать (а вообще - не надо бы), чего и огород городить?
по крайней пере перенеси его после ната что-ли....а еще полезно с tcpdump подружиться - без него ipfw в более-менее нетривиальных случаях не отладишь...