Автор Тема: IPFW + KernNAT у юзеров не ходит FTP  (Прочитано 124 раз)

0 Пользователей и 1 Гость просматривают эту тему.

SidAndNancy

  • Участник форума
  • Сообщений: 6
  • Репутация: 0
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 9.0.1 Firefox 9.0.1
    • Просмотр профиля
IPFW + KernNAT у юзеров не ходит FTP
« : Январь 31, 2012, 08:47:31 pm »
Доброго времени суток!

Когда то писал сюда - учился писать фаеры, с тех пор что то узнал, что то стырил и оно работало...
Но на днях выяснилось что у юзеров фтп работает через одно место - если законектится то работает с диалапной скоростью, а чаще не работает никак, рвет соединения. Уверен что я чего то недопонимаю в фаере. Фаервол писал по логике - пропускаем все к юзерам, отпускаем все от юзеров, режем только скорость и разрешаем интернет только определенным айпишникам.

Собсно фаер (только кажется большим, львиную долю строк занимает ввод переменных и конфиг пайп):

Цитата
###############_PEREMENNIE_################

cmd="/sbin/ipfw"
LanOut="ng0"
IPOut='ifconfig $LanOut | grep "inet" | awk '{print $2}''
LanIn="rl0"

##############_SBROS_######################

route delete default
route add default 10.0.0.1
${cmd} -f flush
${cmd} -f pipe flush
${cmd} -f queue flush
${cmd} -f table 1 flush
${cmd} -f table 2 flush
${cmd} -f table 3 flush
${cmd} -f table 4 flush


#########_USERs_TABLE######################

${cmd} table 1 add 192.168.84.105/32   #FREEBSD_TEST
${cmd} table 1 add 192.168.84.99/32    #ME
${cmd} table 1 add 192.168.84.69/32   #user 3
${cmd} table 1 add 192.168.84.70/32   #user 4

...
...

##########_USER_TARIFS_TABLES_#############
#####################1500##################
${cmd} table 2 add 192.168.84.26/32   #user 3
${cmd} table 2 add 192.168.84.112/32  #user 4
${cmd} table 2 add 192.168.84.28/32   #more users
${cmd} table 2 add 192.168.84.75/32   #more users

#####################2000##################
${cmd} table 3 add 192.168.84.78/32   #more users
${cmd} table 3 add 192.168.84.72/32   #more users
${cmd} table 3 add 192.168.84.80/32   #more users
${cmd} table 3 add 192.168.84.79/32   #more users
#${cmd} table 3 add 192.168.84./32   #more users
#${cmd} table 3 add 192.168.84./32   #more users

#####################5000##################
${cmd} table 4 add 192.168.84.21/32   #more users
${cmd} table 4 add 192.168.84.22/32   #more users

...
...


######_VNUTRI_MOJNO_VSEM_IZ_TABL_USERS#####

${cmd} add 1000 allow ip from table\(1\) to any in recv ${LanIn}
${cmd} add 1010 allow ip from any to table\(1\) out xmit ${LanIn}

###_OSTALNIE_IP_ZAVERNUT_NA_VLETE##########

${cmd} add 1020 deny ip from any to any via ${LanIn}

#############_BOIMS9I_#####################

${cmd} add 1100 deny ip from any to 127.0.0.0/8
${cmd} add 1110 deny ip from 127.0.0.0/8 to any
${cmd} add 1140 deny ip from any to 172.16.0.0/12 in recv ${LanOut}
${cmd} add 1150 deny ip from 172.16.0.0/12 to any in recv ${LanOut}
${cmd} add 1160 deny ip from any to 10.0.0.0/8 in recv ${LanOut}
${cmd} add 1170 deny ip from 10.0.0.0/8 to any in recv ${LanOut}
${cmd} add 1180 deny ip from any to 169.254.0.0/16 in recv ${LanOut}
${cmd} add 1190 deny ip from 169.254.0.0/16 to any in recv ${LanOut}

##############_LOOPBACK_###################
${cmd} add 1099 allow ip from any to any via lo0

##############_CONFIG_PIPES_###############

###############_1500__###################

${cmd} pipe 1 config bw 1800Kbit/s   mask src-ip 0xffffffff
${cmd} pipe 11 config bw 1800Kbit/s  mask dst-ip 0xffffffff

###############_2Mbit/s_###################

${cmd} pipe 2 config bw 2500Kbit/s mask src-ip 0xffffffff
${cmd} pipe 22 config bw 2500Kbit/s mask dst-ip 0xffffffff

###############_5Mbit/s_#################

${cmd} pipe 3 config bw 5500Kbit/s mask src-ip 0xffffffff
${cmd} pipe 33 config bw 5500Kbit/s mask dst-ip 0xffffffff

...
...


###############_KERN_NAT_CONFIG_###########

${cmd} nat 1 config log if ${LanOut} reset same_ports deny_in /
redirect_port tcp 192.168.84.99:20-21 20-21 /
redirect_port tcp 192.168.84.99:56666-56676 56666-56676 /
redirect_port tcp 192.168.84.99:55555 55555 /
redirect_port tcp 192.168.84.99:50000 50000 /
redirect_port tcp 192.168.84.99:8085 8085 /
redirect_port tcp 192.168.84.12:3389 3389 /
redirect_port udp 192.168.84.12:3389 3389 /
redirect_port tcp 192.168.84.12:15237 15237 /
redirect_port tcp 192.168.84.12:80 8888 /
redirect_port udp 192.168.84.12:80 8888 /
redirect_port tcp 192.168.84.71:5445 5445 /
redirect_port tcp 192.168.84.26:11111 11111 /
redirect_port tcp 192.168.84.78:5446 5446 /
redirect_port tcp 192.168.84.78:5447 5447 /
redirect_port tcp 192.168.84.78:5448 5448 /
redirect_port tcp 192.168.84.74:5589 5589


###_DOSTUP_PO_PORTAM_K_SERVERU_IZVNE_######

${cmd} add 2000 allow ip from any to ${IPOut} 22 in recv ${LanOut}

###_DOSTUP_PO_PORTAM_K_UZERAM_NAT_IZVNE_###

${cmd} add 2500 skipto 3999 ip from any to ${IPOut} 20,21,5589,56666-56676,55555,50000,8085,3389,15237,8888,5445,11111,5446,5447 in recv ${LanOut}


############_PIPES_OUT_####################

${cmd} add 3000 pipe 1 ip from table\(2\) to any out xmit ${LanOut}
${cmd} add 3010 pipe 2 ip from table\(3\) to any out xmit ${LanOut}
${cmd} add 3020 pipe 3 ip from table\(4\) to any out xmit ${LanOut}
${cmd} add 3030 pipe 4 ip from table\(5\) to any out xmit ${LanOut}
${cmd} add 3040 pipe 5 ip from table\(6\) to any out xmit ${LanOut}
${cmd} add 3050 pipe 6 ip from table\(7\) to any out xmit ${LanOut}
${cmd} add 3060 pipe 7 ip from table\(8\) to any out xmit ${LanOut}

###############_NAT_#######################

${cmd} add 4000 nat 1 ip from any to any via ${LanOut}

###########_PIPES_IN_######################

${cmd} add 5000 pipe 11 ip from any to table\(2\) in recv ${LanOut}
${cmd} add 5010 pipe 22 ip from any to table\(3\) in recv ${LanOut}
${cmd} add 5020 pipe 33 ip from any to table\(4\) in recv ${LanOut}
${cmd} add 5030 pipe 44 ip from any to table\(5\) in recv ${LanOut}
${cmd} add 5040 pipe 55 ip from any to table\(6\) in recv ${LanOut}
${cmd} add 5050 pipe 66 ip from any to table\(7\) in recv ${LanOut}
${cmd} add 5060 pipe 77 ip from any to table\(8\) in recv ${LanOut}

###########_EXIT_IZ_FAERA##################

${cmd} add 6000 allow ip from any to any


one_pass=0

Собственно квешн из - почему фтп может так плохо работать?

FessAectan

  • Супермодератор
  • Сообщений: 6303
  • Репутация: 39.2099
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 18.0.1003.1 Chrome 18.0.1003.1
    • Просмотр профиля
IPFW + KernNAT у юзеров не ходит FTP
« Ответ #1 : Февраль 01, 2012, 04:42:51 am »
SidAndNancy, для начала ликбез - Тыц ,а это собственно решение - тыц-тыц
Я не всегда понимаю, о чем говорю, но всегда уверен, что я прав.
– Мухаммед Али

SidAndNancy

  • Участник форума
  • Сообщений: 6
  • Репутация: 0
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 9.0.1 Firefox 9.0.1
    • Просмотр профиля
IPFW + KernNAT у юзеров не ходит FTP
« Ответ #2 : Февраль 01, 2012, 10:13:14 am »
SidAndNancy, для начала ликбез - Тыц ,а это собственно решение - тыц-тыц

Спасибо за ссыли, но

1. Как общается ФТП я знаю
2. В выданном решении задача несколько иная (ему надо извне попасть на фтп на тачке в сетке) да и исполнение - все таки там нат демоном, а кёрнел нат например не умеет use_sockets (на natd в общем то это и есть решение).

Моя вина, неправильно обозначил задачу - необходимо чтобы сетка могла подцеплятся на фтп который в свою очередь в интернете (как активный так и пассивный), в фаере что выше - с этим гипотетически проблем быть не должно, клиент по 21 изнутрей стучится на фтп, фтп отвечает куда коннект(рандомный порт) - клиент коннект на рандомный порт. Так как клиентам ничего не запрещено оно должно работать, но работает через опу. Уточню что так происходит с любым фтп в интернете
« Последнее редактирование: Февраль 01, 2012, 10:16:22 am от SidAndNancy »