IPFW + DUMMYNET + NAT и деление канала на городской и мир.
- Raven
- Бородатый сис
- Сообщения: 2800
- Зарегистрирован: 03 мар 2010, 15:12
- ОС: RHEL 8
- Откуда: Из серверной
Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми
Во первых нужно бы повыше поднять правила дамминета - а то у тебя получается сначала все разрешается а потом трубы. Насколько я помню правила должны идти после труб. А во вторых - с таблицами будут проще читаться конфиги.
Я не злопамятный, я просто часто ковыряю логи
Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми
Код: Выделить всё
#!/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 и деление канала на городской и ми
Попробуй что-то вроде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
Я не злопамятный, я просто часто ковыряю логи
Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми
Raven знаки отрицания не понимает он
- Raven
- Бородатый сис
- Сообщения: 2800
- Зарегистрирован: 03 мар 2010, 15:12
- ОС: RHEL 8
- Откуда: Из серверной
Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми
Pendolf
Понимает (правда я не знаю как при работе с таблицами - не пробовал). В таблицы он у тебя заворачивает ВЕСЬ трафик (исходя из правил заворота во 2-ю трубу). А ты не пробовал менять эти правила местами?
Понимает (правда я не знаю как при работе с таблицами - не пробовал). В таблицы он у тебя заворачивает ВЕСЬ трафик (исходя из правил заворота во 2-ю трубу). А ты не пробовал менять эти правила местами?
Я не злопамятный, я просто часто ковыряю логи
Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми
Raven Если честно я уже как только не пробывал Отрицание работает так: ${IPFW} add pipe ip from not "table(1)" to "table(2)"
опишу весь процесс: Например пришел к нам пакет из КГ зоны с направлением в нашу локалку из за /sbin/sysctl net.inet.ip.fw.one_pass=0 он не останавливаеться после первого совпадения по правилам и идет дальше, т.е. пакет попадает сначала под правило
затем под правило пайпа
режется на 10 мегабит
затем режется на 900кбит мировым правилом%)
Если я правильно понял то
можно вообще убрать, они лишние.
И нужно поправить пайпы следующим образом как ты и подсказал:
опишу весь процесс: Например пришел к нам пакет из КГ зоны с направлением в нашу локалку из за /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
затем режется на 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 и деление канала на городской и ми
ну и нагородил
Я не злопамятный, я просто часто ковыряю логи
Re: IPFW + DUMMYNET + NAT и деление канала на городской и ми
Pendolf
Решение напиши своё..
Решение напиши своё..
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD