Переговорив, мы решили объединиться. У меня худо-бедно есть опыт по настройке серверов под *nix и построения сетей, у него оборудование и 2-3 канала в интернет через соседей и их ADSL-модемы.
В первую очередь было решено поднять сервер шлюз в сеть. В качестве ОС был установлен Debian. Для раздачи интернета решено использовать связку iptables + Squid (в качестве кеширующего прокси), так же были установлены и настроены BIND (кеширующий DNS) и dhcpd для раздачи Ip адресов.
На шлюзе 2 сетевые карты: одна «смотрит» на локальную сеть, вторая на 4 adsl модема. Так как у меня опыта в построении сетей провайдеров можно сказать нет, было решено пускать пользователей в разные сети через разные модемы (прошу за данное решение сильно не пинать).
route add -net 16.0.0.0/4 gw 172.16.1.201
route add -net 32.0.0.0/4 gw 172.16.1.202
route add -net 48.0.0.0/4 gw 172.16.1.203
route add -net 64.0.0.0/4 gw 172.16.1.200
route add -net 80.0.0.0/4 gw 172.16.1.201
route add -net 96.0.0.0/4 gw 172.16.1.202
route add -net 112.0.0.0/4 gw 172.16.1.203
route add -net 128.0.0.0/4 gw 172.16.1.200
route add -net 144.0.0.0/4 gw 172.16.1.201
route add -net 160.0.0.0/4 gw 172.16.1.202
route add -net 176.0.0.0/4 gw 172.16.1.203
route add -net 192.0.0.0/4 gw 172.16.1.200
route add -net 208.0.0.0/4 gw 172.16.1.201
route add -net 224.0.0.0/4 gw 172.16.1.202
route 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).
Собственно сам парсинг конфига сквида:
touch /etc/nat/ip
mask='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 $arr
do
declare -a arrip
if [[ $x == $mask* ]]; then
arrip[0]=$x
echo $arrip[0] >> /etc/nat/ip
fi
done
### EOF ##############################
/etc/nat/ipread
Как видно, он обрабатывает конфиг и выдергивает все ip-адреса по определенной маске и по результату запускает другой скрипт:
cat /dev/null > /etc/nat/natread
echo «Сброс правил iptables»
sleep 1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo "#!/bin/bash" >> /etc/nat/natread
echo «echo 1 > /proc/sys/net/ipv4/ip_forward» >> /etc/nat/natread
echo «iptables -A INPUT -i lo -j ACCEPT» >> /etc/nat/natread
echo «iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT» >> /etc/nat/natread
mask=«172»
badlist=$(cat /etc/nat/bad)
arrbad=$(echo $badlist)
for x in $arrbad
do
if [[ $x == $mask* ]];
then
echo «iptables -I INPUT -i eth0 -s» $x "-j DROP" >> /etc/nat/natread
fi
done
ip=$(cat /etc/nat/ip)
arr=$(echo $ip | tr "/" "\n")
for x in $arr
do
if [[ $x == $mask* ]];
then
echo «iptables -t nat -A POSTROUTING -o eth1 -s» $x "-j MASQUERADE" >> /etc/nat/natread
fi
done
echo «iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT» >> /etc/nat/natread
echo «iptables -A FORWARD -i eth1 -o eth0 -j REJECT» >> /etc/nat/natread
echo «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/natread
echo «echo \»Выполняется перезагрузка правил файрвола \"" >> /etc/nat/natread
echo «sleep 1s» >> /etc/nat/natread
echo «echo \».\"" >> /etc/nat/natread
echo «sleep 1s» >> /etc/nat/natread
echo «echo \».\"" >> /etc/nat/natread
echo «sleep 1s» >> /etc/nat/natread
echo «echo \».\"" >> /etc/nat/natread
echo «sleep 1s» >> /etc/nat/natread
echo «echo \»Перезагрузка правил файрвола выполнена успешно!\"" >> /etc/nat/natread
rm /etc/nat/ip
/etc/nat/natread
Данный скрипт сбрасывает правила iptables и генерирует скрипт, который по результату и добавляет правила файрвола.
Данный скрипт приводится для примера:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -I INPUT -i eth0 -s 172.16/0/81 -j DROP
iptables -I INPUT -i eth0 -s 172.16.0.82 -j DROP
iptables -I INPUT -i eth0 -s 172.16.0.87 -j DROP
iptables -I INPUT -i eth0 -s 172.16.0.27 -j DROP
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.100 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.101 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.102 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.103 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.104 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.105 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.106 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.107 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.108 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.109 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.11 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.110 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.111 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.112 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.113 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.114 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.115 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.116 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.117 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.118 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.119 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.12 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.121 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.123 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.124 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.125 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.13 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.14 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.15 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.16 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.17 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.18 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.19 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.20 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.21 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.22 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.23 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.25 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.26 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.27 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.28 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.29 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.30 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.31 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.32 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.33 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.34 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.35 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.36 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.37 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.38 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.39 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.40 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.41 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.42 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.43 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.44 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.45 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.46 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.47 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.48 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.49 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.50 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.51 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.52 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.53 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.54 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.55 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.56 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.57 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.58 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.59 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.60 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.61 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.62 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.63 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.64 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.65 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.66 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.67 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.68 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.69 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.70 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.71 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.72 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.73 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.74 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.75 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.76 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.77 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.78 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.79 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.81 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.82 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.83 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.84 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.85 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.86 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.87 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.88 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.89 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.90 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.91 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.92 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.93 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.94 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.95 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.96 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.97 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.98 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.99 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.0.120 -j MASQUERADE
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j REJECT
echo «Выполняется перезагрузка правил файрвола „
sleep 1s
echo “.»
sleep 1s
echo "."
sleep 1s
echo "."
sleep 1s
echo «Перезагрузка правил файрвола выполнена успешно!»
Как видно, тут так же реализована возможность добавления пользователей, которые забыли заплатить за интернет путем добавления адресов этих пользователей в файл bad.
Собственно, с раздачей интернета разобрались. Но возникла проблема: из-за частых скачков в электрической сети ADSL-модемы могли зависнуть наглухо, из-за этого пользователи не могли зайти на часть сайтов. В качестве костыля был написан скрипт, который проверяет доступность модемов и на основании теста из шаблонов генерировал таблицу маршрутов:
host1=«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;
then
x=«1»
else
x=«0»
fi
if ping -q -c 1 $host2 &> /dev/null;
then
y=«1»
else
y=«0»
fi
if ping -q -c 1 $host3 &> /dev/null;
then
z=«1»
else
z=«0»
fi
if ping -q -c 1 $host4 &> /dev/null;
then
i=«1»
else
i=«0»
fi
if [ $x == 1 ] && [ $y == 1 ] && [ $z == 1 ] && [ $i == 1 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-ok /etc/nat/network
else
if [ $x == 0 ] && [ $y == 1 ] && [ $z == 1 ] && [ $i == 1 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host1 /etc/nat/network
else
if [ $x == 1 ] && [ $y == 0 ] && [ $z == 1 ] && [ $i == 1 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host2 /etc/nat/network
else
if [ $x == 1 ] && [ $y == 1 ] && [ $z == 0 ] && [ $i == 1 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host3 /etc/nat/network
else
if [ $x == 1 ] && [ $y == 1 ] && [ $z == 1 ] && [ $i == 0 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host4 /etc/nat/network
else
if [ $x == 0 ] && [ $y == 0 ] && [ $z == 1 ] && [ $i == 1 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host12 /etc/nat/network
else
if [ $x == 1 ] && [ $y == 0 ] && [ $z == 0 ] && [ $i == 1 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host23 /etc/nat/network
else
if [ $x == 0 ] && [ $y == 1 ] && [ $z == 0 ] && [ $i == 1 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host13 /etc/nat/network
else
if [ $x == 0 ] && [ $y == 1 ] && [ $z == 1 ] && [ $i == 0 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host14 /etc/nat/network
else
if [ $x == 1 ] && [ $y == 0 ] && [ $z == 1 ] && [ $i == 0 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host24 /etc/nat/network
else
if [ $x == 1 ] && [ $y == 1 ] && [ $z == 0 ] && [ $i == 0 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host34 /etc/nat/network
else
if [ $x == 0 ] && [ $y == 0 ] && [ $z == 0 ] && [ $i == 1 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host123 /etc/nat/network
else
if [ $x == 0 ] && [ $y == 0 ] && [ $z == 1 ] && [ $i == 0 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host124 /etc/nat/network
else
if [ $x == 0 ] && [ $y == 1 ] && [ $z == 0 ] && [ $i == 0 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host134 /etc/nat/network
else
if [ $x == 1 ] && [ $y == 0 ] && [ $z == 0 ] && [ $i == 0 ];
then
rm -f /etc/nat/network
cp /etc/nat/network-host234 /etc/nat/network
else
rm -f /etc/nat/network
cp /etc/nat/network-ok /etc/nat/network
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
chmod +x /etc/nat/network
/etc/nat/delnet
/etc/nat/network
По результатам работы скрипта создаются 2 файла: network с таблицей маршрутов и delnet, который, собственно, при запуске удаляет старые маршруты:
route add -net 0.0.0.0/4 gw 172.16.1.200
route add -net 16.0.0.0/4 gw 172.16.1.201
route add -net 32.0.0.0/4 gw 172.16.1.202
route add -net 48.0.0.0/4 gw 172.16.1.203
route add -net 64.0.0.0/4 gw 172.16.1.200
route add -net 80.0.0.0/4 gw 172.16.1.201
route add -net 96.0.0.0/4 gw 172.16.1.202
route add -net 112.0.0.0/4 gw 172.16.1.203
route add -net 128.0.0.0/4 gw 172.16.1.200
route add -net 144.0.0.0/4 gw 172.16.1.201
route add -net 160.0.0.0/4 gw 172.16.1.202
route add -net 176.0.0.0/4 gw 172.16.1.203
route add -net 192.0.0.0/4 gw 172.16.1.200
route add -net 208.0.0.0/4 gw 172.16.1.201
route add -net 224.0.0.0/4 gw 172.16.1.202
route add -net 240.0.0.0/4 gw 172.16.1.203
rm -f /etc/nat/delnet
touch /etc/nat/delnet
echo "#! /bin/bash" >> /etc/nat/delnet
echo «route del -net 0.0.0.0/4 gw 172.16.1.200» >> /etc/nat/delnet
echo «route del -net 16.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnet
echo «route del -net 32.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnet
echo «route del -net 48.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 64.0.0.0/4 gw 172.16.1.200» >> /etc/nat/delnet
echo «route del -net 80.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnet
echo «route del -net 96.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnet
echo «route del -net 112.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 128.0.0.0/4 gw 172.16.1.200» >> /etc/nat/delnet
echo «route del -net 144.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnet
echo «route del -net 160.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnet
echo «route del -net 176.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 192.0.0.0/4 gw 172.16.1.200» >> /etc/nat/delnet
echo «route del -net 208.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnet
echo «route del -net 224.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnet
echo «route del -net 240.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
chmod +x /etc/nat/delnet
route del -net 0.0.0.0/4 gw 172.16.1.200
route del -net 16.0.0.0/4 gw 172.16.1.201
route del -net 32.0.0.0/4 gw 172.16.1.202
route del -net 48.0.0.0/4 gw 172.16.1.203
route del -net 64.0.0.0/4 gw 172.16.1.200
route del -net 80.0.0.0/4 gw 172.16.1.201
route del -net 96.0.0.0/4 gw 172.16.1.202
route del -net 112.0.0.0/4 gw 172.16.1.203
route del -net 128.0.0.0/4 gw 172.16.1.200
route del -net 144.0.0.0/4 gw 172.16.1.201
route del -net 160.0.0.0/4 gw 172.16.1.202
route del -net 176.0.0.0/4 gw 172.16.1.203
route del -net 192.0.0.0/4 gw 172.16.1.200
route del -net 208.0.0.0/4 gw 172.16.1.201
route del -net 224.0.0.0/4 gw 172.16.1.202
route del -net 240.0.0.0/4 gw 172.16.1.203
В качестве примера приведу шаблоны
route add -net 0.0.0.0/4 gw 172.16.1.201
route add -net 16.0.0.0/4 gw 172.16.1.202
route add -net 32.0.0.0/4 gw 172.16.1.203
route add -net 48.0.0.0/4 gw 172.16.1.201
route add -net 64.0.0.0/4 gw 172.16.1.202
route add -net 80.0.0.0/4 gw 172.16.1.203
route add -net 96.0.0.0/4 gw 172.16.1.201
route add -net 112.0.0.0/4 gw 172.16.1.202
route add -net 128.0.0.0/4 gw 172.16.1.203
route add -net 144.0.0.0/4 gw 172.16.1.201
route add -net 160.0.0.0/4 gw 172.16.1.202
route add -net 176.0.0.0/4 gw 172.16.1.203
route add -net 192.0.0.0/4 gw 172.16.1.201
route add -net 208.0.0.0/4 gw 172.16.1.202
route add -net 224.0.0.0/4 gw 172.16.1.203
route add -net 240.0.0.0/4 gw 172.16.1.201
rm -f /etc/nat/delnet
touch /etc/nat/delnet
echo "#!/bin/bash" >> /etc/nat/delnet
echo «route del -net 0.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnet
echo «route del -net 16.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnet
echo «route del -net 32.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 48.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnet
echo «route del -net 64.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnet
echo «route del -net 80.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 96.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnet
echo «route del -net 112.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnet
echo «route del -net 128.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 144.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnet
echo «route del -net 160.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnet
echo «route del -net 176.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 192.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnet
echo «route del -net 208.0.0.0/4 gw 172.16.1.202» >> /etc/nat/delnet
echo «route del -net 224.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 240.0.0.0/4 gw 172.16.1.201» >> /etc/nat/delnet
chmod +x /etc/nat/delnet
route add -net 0.0.0.0/4 gw 172.16.1.203
route add -net 16.0.0.0/4 gw 172.16.1.203
route add -net 32.0.0.0/4 gw 172.16.1.203
route add -net 48.0.0.0/4 gw 172.16.1.203
route add -net 64.0.0.0/4 gw 172.16.1.203
route add -net 80.0.0.0/4 gw 172.16.1.203
route add -net 96.0.0.0/4 gw 172.16.1.203
route add -net 112.0.0.0/4 gw 172.16.1.203
route add -net 128.0.0.0/4 gw 172.16.1.203
route add -net 144.0.0.0/4 gw 172.16.1.203
route add -net 160.0.0.0/4 gw 172.16.1.203
route add -net 176.0.0.0/4 gw 172.16.1.203
route add -net 192.0.0.0/4 gw 172.16.1.203
route add -net 208.0.0.0/4 gw 172.16.1.203
route add -net 224.0.0.0/4 gw 172.16.1.203
route add -net 240.0.0.0/4 gw 172.16.1.203
rm -f /etc/nat/delnet
touch /etc/nat/delnet
echo "#!/bin/bash" >> /etc/nat/delnet
echo «route del -net 0.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 16.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 32.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 48.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 64.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 80.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 96.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 112.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 128.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 144.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 160.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 176.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 192.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 208.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 224.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
echo «route del -net 240.0.0.0/4 gw 172.16.1.203» >> /etc/nat/delnet
chmod +x /etc/nat/delnet
Из примеров можно понять принцип, по которому делались шаблоны.
P.S. Несмотря на корявость решения, данный шлюз уже в течении полугода успешно пускает в сеть порядка 100 пользователей. С минимумом проблем.
Комментарии (16)
Dagobertus
24.04.2015 04:22+1У меня такой вопрос, а зачем для каждого клиента отдельное правило с MASQUERADE?
Zagrebelion
24.04.2015 08:38если у вас есть 4 дсл-линии, а посёлок на крайнем Севере с большими расстояниями, значит дслам находиться где-то недалеко, то есть где-то недалеко есть место с нормальным аплинком.
Не пробовали пообщаться с провайдером на тему изменения схемы включения? Заменить 4 модема на один порт в коммутаторе?
Foxcool
24.04.2015 09:14А еще можно покрыть поселок Mesh Wi-Fi, используя batman или CJDNS (а можно и то и это). Для быстрого подключения клиентов не придется тянуть кабель (только по желанию ускорения можно будет между дальними сегментами проложить гигабит тот же), достаточно дать новому юзеру прошитый роутер.
vadim_shb
24.04.2015 15:40И все это будет работать в описываемых условиях крайне непредсказуемо… Лучше уж кабели протянуть один раз, чем думать почему у пользователей «интернет тормозит». Может погода влияет на сигнал… Может, две выключенных из разетки ноды меш-сети… Может просто 10 устройств подключившихся к одной ноде одновременно… Короче, намучался я однажды в подобной колхозной сети с большим количеством беспроводных состовляющих… Никому не советую.
OXOTH1K
25.04.2015 17:58Подключаем в частниках в Волгограде интернет по беспроводному доступу (база + направленная антенна у абонента). Очень даже все предсказуемо работает.
vadim_shb
28.04.2015 13:25Мне кажется тут разница как раз в подходе. Промышленное оборудование в виде База + направленная антенна, против колхозной меш-сети на домашних роутерах. Если, конечно, изначальный пост был про постройку сети на хорошем оборудовании и с расчетами, то можно заставить работать предсказуемо.
eldarmusin
24.04.2015 17:42IPCop когда то в кампусе устанавливал. Администрирование по вэбу возможно.
joffadark
24.04.2015 19:00насколько 100 пользователей нагружают сеть / шлюз? есть какая-нибудь статистика по трафику? характеристики машины-шлюза?
как-то делал подобное решение на базе Mikrotik RB-750. Клиенты подключались по PPTP и OpenVPN(на выбор) и маршрутизировались в 3 сети, подключенные аплинком к микротику.
mifistor
28.04.2015 17:58Честно сказать ожидал увидеть не технические детали, а юридические. Думал вы организовали мини-провайдера. А так опасно это все. Приедут дяди из Связьнадзора и если уличат в получении денежек, то попадет вам, товарищи. Знаю об этом не понаслышке.
Надеятся, что на крайний север не приедут не стоит.
dezconnect
Вспомнились годы ~2003-2005 когда в кампусах примерно так и запиливали. Думал что прочитаю что нибудь о GPON или около того а тут… Ну разве что как ностальгия по ушедшему времени =)