ipfw + nat

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
gwaewion
рядовой
Сообщения: 11
Зарегистрирован: 2010-03-13 22:29:54

ipfw + nat

Непрочитанное сообщение gwaewion » 2010-07-23 14:08:27

Есть роутер. Есть 2 сетевых интерфейса: tun0 и ue0, внешний и внутренний соответственно.

Какой должен быть набор правил для ipfw, чтоб он пропускал в локалку\из локалки абсолютно все пакеты, а доступ к роутеру был только по определённым портам?

Вот такое почему-то не работает. Пинги с локалки идут, но сёрфинг и прочие сервисы из локалки не арбайтают:

Код: Выделить всё

#!/bin/sh
natd -n tun0
/sbin/ipfw -f flush

/sbin/ipfw add check-state

/sbin/ipfw add allow ip from any to any via lo0
/sbin/ipfw add deny ip from any to 127.0.0.0/8
/sbin/ipfw add deny ip from 127.0.0.0/8 to any

/sbin/ipfw add allow icmp from any to any

/sbin/ipfw add allow ip from any to any via ue0
/sbin/ipfw add nat 1 config log if tun0 reset same_ports allow_in
/sbin/ipfw add nat 1 ip from any to any via tun0

/sbin/ipfw add allow all from any to any established

/sbin/ipfw add allow all from 78.36.105.207 to any out xmit tun0
/sbin/ipfw add allow udp from any 53 to any via tun0
/sbin/ipfw add allow udp from any to any 53 via tun0
/sbin/ipfw add allow udp from any to any 123 via tun0
/sbin/ipfw add allow all from any to any 27015,35084 via tun0

/sbin/ipfw add allow tcp from any to 78.36.105.207 21 via tun0
/sbin/ipfw add allow icmp from any to any icmptypes 0,8,11
/sbin/ipfw add allow tcp from any to 78.36.105.207 25 via tun0
/sbin/ipfw add allow tcp from any to 78.36.105.207 22 via tun0
/sbin/ipfw add allow tcp from any to 78.36.105.207 110 via tun0
/sbin/ipfw add allow tcp from any to 78.36.105.207 143 via tun0
/sbin/ipfw add allow all from any to 78.36.105.207 1024-65535 via tun0

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
BirdGovorun
лейтенант
Сообщения: 878
Зарегистрирован: 2009-10-20 20:27:13
Откуда: Харьков.

Re: ipfw + nat

Непрочитанное сообщение BirdGovorun » 2010-07-23 15:21:50

Вы, что используете natd или ipfw_nat ??

gwaewion
рядовой
Сообщения: 11
Зарегистрирован: 2010-03-13 22:29:54

Re: ipfw + nat

Непрочитанное сообщение gwaewion » 2010-07-23 15:57:48

Вроде natd. А в чём разница? У меня было стойкое представление, что существует только natd.

Аватара пользователя
Dog
лейтенант
Сообщения: 723
Зарегистрирован: 2006-09-21 10:34:36
Откуда: Kharkiv, Ukraine
Контактная информация:

Re: ipfw + nat

Непрочитанное сообщение Dog » 2010-07-23 16:16:35

gwaewion писал(а):Вроде natd. А в чём разница? У меня было стойкое представление, что существует только natd.

Код: Выделить всё

/sbin/ipfw add nat 1 config log if tun0 reset same_ports allow_in
/sbin/ipfw add nat 1 ip from any to any via tun0
И где тут natd? Изучите как следует статью.
Oh my God, they killed init! Bastards!

Аватара пользователя
BirdGovorun
лейтенант
Сообщения: 878
Зарегистрирован: 2009-10-20 20:27:13
Откуда: Харьков.

Re: ipfw + nat

Непрочитанное сообщение BirdGovorun » 2010-07-23 16:27:51

Dog писал(а):И где тут natd?
Вот
#!/bin/sh
natd -n tun0
:-D

Аватара пользователя
Dog
лейтенант
Сообщения: 723
Зарегистрирован: 2006-09-21 10:34:36
Откуда: Kharkiv, Ukraine
Контактная информация:

Re: ipfw + nat

Непрочитанное сообщение Dog » 2010-07-23 16:31:09

А, точно. Я в заголовок скрипта посмотреть не удосужился, сразу стал правила изучать.
Ну тогда конечно, тогда все серьезно ;)
Oh my God, they killed init! Bastards!

gwaewion
рядовой
Сообщения: 11
Зарегистрирован: 2010-03-13 22:29:54

Re: ipfw + nat

Непрочитанное сообщение gwaewion » 2010-07-24 10:59:49

Прочитал статью. Пересобрал ядро с нужными параметрами. Но по прежнему из локалки проходят только пинги.

Код: Выделить всё

#!/bin/sh
/sbin/ipfw -f flush
/sbin/ipfw add check-state
#/sbin/ipfw add allow ip from any to any via lo0
#/sbin/ipfw add deny ip from any to 127.0.0.0/8
#/sbin/ipfw add deny ip from 127.0.0.0/8 to any
#/sbin/ipfw add allow icmp from any to any
/sbin/ipfw add allow ip from any to any via ue0
/sbin/ipfw add allow all from any to any established
/sbin/ipfw add allow all from 78.36.105.207 to any out xmit tun0
/sbin/ipfw add allow udp from any 53 to any via tun0
/sbin/ipfw add allow udp from any to any 53 via tun0
/sbin/ipfw add allow udp from any to any 123 via tun0
/sbin/ipfw add allow all from any to any 27015,35084 via tun0
/sbin/ipfw add allow tcp from any to 78.36.105.207 21 via tun0
/sbin/ipfw add allow icmp from any to any icmptypes 0,8,11
/sbin/ipfw add allow tcp from any to 78.36.105.207 25 via tun0
/sbin/ipfw add allow tcp from any to 78.36.105.207 22 via tun0
/sbin/ipfw add allow tcp from any to 78.36.105.207 110 via tun0
/sbin/ipfw add allow tcp from any to 78.36.105.207 143 via tun0
/sbin/ipfw add allow all from any to 78.36.105.207 1024-65535 via tun0
/sbin/ipfw nat 1 config log if tun0 reset same_ports deny_in
/sbin/ipfw add nat 1 ip from any to any via tun0

Аватара пользователя
BirdGovorun
лейтенант
Сообщения: 878
Зарегистрирован: 2009-10-20 20:27:13
Откуда: Харьков.

Re: ipfw + nat

Непрочитанное сообщение BirdGovorun » 2010-07-26 10:02:29

Покажите вывод:
#ifconfig
и
#ipfw show

gwaewion
рядовой
Сообщения: 11
Зарегистрирован: 2010-03-13 22:29:54

Re: ipfw + nat

Непрочитанное сообщение gwaewion » 2010-07-26 13:15:51

ifconfig

Код: Выделить всё

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
	ether 00:1c:c0:c3:9c:36
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
	options=3<RXCSUM,TXCSUM>
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 
	inet6 ::1 prefixlen 128 
	inet 127.0.0.1 netmask 0xff000000 
	nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
ue0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=80000<LINKSTATE>
	ether 00:80:c8:3c:01:79
	inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1492
	options=80000<LINKSTATE>
	inet 78.36.105.207 --> 212.48.193.37 netmask 0xffffff00 
	Opened by PID 412
ipfw show

Код: Выделить всё

00100     0        0 check-state
00200   462    39476 allow ip from any to any via lo0
00300     0        0 deny ip from any to 127.0.0.0/8
00400     0        0 deny ip from 127.0.0.0/8 to any
00500   240    20396 allow icmp from any to any
00600  6310  1644253 allow ip from any to any via ue0
00700 57900 42005902 allow ip from any to any established
00800  6792   601633 allow ip from 78.36.105.207 to any out xmit tun0
00900    73    10751 allow udp from any 53 to any via tun0
01000    13      804 allow udp from any to any dst-port 53 via tun0
01100     0        0 allow udp from any to any dst-port 123 via tun0
01200     2       96 allow ip from any to any dst-port 27015,35084 via tun0
01300     0        0 allow tcp from any to 78.36.105.207 dst-port 21 via tun0
01400     0        0 allow icmp from any to any icmptypes 0,8,11
01500     0        0 allow tcp from any to 78.36.105.207 dst-port 25 via tun0
01600     0        0 allow tcp from any to 78.36.105.207 dst-port 22 via tun0
01700     0        0 allow tcp from any to 78.36.105.207 dst-port 110 via tun0
01800     0        0 allow tcp from any to 78.36.105.207 dst-port 143 via tun0
01900  1414   243455 allow ip from any to 78.36.105.207 dst-port 1024-65535 via tun0
02000    85     4575 nat 1 ip from any to any via tun0
65535    72     3472 deny ip from any to any

Аватара пользователя
BirdGovorun
лейтенант
Сообщения: 878
Зарегистрирован: 2009-10-20 20:27:13
Откуда: Харьков.

Re: ipfw + nat

Непрочитанное сообщение BirdGovorun » 2010-07-26 14:06:57

Пинги идут, что в инете открыть не можете?
Если сайты, то надо 80(http) открыть.

gwaewion
рядовой
Сообщения: 11
Зарегистрирован: 2010-03-13 22:29:54

Re: ipfw + nat

Непрочитанное сообщение gwaewion » 2010-07-26 14:25:23

Код: Выделить всё

Flushed all rules.
00100 check-state
00200 allow ip from any to any via lo0
00300 deny ip from any to 127.0.0.0/8
00400 deny ip from 127.0.0.0/8 to any
00500 allow icmp from any to any
00600 allow ip from any to any via ue0
00700 allow ip from any to any established
00800 allow ip from 78.36.105.207 to any out xmit tun0
00900 allow udp from any 53 to any via tun0
01000 allow udp from any to any dst-port 53 via tun0
01100 allow udp from any to any dst-port 123 via tun0
01200 allow ip from any to any dst-port 27015,35084 via tun0
01300 allow tcp from any to 78.36.105.207 dst-port 21,80 via tun0
01400 allow icmp from any to any icmptypes 0,8,11
01500 allow tcp from any to 78.36.105.207 dst-port 25 via tun0
01600 allow tcp from any to 78.36.105.207 dst-port 22 via tun0
01700 allow tcp from any to 78.36.105.207 dst-port 110 via tun0
01800 allow tcp from any to 78.36.105.207 dst-port 143 via tun0
01900 allow ip from any to 78.36.105.207 dst-port 1024-65535 via tun0
ipfw nat 1 config if tun0 log deny_in same_ports reset redirect_port tcp 78.36.105.207:80 80
02000 nat 1 ip from any to any via tun0
Сделал так. Эффекта - 0.

Пинги идут. Не работает ничего: сёрфинг, аська, стим, скайп, торренты и прочия, и прочия.

Аватара пользователя
BirdGovorun
лейтенант
Сообщения: 878
Зарегистрирован: 2009-10-20 20:27:13
Откуда: Харьков.

Re: ipfw + nat

Непрочитанное сообщение BirdGovorun » 2010-07-26 14:40:29

Тогда нихрена не понял :unknown:
#netstat -rn чего, показывает?
Может вас по пути блокируют?

gwaewion
рядовой
Сообщения: 11
Зарегистрирован: 2010-03-13 22:29:54

Re: ipfw + nat

Непрочитанное сообщение gwaewion » 2010-07-26 16:11:18

Код: Выделить всё

1024k# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            212.48.193.37      UGS         0  1268797   tun0
78.36.105.207      link#5             UHS         0      259    lo0
127.0.0.1          link#3             UH          0      108    lo0
192.168.0.0/24     link#4             U           2  3435586    ue0
192.168.0.1        link#4             UHS         0        0    lo0
212.48.193.37      link#5             UHS         0     2763   tun0

Internet6:
Destination                       Gateway                       Flags      Netif Expire
::1                               ::1                           UH          lo0
fe80::%lo0/64                     link#3                        U           lo0
fe80::1%lo0                       link#3                        UHS         lo0
ff01:3::/32                       fe80::1%lo0                   U           lo0
ff02::%lo0/32                     fe80::1%lo0                   U           lo0

Аватара пользователя
BirdGovorun
лейтенант
Сообщения: 878
Зарегистрирован: 2009-10-20 20:27:13
Откуда: Харьков.

Re: ipfw + nat

Непрочитанное сообщение BirdGovorun » 2010-07-26 17:13:55

Закоментируйте всё правила и только nat оставте с правилом add pass all from any to any,
что будет?

gwaewion
рядовой
Сообщения: 11
Зарегистрирован: 2010-03-13 22:29:54

Re: ipfw + nat

Непрочитанное сообщение gwaewion » 2010-07-27 9:20:06

Работает. Значит дело в правилах. Но что там может быть блокирующего? Ума не приложу.

Аватара пользователя
BirdGovorun
лейтенант
Сообщения: 878
Зарегистрирован: 2009-10-20 20:27:13
Откуда: Харьков.

Re: ipfw + nat

Непрочитанное сообщение BirdGovorun » 2010-07-27 15:28:29

Получился открытый фаервол, можете добавлять запрещающие правила.
Или добавляйте правила по одному и смотрите, где глюк, возможно логическая ошибка.

gwaewion
рядовой
Сообщения: 11
Зарегистрирован: 2010-03-13 22:29:54

Re: ipfw + nat

Непрочитанное сообщение gwaewion » 2010-07-28 9:54:21

Как только убераю add allow all from any to any, локалка становится слепой, гулхой и немой =(

ink08
рядовой
Сообщения: 21
Зарегистрирован: 2010-07-02 23:31:20

Re: ipfw + nat

Непрочитанное сообщение ink08 » 2010-07-28 16:17:22

суть в том, что у вас обратный нат не срабатывает

Код: Выделить всё

add 10130 skipto 10190 ip from 192.168.1.36 to any out xmit em0
add 10140 skipto 10210 ip from any to 1.2.3.5 in recv em0
подобные правила нужны вам, либо пересматривать структуру правил на нечто подобное -

Код: Выделить всё

#!/bin/sh
/sbin/ipfw -f flush
/sbin/ipfw add allow ip from any to any via lo0
#/sbin/ipfw add allow ip from any to any via ue0
/sbin/ipfw nat 1 config log if tun0 reset same_ports deny_in
/sbin/ipfw add nat 1 ip from any to any via tun0
/sbin/ipfw add check-state
/sbin/ipfw add allow udp from any to any 53 via eu0 keep-state
/sbin/ipfw add allow tcp from any to any in via eu0 keep-state      #откроет порты в мир из локалки
/sbin/ipfw add allow all from any to any 27015,35084 via eu0         
/sbin/ipfw add allow tcp from any to 78.36.105.207 21 via tun0              
/sbin/ipfw add allow icmp from any to any icmptypes 0,8,11                  
/sbin/ipfw add allow tcp from any to 78.36.105.207 25 via tun0          
/sbin/ipfw add allow tcp from any to 78.36.105.207 22 via tun0             
/sbin/ipfw add allow tcp from any to 78.36.105.207 110 via tun0            
/sbin/ipfw add allow tcp from any to 78.36.105.207 143 via tun0          
/sbin/ipfw add allow all from any to 78.36.105.207 1024-65535 via tun0  #тут не понятно для чего вам открывать эти порты?

gwaewion
рядовой
Сообщения: 11
Зарегистрирован: 2010-03-13 22:29:54

Re: ipfw + nat

Непрочитанное сообщение gwaewion » 2010-07-30 14:31:21

Да, действительно, добавил keep-state и всё стало прекрасно =) Спасибо.