>>00100 allow ip from any to any via lo0
>>00200 deny ip from any to 127.0.0.0/8
>>00300 deny ip from 127.0.0.0/8 to any
>>00301 divert 666 tcp from any to 195.XXX.XXX.XXX dst-port 8080 via xl0
>>00302 divert 666 ip from 192.168.0.3 to any via xl0
>>00400 divert 8888 tcp from any to 195.XXX.XXX.XXX via xl0
>>00500 divert 8888 ip from 192.168.0.4 to any via xl0
>>00600 allow tcp from 192.168.0.4 to any
>>00700 divert 8668 ip from 192.168.0.0/24 to any out xmit xl0
>>00800 divert 8668 ip from not 192.168.0.0/24 to 195.XXX.XXX.XXX in recv xl0
>>00900 allow ip from any to any
>>65535 deny ip from any to any
>>natd -p 8888 -n xl0 -redirect_port tcp 192.168.0.4:8888 80
>>natd -p 666 -n xl0 -redirect_port tcp 192.168.0.3:80 8080
>Вообщем вылечилось добавлением двух правил divert xxx icmp from any to 195.XXX.XXX.XXX
>via xl0
>Между 301 и 302, 400 и 500
>
>Насколько это правильно, вот в чем теперь вопрос.
Насколько я понимаю, то проблема в том, что диверты в прямом и обратном шествии пинга идут на разных демонов nat.
Вот примерная картина движения пинга с 192.168.0.3:
1. Попались на правило 302, т.к. ip включает в себя icmp пакеты
2. Об ушедшем пакете "помнит" нат, висящий на 666м порту
3. icmp пакет доходит до своей цели, и, цель посылает в ответ echo пакет (icmp)
4. Этот пакет НЕ попадает (!) на 301-е правило (т.к. tcp не включает в себя icmp), а доходит до правила 800 и дивертится на нат, висящий на 8668м порту. Этот нат слухом не слыхивал про пакет, понятия не имеет, кому его возвращать, и, соответственно, дропает его.
Я не очень понял, что именно ты пытаешься сделать натами, но если вопрос лишь в пробросе одного порта во внутреннюю сеть, то, думаю, правила должны быть где-то такие:
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00300 deny ip from 127.0.0.0/8 to any
00301 divert 666 tcp from any to 195.XXX.XXX.XXX dst-port 8080 via xl0
00302 divert 666 tcp from 192.168.0.3 80 to any via xl0
?? Сорри, но здесь я вообще не въехал что задумывалось
?? 00400 divert 8888 tcp from any to 195.XXX.XXX.XXX via xl0
?? 00500 divert 8888 ip from 192.168.0.4 to any via xl0
?? Возможно так:
00400 divert 8888 tcp from any to 195.XXX.XXX.XXX dst-port 80 via xl0
00500 divert 8888 tcp from 192.168.0.4 8888 to any via xl0
##00600 allow tcp from 192.168.0.4 to any
00700 divert 8668 ip from 192.168.0.0/24 to any out xmit xl0
00800 divert 8668 ip from not 192.168.0.0/24 to 195.XXX.XXX.XXX in recv xl0
00900 allow ip from any to any
65535 deny ip from any to any
Вот, кажется, так. В этом случае через первые два диверта ходят только пакеты от/для пробрасываемых из/в локалку портов. Через 3й диверт идут пакеты из всей локалки, в том числе и трафик непробрасываемых портов от 192.168.0.3(4)