Есть машина в локалке, скажем, 192.168.1.3, на ней ssh и httpd (22 & 80), надо организовать проброс снаружи до них. natd вызывается из rc.conf:
natd_enable="YES"
natd_interface="rl0"
natd_flags="-f /etc/natd.conf"
natd.conf содержит:
dynamic yes
use_sockets yes
same_ports yes
redirect_port tcp 192.168.1.3:80 8008
redirect_port tcp 192.168.1.3:22 2222
Наконец, правила ipfw для заворачивания пакетов в диверт:
ipfw add 51 divert natd ip from any to any 2222 via rl0
ipfw add 52 divert natd ip from 192.168.1.3 22 to any
ipfw add 53 divert natd ip from any to any 8080 via rl0
ipfw add 54 divert natd ip from 192.168.1.3 80 to any
ipfw add 55 allow ip from any to 192.168.1.3 22,80
Это все НЕ работает. Правится все до смешного легко:
(руками запускаем)
natd -p 7777 -redirect_port tcp 192.168.1.3:22 2222 -n rl0
natd -p 8888 -redirect_port tcp 192.168.1.3:80 8080 -n rl0
ipfw add 51 divert 7777 ip from any to any 2222 via rl0
ipfw add 52 divert 7777 ip from 192.168.1.3 22 to any
ipfw add 53 divert 8888 ip from any to any 8080 via rl0
ipfw add 54 divert 8888 ip from 192.168.1.3 80 to any
ipfw add 55 allow ip from any to 192.168.1.3 22,80
То есть, делаю вывод я, обязательно нужен новый экземпляр natd на новом порту, для каждого проброса? Правильный ли вывод?
Это же жуттко неудобно =\
Нет, я понимаю, ipfw вообще не фонтан, но тут стоит уже 4.х фря, работает, и менять ее на obsd/fbsd5 влом...