Исходные данные: FreeBSD 4.9IP Адрес сервера во внутреннюю сеть 192.168.0.1
IP Адрес интерфейса в Интернет 195.195.95.5
IP Адрес шлюза 195.195.95.100
IP Адрес DNS1, DNS2 195.195.95.50, 195.190.90.9
Доменное имя сервера myd.ruСделал необходимые изменения в ядре:
оptions IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_FORWARD
options IPDIVERTЗаползаю в rc.conf
defaultrouter="195.195.95.100"
gateway_enable="YES"
hostname="bsd.myd.ru"
ifconfig_rl0="inet 195.195.95.5 netmask 255.255.255.0"
ifconfig_rl1="inet 192.168.0.1 netmask 255.255.255.0"
firewall_enable="YES"
firewall_script="/etc/firewall"
natd_enable="YES"
natd_interface="rl0"
natd_flags="-f /etc/natd.conf/etc/natd.conf
same_ports yes
use_sockets yes
unregistered_only yesв firewall прописал
add 1 divert 8668 tcp from 192.168.0.22 to any 21 out xmit $ifout
add 2 divert 8668 udp from 192.168.0.22 to any 21 out xmit $ifout
add 3 divert 8668 tcp from 192.168.0.22 to any 25 out xmit $ifout
add 4 divert 8668 udp from 192.168.0.22 to any 25 out xmit $ifout
add 5 divert 8668 tcp from 192.168.0.22 to any 110 out xmit $ifout
add 6 divert 8668 udp from 192.168.0.22 to any 110 out xmit $ifout
add 7 divert 8668 tcp from 192.168.0.22 to any 443 out xmit $ifout
add 8 divert 8668 udp from 192.168.0.22 to any 443 out xmit $ifout
add 9 divert 8668 tcp from 192.168.0.22 to any 5190 out xmit $ifout
add 10 divert 8668 udp from 192.168.0.22 to any 5190 out xmit $ifoutто есть я хочу добиться чтобы с адреса 192.168.0.22 был открыт порт 5190 для ICQ то есть мне неадо не всю машину пускать через нат а определенный порт только открыть вот и все. Люди поомгите уже не наю что и делать то :-( не работает и все, не выходит ICQ да и 21 порт и 110 нефига не работает.... что уже только не делал и правила менял и что только не делал......
правила работают в ДВУХ направлениях IN и OUTКак разрешить или запретить выполнение следующих ipfw правил после встречи dummynet pipe [есть мнение]
Завершить выполнение цепочки ipfw правил после попадания в pipe:
sysctl -w net.inet.ip.fw.one_pass=1
Продолжить выполнение следующих ipfw правил после попадания в pipe:
sysctl -w net.inet.ip.fw.one_pass=0
сори за флейм ..
и так
нат запускаем так
#!/bin/sh
natd -a 81.211.24.250
divert делаем так
#Marhurtdivert natd ip from $iinet to any out via $oif
divert natd ip from any to $oipправила назначаем так
#Rules for INET and DMZ
allow tcp from any 20-21 to any
allow tcp from any to any 20-21allow tcp from any 110 to any
allow tcp from any to any 110allow tcp from any 25 to any
allow tcp from any to any 25allow udp from any 53 to any
allow udp from any to any 53allow tcp from any to any 53
allow tcp from any 53 to any