Доброе всем время суток.
Есть:
192.168.0.0/24 - локалка
192.168.50.253 - GW (из подсети 192.168.50.0/24)
lnc0 192.168.50.142
lnc1 192.168.0.142
Надо:
чтобы пользователи локалки 192.168.50.0/24 имели выход в интернет через шлюз 192.168.50.142.
как я понял, если делать с помошью ipnat, необходимо и достаточно будет добавить строчку:
map lnc1 from 192.168.0.0/24 to any -> 192.168.50.142/32
в /etc/ipnat.rules
Добавил две строчки (так в книге написано было):
map lnc1 from 192.168.0.0/24 to any -> 192.168.50.142/32 portmap tcp/udp 10000:65000
map lnc1 from 192.168.0.0/24 to any -> 192.168.50.142/32
Не то, не другое не помогло.
-------------------------------------------------------------------
Вывод комманд netstat -nr, ipnat -l, ifconfig, ipfw list, uname -a:
# netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.50.253 UGSc 0 179 lnc0
127.0.0.1 127.0.0.1 UH 0 0 lo0
192.168.0 link#2 UC 2 0 lnc1
192.168.0.2 00:80:48:28:67:dc UHLW 0 2 lnc1 1197
192.168.0.249 00:e0:4c:dc:d9:07 UHLW 0 0 lnc1 1013
192.168.50 link#1 UC 2 0 lnc0
192.168.50.251 00:0a:48:01:04:cc UHLW 1 61 lnc0 1193
192.168.50.253 00:e0:4c:77:21:f8 UHLW 1 4 lnc0 1199
# ipnat -l
List of active MAP/Redirect filters:
map lnc1 from 192.168.0.0/24 to any -> 192.168.50.142/32 portmap tcp/udp 10000:65000
map lnc1 from 192.168.0.0/24 to any -> 192.168.50.142/32
List of active sessions:
# ifconfig
lnc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.50.142 netmask 0xffffff00 broadcast 192.168.50.255
ether 00:0c:29:09:5e:04
lnc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.142 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:0c:29:09:5e:0e
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
faith0: flags=8002<BROADCAST,MULTICAST> mtu 1500
# ipfw list
65535 allow ip from any to any
# uname -a
FreeBSD 4.11-RELEASE FreeBSD 4.11-RELEASE #0: Tue Mar 6 19:46:00 MSK 2007 root@:/usr/src/sys/compile/SAMSON_KERNEL i386
в конфиге ядра добавлял только опции:
options IPDIVERT #divert sockets
options IPFILTER #ipfilter support
options IPFILTER_LOG #ipfilter logging
options IPFIREWALL #firewall
options IPFIREWALL_FORWARD #enable transparent proxy support
options IPFIREWALL_DEFAULT_TO_ACCEPT #allow everything by default
--------------------------------------------------------------------
Всем заранее спасибо.
ps: сам freeBSD практически не использую, обычно работаю с Linux.
# cd /usr/ports/security/pf
# make
===> pf_freebsd-2.03 Only for 5.0 and above.
freeBSD 4-11 - с ней pf не катит :(
PS:
> nat on $ext_if from any to any -> ($ext_if)
может так: nat on $int_if from any to any -> ($ext_if)
а то логики не прослеживается...
Так у тебя FreeBSD 4.11? Что же ты сразу не сказал..
Так а что мешает использовать для твоих целей ipfw?
Имеются даже шаблоны для правил - /etc/rc.firewall
Да, и ещё немного из того же ворума по данному вопросу:
=====================================
pass in on $ext_if from any to ! ($ext_if)
это как раз и есть ответ от внешних серверов к LAN клиентам через NAT по всем портам, но так, чтобы извне на IP твоего сервера не ломились, если не используешь keep state. Оставь эту строку. Можешь добавить еще и int_if для пущей безопасности, т.е.
pass in on $ext_if from any to {!($ext_if), !(int_if)}.
Вот это дело писал lector... Т.е. это ответ от внешних серверов к клиентам через нат, что бы не использовать keep-state ...
=====================================
т.е. всё-таки правило я привёл правильное =) Такая вот логика у него =)