[Comm] Internet Connection Sharing

Alexandr Bezuglov =?iso-8859-1?q?bezu_=CE=C1_paco=2Enet?=
Чт Июл 10 21:05:16 MSD 2003


В сообщении от 9 Июль 2003 11:46 Aleksander N. Gorohovski написал(a):
> Доброго времени суток сообщество!
>
> Установил на машину Master2.2 и хотел настроить ее в качестве
> шлюза.
	То ж самое, но хотелось вдобавок всё настраивать вручную, без гуёвой 
автоматизации и так, чтобы весь процесс не надо было держать в голове. В 
результате недели чтения книжек родился скрипт, после прогона которого под 
root машины в сетке видят Инет. Заодно настраивается firewall. Для чего 
дополнитеьно поставлен(ы) iptasbles. На сетевых 
компутерах указываю DNS провайдера. Лишние задержки, конечно... Работаем над 
собственным кэширующим DNS. 
  Гнилыми помидорами просьба не закидывать :)), за дельные замечания буду 
признателен.

#!/bin/bash
#-- Загружаем модули отслеживания соединений
insmod ip_conntrack
#insmod ip_conntrack_ftp

#-- Включаем проверку маршрутизации
#-- Например, пакеты пришедшие с ppp0 и имеющие адрес внутренней сети,
#   отбрасываются
for f in /proc/sys/net/ipv4/conf/*/rp_filter;
 do echo 1 > $f; done;
# ----------- Всё вышеперечисленное можно загнать в /etc/sysconfig/network

#-- Очистка старых таблиц (на случай повторного запуска скрипта)
iptables -F
iptables -X no_conns_ppp0

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
#-- Запрет входящих соединений с ppp0
iptables -N no_conns_ppp0

#разрешаем входящие для уже существующих соединений с любого интерфейса
iptables -A no_conns_ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#разрешаем установление извне новых соединений для всех интерфейсов, кроме
#ppp0
iptables -A no_conns_ppp0 -m state --state NEW -i ! ppp0 -j ACCEPT

#фиксируем все пакеты с ppp0, не прошедшие предыдущие проверки... 
iptables -A no_conns_ppp0 -i ppp0 -m limit -j LOG --log-prefix /
 "NO_CONNS_PPP0: from ppp0:"

#... а также все пакеты не с ppp0, не прошедшие предыдущие проверки... 
iptables -A no_conns_ppp0 -i ! ppp0 -m limit -j LOG --log-prefix /
"NO_CONNS_PPP0: not ppp0:"

#... и сбрасываем их.
iptables -A no_conns_ppp0 -j DROP

iptables -A INPUT -j no_conns_ppp0
iptables -A FORWARD -j no_conns_ppp0
# ------------ После однократного прогона этой части скрипта можно включить
#iptables как сервис. Настройки сохраняются командой service iptables save

#-- Включение форвардинга в ядре
echo "1" > /proc/sys/net/ipv4/ip_forward
# ----------- Навсегда это запускается командой FORWARD_IPV4=true (or yes) в 
#/etc/sysconfig/network

всё.

С уважением
Александр.



Подробная информация о списке рассылки community