LINUX.ORG.RU
ФорумAdmin

NAT на freeBSD


0

0

Доброе всем время суток.

Есть:
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.
★★

Я использую pf. У меня работает так:

nat on $ext_if from any to any -> ($ext_if)

Думаю, в твоём случае должно тож работать ;)

vovans ★★★★★
()
Ответ на: комментарий от vovans

# 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)
а то логики не прослеживается...

samson ★★
() автор топика
Ответ на: комментарий от samson

Так у тебя FreeBSD 4.11? Что же ты сразу не сказал..
Так а что мешает использовать для твоих целей ipfw?
Имеются даже шаблоны для правил - /etc/rc.firewall

MiracleMan ★★★★★
()
Ответ на: комментарий от samson

не знаю какая там должна быть логика, но у меня ~70 клиентов работают через шлюз, настроенный именно так.

vovans ★★★★★
()
Ответ на: комментарий от vovans

Да, и ещё немного из того же ворума по данному вопросу:

=====================================

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 ...

=====================================

т.е. всё-таки правило я привёл правильное =) Такая вот логика у него =)

vovans ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.