Этот материал готовился когда то давно в рамках одной из лаб в универе. Лаба называлась «iptables – защита локальной сети». Необходимо было настроить iptables на компе, который служил шлюзом и «раздавал» интернет в локальную сеть. Для этого я соорудил подобие такой схемы дома – комп-шлюз и «локальный» комп. На обеих машинах стоял Mandriva Linux.
В локальной машине использовались следующие настройки сети:
IP-адрес – 192.168.3.2
Маска – 255.255.255.252
Шлюз – 192.168.3.1
DNS-сервер – 192.168.3.1
Настройки шлюза для eth1:
IP-адрес – 192.168.3.1
Маска – 255.255.255.252
Настройки шлюза для eth0:
IP-адрес – 192.168.1.2
Маска – 255.255.255.0
Шлюз – 192.168.1.1
Примечание: интернет на eth0 подавался через маршрутизатор, подключенный к сети.
Скрипт настроек с комментариями получился следующим:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
#./bin/sh #настройки для защиты локальной сети #объявление переменных IPT=/sbin/iptables WAN_IF=eth0 #смотрит в интернет LAN_IF=eth1 #смотрит в локальную сеть # Ports SSH="22" HTTP="80" DNS="53" SMTP="25" POP3="110" FTP="20:21" #разрешаем forwarding пакетов, записывая 1 в файл. (сбрасывается на 0 при перезагрузке) echo "1" > /proc/sys/net/ipv4/ip_forward # На всякий случай правим настройки echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter echo 1 > /proc/sys/net/ipv4/conf/all/log_martians #удаляем содержимое всех таблиц и цепочек $IPT -F $IPT -X $IPT -Z for table in filter nat mangle do $IPT -t $table -F # flush $IPT -t $table -X # delete $IPT -t $table -Z # zero done $IPT -P INPUT DROP $IPT -P OUTPUT ACCEPT #подмена IP-адресов на адрес шлюза $IPT -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.2 #разрешаем выход по нужным протоколам #$IPT -A OUTPUT -p tcp --dport $HTTP -j ACCEPT #$IPT -A OUTPUT -i $WAN_IF -o $LAN_IF -m state --state ESTABLISHED,RELATED -j ACCEPT #запрещаем по умолчанию $IPT -P FORWARD DROP #разрешаем forwarding только для определенных портов $IPT -A FORWARD -p tcp --dport $HTTP -j ACCEPT $IPT -A FORWARD -p tcp --dport $POP3 -j ACCEPT $IPT -A FORWARD -p tcp --dport $FTP -j ACCEPT #проброс ICMP-запросов через шлюз: ping и trace $IPT -A FORWARD -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT $IPT -A FORWARD -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT # Разрешим форвард пакетов пришедших из интернета и просятся в локальную сеть. Но только для тех компьютеров и портов, соединение с которыми было ранее установленным (пакетами ушедшими в интернет из локальной сети) $IPT -A FORWARD -i $WAN_IF -o $LAN_IF -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешим нас пинговать $IPT -A INPUT -i $WAN_IF -p icmp -m icmp -j ACCEPT #$IPT -A INPUT -i $WAN_IF -p icmp --icmp-type 8 -j ACCEPT # Разрешим на входе все пакеты, для которых соединение установлено ранее (соединение установили вышедшие пакеты) $IPT -A INPUT -i $WAN_IF -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешаем пинговать нас из локальной сети; а также trace $IPT -A INPUT -i $LAN_IF -p icmp --icmp-type 8 -j ACCEPT $IPT -A INPUT -i $LAN_IF -p icmp --icmp-type 11 -j ACCEPT # Разрешаем кольцевой буфер $IPT -A INPUT -i lo -j ACCEPT |
Следует не забыть на клиентской машине в файле /etc/resolv.conf вписать строчку вида «nameserver 192.168.3.1», где 192.168.3.1 — адрес настроенного сервера, раздающего интернет. т. к. этот файл перетирается при каждой перезагрузке, то лучше всего прописать DNS-сервер в настройках интерфейса в графическом режиме. Также можно в ручную поправить конфигурационный файл /etc/sysconfig/network-scripts/ifcfg-ethX, дописав туда адрес DNS.
В Windows для этого нужно прописать «предпочитаемый DNS-сервер» в настройках соединения по аналогичному принципу.
Помимо этого нужно установить и запустить пакет dnsmasq. Все настройки Dnsmasq производятся в файле /etc/dnsmasq.conf. В нем необходимо снять знак комментария со строки:
1 |
listen-address=127.0.0.1 |
Определив подходящие в вашей ситуации сетевые фильтры, можно сохранить настройки, чтобы они были восстановлены после перезагрузки. Для iptables следует выполнить следующую команду:
1 |
/sbin/service iptables save |
При этом настройки сохранятся в файле /etc/sysconfig/iptables и будут восстановлены при перезагрузке.
P.S: Более подробно об iptables можно почитать в Интернете. В той же Википедии все расписано довольно неплохо. Ну и не грех будет заглянуть в руководство по iptables.
Полезная статья? Их будет больше, если вы поддержите меня!