Имеем:
freebsd -> ipfw + natd
внутрренний -> ed0: 192.168.200.5
внешний -> rl0: xxx.xxx.xxx.xxx
все прекрасно работает, интернет, траля-ля...
Задача:
Win-программа, работающая по tcp/udp 5003 порту висит серваком на внутренней машине 192.168.200.54
Надо из интернета работать с это прогрммой.
Решаем:
rc.conf:
ifconfig_rl0="inet xxx.xxx.xxx.xxx netmask 255.255.255.252"
ifconfig_ed0="inet 192.168.200.5 netmask 255.255.255.0"
defaultrouter="bla-bla-bla"
nisdomainname="trulala"
router_flags=""
router="routed"
router_enable="NO"
gateway_enable="YES"
ntpdate_enable="YES"
sshd_enable="YES"
named_enable="YES"
firewall_enable="YES"
firewall_type="open"
ipsec_enable="YES"
natd_enable="YES"
natd_interface="rl0"
natd_flags="-m -s -u -redirect_port 192.168.200.54: 5003 5003 "
portmap_enable="NO"
rc.firewall:
00050 divert 8668 ip from any to any via rl0
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00500 deny tcp from 192.168.200.0/24 to any 80
00600 divert 8668 ip from 192.168.200.54 to any
00700 divert 8668 ip from any to xxx.xxx.xxx.xxx # здесь rl0
01000 allow tcp from 192.168.200.0/24 to 192.168.200.0/24
01005 allow tcp from 192.168.200.0/24 to xxx.xxx.xxx.xxx
01010 allow tcp from 192.168.200.0/24 to any 20,21,22,25,110,113,9
95,4661,5003,6667
01020 deny tcp from 192.168.200.0/24 to any
01030 allow udp from 192.168.200.0/24 to 192.168.200.0/24
01035 allow udp from 192.168.200.0/24 to xxx.xxx.xxx.xxx
01040 allow udp from 192.168.200.0/24 to any 53
01045 allow udp from 192.168.200.0/24 to any 5003
01050 deny udp from 192.168.200.0/24 to any
01070 allow gre from any to any
65000 allow ip from any to any
65535 deny ip from any to any
Проблема:
Пытаемся извне запросить по udp список баз данных.
Видим на внешнем интерфейсе:
<внешний_ip>:3122 -> xxx.xxx.xxx.xxx:5003
на внутреннем:
<внешний_ip>:3122 -> 192.168.200.54:5003
т.е. NATD отработал входящий запрос. Далее...
192.168.200.54:5003 -> <внешний_ip>:3122
т.е. сервер БД послал ответ.
Всё. На внешнем интерфейсе глухомань полная. Где-то NATD проглотил пакет.
Ведь теоретически на внешнем должно было бы быть:
xxx.xxx.xxx.xxx:5003 -> <внешний_ip>:3122
Где я не прав?
Проблемка срочная, помогите, пожалуйста.