IPFW + DUMMYNET + NAT и деление канала на городской и мир.

Операционки на базе Unix
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми

Сообщение Raven » 08 авг 2011, 16:47

Во первых нужно бы повыше поднять правила дамминета - а то у тебя получается сначала все разрешается а потом трубы. Насколько я помню правила должны идти после труб. А во вторых - с таблицами будут проще читаться конфиги.
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Pendolf
Юзер
Юзер
Сообщения: 10
Зарегистрирован: 05 апр 2010, 00:59
ОС: MSDOS

Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми

Сообщение Pendolf » 12 авг 2011, 16:29

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

#!/bin/sh
####################################################################
####################### Flush all rules ############################
####################################################################
/sbin/ipfw -q flush
/sbin/ipfw -q pipe flush
/sbin/ipfw -q queue flush
/sbin/ipfw -q table 1 flush
/sbin/ipfw -q table 2 flush
/sbin/ipfw -q table 3 flush
/sbin/ipfw -q table 4 flush
####################################################################
####################### Variables ##################################
####################################################################
IPFW="/sbin/ipfw -q"
local="127.0.0.0/8"
INT="bge0" # integrated iface
EXT="bge1" # pci card
INT_IP="192.168.200.1"
EXT_IP="192.168.253.65"
NET_MSK="255.255.255.0"
localnet="192.168.200.0/24"
####################################################################
####################### TABLES ##################################
####################################################################
##KG_ZONE
${IPFW} table 1 add 89.237.192.0/18
${IPFW} table 1 add 80.72.176.0/20
${IPFW} table 1 add 81.20.16.0/20
${IPFW} table 1 add 194.152.37.0/24
${IPFW} table 1 add 85.115.193.0/24
${IPFW} table 1 add 212.112.96.0/19
${IPFW} table 1 add 31.29.0.0/19
${IPFW} table 1 add 85.115.216.0/21
${IPFW} table 1 add 212.97.0.0/19
${IPFW} table 1 add 94.143.192.0/21
${IPFW} table 1 add 31.186.48.0/21
${IPFW} table 1 add 195.38.160.0/19
${IPFW} table 1 add 178.217.168.0/21
${IPFW} table 1 add 46.226.208.0/21
${IPFW} table 1 add 194.176.111.0/24
${IPFW} table 1 add 85.115.192.0/24
${IPFW} table 1 add 77.235.0.0/19
${IPFW} table 1 add 85.115.197.0/24
${IPFW} table 1 add 85.115.208.0/21
${IPFW} table 1 add 85.115.200.0/21
${IPFW} table 1 add 85.115.195.0/24
${IPFW} table 1 add 92.245.96.0/19
${IPFW} table 1 add 92.62.64.0/20
${IPFW} table 1 add 77.95.56.0/21
${IPFW} table 1 add 212.2.224.0/19
${IPFW} table 1 add 91.205.48.0/22
${IPFW} table 1 add 46.251.192.0/19
${IPFW} table 1 add 109.201.160.0/19
${IPFW} table 1 add 31.192.248.0/21
${IPFW} table 1 add 81.88.192.0/20
${IPFW} table 1 add 193.106.48.0/22
${IPFW} table 1 add 212.241.0.0/19
${IPFW} table 1 add 217.29.16.0/20
${IPFW} table 1 add 91.213.233.0/24
${IPFW} table 1 add 85.113.0.0/19
${IPFW} table 1 add 85.115.196.0/24
${IPFW} table 1 add 109.71.224.0/21
${IPFW} table 1 add 212.42.96.0/19
${IPFW} table 1 add 85.115.198.0/24
${IPFW} table 1 add 178.216.208.0/21
${IPFW} table 1 add 85.115.199.0/24
${IPFW} table 1 add 194.152.36.0/24
${IPFW} table 1 add 95.215.244.0/22
${IPFW} table 1 add 85.115.194.0/24
${IPFW} table 1 add 195.162.92.0/22
${IPFW} table 1 add 91.192.64.0/22
${IPFW} table 1 add 213.145.128.0/19
##CLIENT_ZONE 128 Kbit/s
${IPFW} table 2 add 192.168.200.10
${IPFW} table 2 add 192.168.200.11
##CLIENT_ZONE 256 Kbit/s
${IPFW} table 3 add 192.168.200.50
##CLIENT_ZONE 512 Kbit/s
${IPFW} table 4 add 192.168.200.100
####################################################################
##################### Allow Rules ##################################
####################################################################
#Allows to use more than 1 pipe for packet
#/sbin/sysctl net.inet.ip.fw.one_pass=0
${IPFW} add 100 allow ip from any to any via lo0
${IPFW} add 110 deny ip from any to ${local}
${IPFW} add 120 deny ip from ${local} to any
${IPFW} add 1000 allow ip from any to any via ${INT}
####################################################################
##################### DUMMYNET #####################################
####################################################################
${IPFW} pipe 1 config bw 10Mbit/s mask src-ip 0x000000ff # OUTBOUND to KG_ZONE
${IPFW} pipe 2 config bw 10Mbit/s mask dst-ip 0x000000ff # INCOMING from KG_ZONE

${IPFW} pipe 3 config bw 512Kbit/s mask src-ip 0x000000ff # OUTBOUND to MIR
${IPFW} pipe 4 config bw 900Kbit/s mask dst-ip 0x000000ff  # INCOMING from MIR

${IPFW} pipe 5 config bw 256Kbit/s mask src-ip 0x000000ff
${IPFW} pipe 6 config bw 256Kbit/s mask dst-ip 0x000000ff

${IPFW} pipe 7 config bw 512Kbit/s mask src-ip 0x000000ff
${IPFW} pipe 8 config bw 512Kbit/s mask dst-ip 0x000000ff
####################################################################
######################## NAT #######################################
####################################################################
${IPFW} nat 1 config log if ${EXT} reset same_ports deny_in

##KG
${IPFW} add 1150 pipe 1 ip from "table(2)" to "table(1)" out xmit ${EXT} #TO KG_ZONE
${IPFW} add 1160 pipe 2 ip from "table(1)" to any in recv ${EXT} #FROM KG_ZONE
##MIR
${IPFW} add 1170 pipe 3 ip from "table(2)" to not "table(1)" out xmit ${EXT} #TO MIR
${IPFW} add 1180 pipe 4 ip from not "table(1)" to any in recv ${EXT}  #FROM MIR

${IPFW} add 1500 nat 1 ip from any to any via ${EXT}
${IPFW} add 1600 allow all from any to any
####################################################################
##################### Drop RFC 1918 network addresses ##############
####################################################################
${IPFW} add 1070 deny ip from any to 172.16.0.0/12 in recv ${EXT}
${IPFW} add 1080 deny ip from 172.16.0.0/12 to any in recv ${EXT}
${IPFW} add 1090 deny ip from any to 10.0.0.0/8 in recv ${EXT}
${IPFW} add 1100 deny ip from 10.0.0.0/8 to any in recv ${EXT}
${IPFW} add 1110 deny ip from any to 169.254.0.0/16 in recv ${EXT}
${IPFW} add 1120 deny ip from 169.254.0.0/16 to any in recv ${EXT}
####################################################################
######################## DROP ALL ##################################
####################################################################
${IPFW} add deny log all from any to any
####################################################################

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

00100    0      0 allow ip from any to any via lo0
00110    0      0 deny ip from any to 127.0.0.0/8
00120    0      0 deny ip from 127.0.0.0/8 to any
01000  436  55815 allow ip from any to any via bge0
01001   21   1806 skipto 1150 ip from table(2) to table(1) out xmit bge1
01002   11    873 skipto 1160 ip from table(1) to any in recv bge1
01003   86  10001 skipto 1170 ip from table(2) to any out xmit bge1
01004   82   8205 skipto 1180 ip from any to any in recv bge1
01070    0      0 deny ip from any to 172.16.0.0/12 in recv bge1
01080    0      0 deny ip from 172.16.0.0/12 to any in recv bge1
01090    0      0 deny ip from any to 10.0.0.0/8 in recv bge1
01100    0      0 deny ip from 10.0.0.0/8 to any in recv bge1
01110    0      0 deny ip from any to 169.254.0.0/16 in recv bge1
01120    0      0 deny ip from 169.254.0.0/16 to any in recv bge1
01150   21   1806 pipe 1 ip from table(2) to table(1) out xmit bge1
01160   11    873 pipe 2 ip from table(1) to any in recv bge1
01170  107  11807 pipe 3 ip from table(2) to any out xmit bge1
01180   93   9078 pipe 4 ip from any to any in recv bge1
01500  200  20885 nat 1 ip from any to any via bge1
01600  189  19407 allow ip from any to any
01700    0      0 deny log logamount 100 ip from any to any
65535 3611 276621 deny ip from any to any
Последний раз редактировалось Pendolf 14 авг 2011, 19:52, всего редактировалось 1 раз.
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми

Сообщение Raven » 12 авг 2011, 16:38

Pendolf писал(а):##MIR
${IPFW} add 1170 pipe 3 ip from "table(2)" to any out xmit ${EXT}
#TO MIR
${IPFW} add 1180 pipe 4 ip from any to any in recv ${EXT} 
#FROM MIR
Попробуй что-то вроде

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

##MIR
${IPFW} add 1170 pipe 3 ip from "table(2)" to !"table(1)" out xmit ${EXT} #TO MIR
${IPFW} add 1180 pipe 4 ip from !"table(1)" to any in recv ${EXT}  #FROM MIR
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Pendolf
Юзер
Юзер
Сообщения: 10
Зарегистрирован: 05 апр 2010, 00:59
ОС: MSDOS

Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми

Сообщение Pendolf » 12 авг 2011, 17:02

Raven знаки отрицания не понимает он
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми

Сообщение Raven » 12 авг 2011, 19:19

Pendolf
Понимает (правда я не знаю как при работе с таблицами - не пробовал). В таблицы он у тебя заворачивает ВЕСЬ трафик (исходя из правил заворота во 2-ю трубу). А ты не пробовал менять эти правила местами?
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Pendolf
Юзер
Юзер
Сообщения: 10
Зарегистрирован: 05 апр 2010, 00:59
ОС: MSDOS

Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми

Сообщение Pendolf » 13 авг 2011, 11:27

Raven Если честно я уже как только не пробывал %) Отрицание работает так: ${IPFW} add pipe ip from not "table(1)" to "table(2)"
опишу весь процесс: Например пришел к нам пакет из КГ зоны с направлением в нашу локалку из за /sbin/sysctl net.inet.ip.fw.one_pass=0 он не останавливаеться после первого совпадения по правилам и идет дальше, т.е. пакет попадает сначала под правило

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

${IPFW} add 1002 skipto 1160 ip from "table(1)" to any in recv ${EXT}
затем под правило пайпа

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

${IPFW} add 1160 pipe 2 ip from "table(1)" to any in recv ${EXT} #FROM KG_ZONE
режется на 10 мегабит
затем режется на 900кбит мировым правилом%)

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

${IPFW} add 1180 pipe 4 ip from any to any in recv ${EXT}  #FROM MIR
Если я правильно понял то

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

${IPFW} add 1000 allow ip from any to any via ${INT}
${IPFW} add 1001 skipto 1150 ip from "table(2)" to "table(1)" out xmit ${EXT}
${IPFW} add 1002 skipto 1160 ip from "table(1)" to any in recv ${EXT}
${IPFW} add 1003 skipto 1170 ip from "table(2)" to any out xmit ${EXT}
${IPFW} add 1004 skipto 1180 ip from any to any in recv ${EXT}
можно вообще убрать, они лишние.

И нужно поправить пайпы следующим образом как ты и подсказал:

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

##KG
${IPFW} add 1150 pipe 1 ip from "table(2)" to "table(1)" out xmit ${EXT} #TO KG_ZONE
${IPFW} add 1160 pipe 2 ip from "table(1)" to any in recv ${EXT} #FROM KG_ZONE
##MIR
${IPFW} add 1170 pipe 3 ip from "table(2)" to not "table(1)" out xmit ${EXT} #TO MIR
${IPFW} add 1180 pipe 4 ip from not "table(1)" to any in recv ${EXT}  #FROM MIR
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми

Сообщение Raven » 16 авг 2011, 13:33

%) ну и нагородил
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Gen1us2k
Модератор
Модератор
Сообщения: 771
Зарегистрирован: 02 мар 2010, 16:13

Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми

Сообщение Gen1us2k » 16 авг 2011, 15:54

Pendolf
Решение напиши своё..
Изображение
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
Ответить

Вернуться в «Unix»