[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