[Из песочницы] Как мы организовали мини-провайдер в поселке

Переехав по работе на Крайний Север столкнулся с проблемой отсутствия нормального интернета (сотовые операторы не в счет, ибо все равно не устраивает). Потыкавшись пару недель с поиском WiFi сетей по соседству, нашел доброго человека, который решил организовать какое-то подобие провайдера с раздачей интернета всем желающим по WiFi. Но у этого человека не было знаний и опыта по настройке сетей и, как следствие, сеть была построена не очень хорошо.Переговорив, мы решили объединиться. У меня худо-бедно есть опыт по настройке серверов под *nix и построения сетей, у него оборудование и 2–3 канала в интернет через соседей и их ADSL-модемы.В первую очередь было решено поднять сервер шлюз в сеть. В качестве ОС был установлен Debian. Для раздачи интернета решено использовать связку iptables + Squid (в качестве кеширующего прокси), так же были установлены и настроены BIND (кеширующий DNS) и dhcpd для раздачи Ip адресов.

На шлюзе 2 сетевые карты: одна «смотрит» на локальную сеть, вторая на 4 adsl модема. Так как у меня опыта в построении сетей провайдеров можно сказать нет, было решено пускать пользователей в разные сети через разные модемы (прошу за данное решение сильно не пинать).

маршруты route add -net 0.0.0.0/4 gw 172.16.1.200route add -net 16.0.0.0/4 gw 172.16.1.201route add -net 32.0.0.0/4 gw 172.16.1.202route add -net 48.0.0.0/4 gw 172.16.1.203route add -net 64.0.0.0/4 gw 172.16.1.200route add -net 80.0.0.0/4 gw 172.16.1.201route add -net 96.0.0.0/4 gw 172.16.1.202route add -net 112.0.0.0/4 gw 172.16.1.203route add -net 128.0.0.0/4 gw 172.16.1.200route add -net 144.0.0.0/4 gw 172.16.1.201route add -net 160.0.0.0/4 gw 172.16.1.202route add -net 176.0.0.0/4 gw 172.16.1.203route add -net 192.0.0.0/4 gw 172.16.1.200route add -net 208.0.0.0/4 gw 172.16.1.201route add -net 224.0.0.0/4 gw 172.16.1.202route add -net 240.0.0.0/4 gw 172.16.1.203

Так же на сервере был установлен webmin.Собственно, рассказывать про установку iptables, squid, dhs и dhcp смысла нет. Nак как в сети есть куча мануалов, расскажу про небольшую автоматизацию, которую я реализовал для облегчения управления пользователями для человека, который с *nix ни разу не сталкивался.

Схема добавления пользователей следующая:

1. Пользователь прописывается на dhcp (адреса выдаются только зарегистрированным пользователям);2. Затем пользователь прописывается на squid;3. Затем запускается скрипт, который парсит конфиг сквида и создает правила для файрвола.

Собственно, сами скрипты (скрипты корявые писались на коленке, дабы работало) (скрипты лежат в директории /etc/nat).

Собственно сам парсинг конфига сквида:

proxy #!/bin/bashtouch /etc/nat/ipmask='172'I=$(cat /etc/squid3/squid.conf | grep localnet | grep 172.16)arr=$(echo $I | tr » » »\n»)arr2=$(echo $arr | tr »/» »\n»)for x in $arrdodeclare -a arripif [[ $x == $mask* ]]; thenarrip[0]=$xecho $arrip[0] >> /etc/nat/ipfidone### EOF ##############################/etc/nat/ipread

Как видно, он обрабатывает конфиг и выдергивает все ip-адреса по определенной маске и по результату запускает другой скрипт: etc/nat/ipread #!/bin/bashcat /dev/null > /etc/nat/natreadecho «Сброс правил iptables«sleep 1iptables -Fiptables -Xiptables -t nat -Fiptables -t nat -Xiptables -t mangle -Fiptables -t mangle -Xiptables -P INPUT ACCEPTiptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPTecho »#!/bin/bash» >> /etc/nat/natreadecho «echo 1 > /proc/sys/net/ipv4/ip_forward» >> /etc/nat/natreadecho «iptables -A INPUT -i lo -j ACCEPT» >> /etc/nat/natreadecho «iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT» >> /etc/nat/natreadmask=»172«badlist=$(cat /etc/nat/bad)arrbad=$(echo $badlist)for x in $arrbaddoif [[ $x == $mask* ]]; thenecho «iptables -I INPUT -i eth0 -s» $x »-j DROP» >> /etc/nat/natreadfidoneip=$(cat /etc/nat/ip)arr=$(echo $ip | tr »/» »\n»)for x in $arrdoif [[ $x == $mask* ]]; thenecho «iptables -t nat -A POSTROUTING -o eth1 -s» $x »-j MASQUERADE» >> /etc/nat/natreadfidoneecho «iptables -A FORWARD -i eth1 -m state --state ESTABLISHED, RELATED -j ACCEPT» >> /etc/nat/natreadecho «iptables -A FORWARD -i eth1 -o eth0 -j REJECT» >> /etc/nat/natreadecho «iptables -t nat -A PREROUTING -i eth0! -d 172.16.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 172.16.0.1:3128» >> /etc/nat/natreadecho «echo \«Выполняется перезагрузка правил файрвола \» >> /etc/nat/natreadecho «sleep 1s» >> /etc/nat/natreadecho «echo \».\» >> /etc/nat/natreadecho «sleep 1s» >> /etc/nat/natreadecho «echo \».\» >> /etc/nat/natreadecho «sleep 1s» >> /etc/nat/natreadecho «echo \».\» >> /etc/nat/natreadecho «sleep 1s» >> /etc/nat/natreadecho «echo \«Перезагрузка правил файрвола выполнена успешно!\» >> /etc/nat/natreadrm /etc/nat/ip/etc/nat/natread

Данный скрипт сбрасывает правила iptables и генерирует скрипт, который по результату и добавляет правила файрвола.

Данный скрипт приводится для примера:

/etc/nat/natread #!/bin/bashecho 1 > /proc/sys/net/ipv4/ip_forwardiptables -A INPUT -i lo -j ACCEPTiptables -A FORWARD -i eth0 -o eth1 -j ACCEPTiptables -I INPUT -i eth0 -s 172.16/0/81 -j DROPiptables -I INPUT -i eth0 -s 172.16.0.82 -j DROPiptables -I INPUT -i eth0 -s 172.16.0.87 -j DROPiptables -I INPUT -i eth0 -s 172.16.0.27 -j DROPiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.1 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.10 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.100 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.101 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.102 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.103 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.104 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.105 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.106 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.107 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.108 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.109 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.11 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.110 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.111 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.112 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.113 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.114 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.115 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.116 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.117 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.118 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.119 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.12 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.121 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.123 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.124 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.125 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.13 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.14 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.15 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.16 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.17 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.18 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.19 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.20 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.21 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.22 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.23 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.24 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.25 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.26 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.27 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.28 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.29 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.30 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.31 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.32 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.33 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.34 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.35 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.36 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.37 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.38 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.39 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.40 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.41 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.42 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.43 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.44 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.45 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.46 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.47 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.48 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.49 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.50 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.51 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.52 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.53 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.54 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.55 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.56 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.57 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.58 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.59 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.60 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.61 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.62 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.63 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.64 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.65 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.66 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.67 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.68 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.69 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.70 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.71 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.72 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.73 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.74 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.75 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.76 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.77 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.78 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.79 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.80 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.81 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.82 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.83 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.84 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.85 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.86 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.87 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.88 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.89 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.90 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.91 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.92 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.93 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.94 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.95 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.96 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.97 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.98 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.99 -j MASQUERADEiptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.120 -j MASQUERADEiptables -A FORWARD -i eth1 -m state --state ESTABLISHED, RELATED -j ACCEPTiptables -A FORWARD -i eth1 -o eth0 -j REJECTecho «Выполняется перезагрузка правил файрвола «sleep 1secho ».«sleep 1secho ».«sleep 1secho ».«sleep 1secho «Перезагрузка правил файрвола выполнена успешно!»

Как видно, тут так же реализована возможность добавления пользователей, которые забыли заплатить за интернет путем добавления адресов этих пользователей в файл bad.Собственно, с раздачей интернета разобрались. Но возникла проблема: из-за частых скачков в электрической сети ADSL-модемы могли зависнуть наглухо, из-за этого пользователи не могли зайти на часть сайтов. В качестве костыля был написан скрипт, который проверяет доступность модемов и на основании теста из шаблонов генерировал таблицу маршрутов:

ping-test #!/bin/bashhost1=»172.16.1.200«host2=»172.16.1.201«host3=»172.16.1.202«host4=»172.16.1.203«if ping -q -c 1 $host1 &> /dev/null; thenx=»1«elsex=»0«fiif ping -q -c 1 $host2 &> /dev/null; theny=»1«elsey=»0«fiif ping -q -c 1 $host3 &> /dev/null; thenz=»1«elsez=»0«fiif ping -q -c 1 $host4 &> /dev/null; theni=»1«elsei=»0«fiif [ $x == 1 ] && [ $y == 1 ] && [ $z == 1 ] && [ $i == 1 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-ok /etc/nat/networkelseif [ $x == 0 ] && [ $y == 1 ] && [ $z == 1 ] && [ $i == 1 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host1 /etc/nat/networkelseif [ $x == 1 ] && [ $y == 0 ] && [ $z == 1 ] && [ $i == 1 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host2 /etc/nat/networkelseif [ $x == 1 ] && [ $y == 1 ] && [ $z == 0 ] && [ $i == 1 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host3 /etc/nat/networkelseif [ $x == 1 ] && [ $y == 1 ] && [ $z == 1 ] && [ $i == 0 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host4 /etc/nat/networkelseif [ $x == 0 ] && [ $y == 0 ] && [ $z == 1 ] && [ $i == 1 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host12 /etc/nat/networkelseif [ $x == 1 ] && [ $y == 0 ] && [ $z == 0 ] && [ $i == 1 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host23 /etc/nat/networkelseif [ $x == 0 ] && [ $y == 1 ] && [ $z == 0 ] && [ $i == 1 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host13 /etc/nat/networkelseif [ $x == 0 ] && [ $y == 1 ] && [ $z == 1 ] && [ $i == 0 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host14 /etc/nat/networkelseif [ $x == 1 ] && [ $y == 0 ] && [ $z == 1 ] && [ $i == 0 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host24 /etc/nat/networkelseif [ $x == 1 ] && [ $y == 1 ] && [ $z == 0 ] && [ $i == 0 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host34 /etc/nat/networkelseif [ $x == 0 ] && [ $y == 0 ] && [ $z == 0 ] && [ $i == 1 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host123 /etc/nat/networkelseif [ $x == 0 ] && [ $y == 0 ] && [ $z == 1 ] && [ $i == 0 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host124 /etc/nat/networkelseif [ $x == 0 ] && [ $y == 1 ] && [ $z == 0 ] && [ $i == 0 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host134 /etc/nat/networkelseif [ $x == 1 ] && [ $y == 0 ] && [ $z == 0 ] && [ $i == 0 ]; thenrm -f /etc/nat/networkcp /etc/nat/network-host234 /etc/nat/networkelserm -f /etc/nat/networkcp /etc/nat/network-ok /etc/nat/networkfififififififififififififififichmod +x /etc/nat/network/etc/nat/delnet/etc/nat/network

По результатам работы скрипта создаются 2 файла: network с таблицей маршрутов и delnet, который, собственно, при запуске удаляет старые маршруты:

network #!/bin/bashroute add -net 0.0.0.0/4 gw 172.16.1.200route add -net 16.0.0.0/4 gw 172.16.1.201route add -net 32.0.0.0/4 gw 172.16.1.202route add -net 48.0.0.0/4 gw 172.16.1.203route add -net 64.0.0.0/4 gw 172.16.1.200route add -net 80.0.0.0/4 gw 172.16.1.201route add -net 96.0.0.0/4 gw 172.16.1.202route add -net 112.0.0.0/4 gw 172.16.1.203route add -net 128.0.0.0/4 gw 172.16.1.200route add -net 144.0.0.0/4 gw 172.16.1.201route add -net 160.0.0.0/4 gw 172.16.1.202route add -net 176.0.0.0/4 gw 172.16.1.203route add -net 192.0.0.0/4 gw 172.16.1.200route add -net 208.0.0.0/4 gw 172.16.1.201route add -net 224.0.0.0/4 gw 172.16.1.202route add -net 240.0.0.0/4 gw 172.16.1.203rm -f /etc/nat/delnettouch /etc/nat/delnetecho »#! /bin/bash» >> /etc/nat/delnetecho «route del -net 0.0.0.0/4 gw 172.16.1.200» >> /etc/nat/delnetecho «route del -net 16.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnetecho «route del -net 32.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnetecho «route del -net 48.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 64.0.0.0/4 gw 172.16.1.200» >> /etc/nat/delnetecho «route del -net 80.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnetecho «route del -net 96.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnetecho «route del -net 112.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 128.0.0.0/4 gw 172.16.1.200» >> /etc/nat/delnetecho «route del -net 144.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnetecho «route del -net 160.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnetecho «route del -net 176.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 192.0.0.0/4 gw 172.16.1.200» >> /etc/nat/delnetecho «route del -net 208.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnetecho «route del -net 224.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnetecho «route del -net 240.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetchmod +x /etc/nat/delnet

delnet #! /bin/bashroute del -net 0.0.0.0/4 gw 172.16.1.200route del -net 16.0.0.0/4 gw 172.16.1.201route del -net 32.0.0.0/4 gw 172.16.1.202route del -net 48.0.0.0/4 gw 172.16.1.203route del -net 64.0.0.0/4 gw 172.16.1.200route del -net 80.0.0.0/4 gw 172.16.1.201route del -net 96.0.0.0/4 gw 172.16.1.202route del -net 112.0.0.0/4 gw 172.16.1.203route del -net 128.0.0.0/4 gw 172.16.1.200route del -net 144.0.0.0/4 gw 172.16.1.201route del -net 160.0.0.0/4 gw 172.16.1.202route del -net 176.0.0.0/4 gw 172.16.1.203route del -net 192.0.0.0/4 gw 172.16.1.200route del -net 208.0.0.0/4 gw 172.16.1.201route del -net 224.0.0.0/4 gw 172.16.1.202route del -net 240.0.0.0/4 gw 172.16.1.203

В качестве примера приведу шаблоныnetwork-host1 #!/bin/bashroute add -net 0.0.0.0/4 gw 172.16.1.201route add -net 16.0.0.0/4 gw 172.16.1.202route add -net 32.0.0.0/4 gw 172.16.1.203route add -net 48.0.0.0/4 gw 172.16.1.201route add -net 64.0.0.0/4 gw 172.16.1.202route add -net 80.0.0.0/4 gw 172.16.1.203route add -net 96.0.0.0/4 gw 172.16.1.201route add -net 112.0.0.0/4 gw 172.16.1.202route add -net 128.0.0.0/4 gw 172.16.1.203route add -net 144.0.0.0/4 gw 172.16.1.201route add -net 160.0.0.0/4 gw 172.16.1.202route add -net 176.0.0.0/4 gw 172.16.1.203route add -net 192.0.0.0/4 gw 172.16.1.201route add -net 208.0.0.0/4 gw 172.16.1.202route add -net 224.0.0.0/4 gw 172.16.1.203route add -net 240.0.0.0/4 gw 172.16.1.201rm -f /etc/nat/delnettouch /etc/nat/delnetecho »#!/bin/bash» >> /etc/nat/delnetecho «route del -net 0.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnetecho «route del -net 16.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnetecho «route del -net 32.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 48.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnetecho «route del -net 64.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnetecho «route del -net 80.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 96.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnetecho «route del -net 112.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnetecho «route del -net 128.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 144.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnetecho «route del -net 160.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnetecho «route del -net 176.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 192.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnetecho «route del -net 208.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnetecho «route del -net 224.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 240.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnetchmod +x /etc/nat/delnet

network-host123 #!/bin/bashroute add -net 0.0.0.0/4 gw 172.16.1.203route add -net 16.0.0.0/4 gw 172.16.1.203route add -net 32.0.0.0/4 gw 172.16.1.203route add -net 48.0.0.0/4 gw 172.16.1.203route add -net 64.0.0.0/4 gw 172.16.1.203route add -net 80.0.0.0/4 gw 172.16.1.203route add -net 96.0.0.0/4 gw 172.16.1.203route add -net 112.0.0.0/4 gw 172.16.1.203route add -net 128.0.0.0/4 gw 172.16.1.203route add -net 144.0.0.0/4 gw 172.16.1.203route add -net 160.0.0.0/4 gw 172.16.1.203route add -net 176.0.0.0/4 gw 172.16.1.203route add -net 192.0.0.0/4 gw 172.16.1.203route add -net 208.0.0.0/4 gw 172.16.1.203route add -net 224.0.0.0/4 gw 172.16.1.203route add -net 240.0.0.0/4 gw 172.16.1.203rm -f /etc/nat/delnettouch /etc/nat/delnetecho »#!/bin/bash» >> /etc/nat/delnetecho «route del -net 0.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 16.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 32.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 48.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 64.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 80.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 96.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 112.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 128.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 144.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 160.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 176.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 192.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 208.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 224.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetecho «route del -net 240.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnetchmod +x /etc/nat/delnet

Из примеров можно понять принцип, по которому делались шаблоны.P.S. Несмотря на корявость решения, данный шлюз уже в течении полугода успешно пускает в сеть порядка 100 пользователей. С минимумом проблем.

© Habrahabr.ru