Есть машина в локалке, скажем, 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 rl0ipfw 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 влом...
у кого-нибудь вообще работет проброс, с прописанными redirect_port в natd.conf line by line?
>у кого-нибудь вообще работет проброс, с прописанными redirect_port в natd.conf line
>by line?
C натом я побился, побился и ничего у меня не вышло. Руки кривые :((Сделал так для http и ftp :
( работает параллельно с натом. через нат ходят пользователи в интернет )/sbin/kldload ipl
/sbin/ipnat -F -C -f /etc/ipnat.rules
Файл /etc/ipnat.rules :# rl0 - external if - внешний интерфейс роутера
# rl1 - internal if - внутренний интерфейс роутера
# ex_ip - external ip - внешний адрес на роутере
# in_ip - internal ip - внутренний адрес на роутере
# in_serv - адрес сервера во внутренней сетиmap rl1 from 0/0 to in_serv/32 -> in_ip/32 proxy port ftp ftp/tcp
map rl1 from 0/0 to in_serv/32 -> in_ip/32rdr rl0 ex_ip/32 port 80 -> in_serv port 80
rdr rl0 ex_ip/32 port 21 -> in_serv port 21
rdr rl0 ex_ip/32 port 20 -> in_serv port 20
вот-вот, раньше все в итоге переходили на ipf (для DNAT'a), теперь - на pf, но фишка в том, что ipfw/natd в прицнципе работает, как я описал, фигня в том, что он не пашет, когда указываешь natd redirect_port в конфиге (а не как параметр запуска), хотя в мане белым по черному написано:A file should contain a list of options, one per line, in the same form as the long form of the above command line options.
А если пускать natd руками, то на каждый проброс нужен отдельный экземпляр демона на отдельном divert-порту. Это неудобно.
Вот и хотелось бы какого-нибудь олдскул-гуру послушать, фишка это или просто что-то делаем не так.
У меня вот тоже пару дней назад такой вопрос встал...
Я, правда, пока думал в сторону rinetd.
Но nat'ом вроде проще должно быть?А вот попутно вопрос еще. Как сделать, чтоб при обращении к некой страничке, ну например abcd.efg.com (без указания порта :8080) запрос все равно редиректился на другой апач, в локалку? Это в конфиге апачей как-то можно сделать?
>А вот попутно вопрос еще. Как сделать, чтоб при обращении к некой
>страничке, ну например abcd.efg.com (без указания порта :8080) запрос все равно
>редиректился на другой апач, в локалку? Это в конфиге апачей как-то
>можно сделать?Не знаю, что такое rinetd. Думаю, надо делать встроенными ср-вами.
По поповоду апача - можно вроде с пом-ю mod_rewrite по условию редикектить бравсер на другой порт, а когда оно редиректнется - попадет под правило ната.
natd.conf:
unregistered_only
same_ports
use_sockets
redirect_port tcp 192.168.1.3:80 8008
redirect_port tcp 192.168.1.3:22 2222так на всякий случай напишу что файл должен заканчиваться новой строкой
достаточно
ipfw add 55 add allow tcp from any to ipкудапробрасываешь dst-port 8008
>natd.conf:
>unregistered_only
>same_ports
>use_sockets
>redirect_port tcp 192.168.1.3:80 8008
>redirect_port tcp 192.168.1.3:22 2222
>
>так на всякий случай напишу что файл должен заканчиваться новой строкой
>
>
>достаточно
>ipfw add 55 add allow tcp from any to ipкудапробрасываешь dst-port 8008
>не работает. причем видно, что пакетов по указанному тобой правилу - ноль.
вот что в правилах:00053 4 256 divert 8668 ip from 192.168.1.3 22,80 to any
00054 7 448 divert 8668 ip from any to any dst-port 2222,8080 via rl0
00055 0 0 allow ip from any to 192.168.1.3 dst-port 2222,8080
00065 2 128 allow ip from any to 192.168.1.3 dst-port 22,80и в natd.conf:
unregistered_only
use_sockets
same_ports
redirect_port tcp 192.168.1.3:80 8080
redirect_port tcp 192.168.1.3:22 2222