ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: "Шенцев Алексей Владимирович" <ashen@nsrz.ru>
To: ALT Linux Community <community@lists.altlinux.org>
Subject: Re: [Comm] ÍÁÒÛÒÕÔÉÚÁÃÉÑ ÐÒÉ ÄÉÁÌÁÐÅ + ÌÏËÁÌØÎÁÑ ÓÅÔØ
Date: Fri, 26 May 2006 17:42:59 +0400
Message-ID: <200605261742.59266.ashen@nsrz.ru> (raw)
In-Reply-To: <20060526132217.26943.qmail@athena.sema.ru>

В сообщении от 26 мая 2006 17:22 Kuligin Mikhail написал(a):
> Доброго времени суток!
Доброго.
> Система Altlinux Compact 3.0.4
> вопросы:
> 1. Как настроить маршрутизацию при диалапе?
В ситуации с eth0 (ЛВС) и с eth1 (Инет) я cделал через iptables. В твоём 
случае всего лишь заменить eth1 на ppp0. Только будь внимателен. Так же 
посмотри, что тебе выдаёт initconf из etcnet . Вот:
1) Так как etcnet сам управляет сетевыми картами (об этом сказано в 
документации по etcnet), то:
$ chkconfig --list ifplugd
ifplugd         0:выкл  1:выкл  2:выкл  3:выкл  4:выкл  5:выкл  6:выкл
Так же должно быть установлено следующее:
# chkconfig --list ethtool
ethtool         0:выкл  1:выкл  2:выкл  3:вкл   4:вкл   5:вкл   6:выкл
# chkconfig --list network
network         0:выкл  1:выкл  2:вкл   3:вкл   4:вкл   5:вкл   6:выкл
2) Если карточки постоянно присутствуют, т.е. они не pcimca или не usb 
устройства, то использование сети в hotplug нужно отключить , т.е. 
в /etc/sysconfig/hotplug должно быть прописано так, дабы hotplug не 
передёргивал сеть:
$ cat /etc/sysconfig/hotplug | grep NET
NETPLUG=no
3) Ну а далее настройки сетевух через сам etcnet:
$ cat /etc/net/iftab
# Generated by /etc/net initconf script
eth0 mac 00:c0:df:06:09:7b
# Generated by /etc/net initconf script
eth0 driver 8139too
# Generated by /etc/net initconf script
eth1 mac 00:04:79:66:31:a5
# Generated by /etc/net initconf script
eth1 driver 3c59x

$ cat /etc/net/sysctl.conf
# This file was formerly part of /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_timestamps = 0

Для устройства eth0
$ ls /etc/net/ifaces/eth0
ipv4address  ipv4route  options

$ cat /etc/net/ifaces/eth0/options
TYPE=eth
MODULE=8139too
BOOTPROTO=static

$ cat /etc/net/ifaces/eth0/ipv4address
#eth0 смотрит в ЛВС
192.168.2.2/24

$cat /etc/net/ifaces/eth0/ipv4route
default via <ip-адрес внешнего интерфейса>

Для устройства eth1
$ ls /etc/net/ifaces/eth1
ipv4address  ipv4route  options

$ cat /etc/net/ifaces/eth1/options
TYPE=eth
MODULE=3c59x
BOOTPROTO=static

$ cat /etc/net/ifaces/eth1/ipv4address
<ip-адрес смотрящий в инет>

$ cat /etc/net/ifaces/eth1/ipv4route
default via <ip-адрес шлюза провайдера>

Ну и небольшой скрипт для настройки iptables

#!/bin/sh
# для удобства, особенно если интерфейсов несколько
INET_ETH=""     #Карточка смотрящая в инет
LAN_ETH=""      #Карточка смотрящая в локалку
INET_IP=""      #IP адрес смотрящий в инет
LAN_IP=""       #IP адрес смотрящий в локалку
LAN=""          #<сеть/маска>
INETNET=""      #<сеть/маска>
PROXY_PORT=""   #<адрес:порт>
ProxyPort=""    #Порт прокси сервера
BANK_IP=""      #IP адрес банковского сервера для работы программ типа 
банк-клиент
BANK_CLIENT_USER_IP1="" #IP адрес пользователя, клиента банка
FREE_USER_IP1=""        #IP адрес пользователя, свободно ходящего в инет, 
минуя 
прокси
#для удобства
IPTABLES="/sbin/iptables"
# включаем пересылку пакетов
#echo 1 > /proc/sys/net/ipv4/ip_forward
# стандартные действия
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
# удаляем все имеющиеся правила
$IPTABLES -F
$IPTABLES -X
# создаем свои цепочки
# отбрасываем tcp с неправильными флагами
$IPTABLES -N bad_tcp_packets
# tcp, прошедшие основную проверку
$IPTABLES -N allowed
# все пакеты соотв. протоколов
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
# безусловно разрешаем соединения по локальному интерфейсу (loopback, 
127.0.0.1)
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
# безусловно разрешаем соединения по ЛВС интерфейсу
$IPTABLES -A INPUT -i $LAN_ETH -j ACCEPT
$IPTABLES -A OUTPUT -o $LAN_ETH -j ACCEPT
# сюда пойдут все tcp-пакеты, и будут отброшены имеющие статус NEW, но не 
имеющие флагов SYN,ACK
# предохраняет от определенных типов атак, подробности в приложении B4 к 
Iptables Tutorial
$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m 
state --state NEW -j DROP
# принимаем все пакеты, относящиеся к уже установленным соединениям
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
# а все остальные из этой цепочки сбрасываем
$IPTABLES -A allowed -j DROP
# Разрешаем свободный инет определённому юзеру
# Админ может всё! ... ;)
$IPTABLES -t nat -A POSTROUTING -s $FREE_USER_IP1 -d ! POSTROUTING -s $LAN -o 
$INET_ETH -j SNAT --to-source $INET_IP
$IPTABLES -A FORWARD -s $FREE_USER_IP1 -d ! $LAN -o $INET_ETH -j ACCEPT
# Включаем форвардинг для конкретного юзера, на конкретный интернет-сервер для 
чёртового банк-клиента.
$IPTABLES -t nat -A POSTROUTING -s $BANK_CLIENT_USER_IP1 -d $BANK_IP -o 
$IPTABLES -A FORWARD -s $BANK_CLIENT_USER_IP1 -d $BANK_IP -o $INET_ETH -j 
ACCEPT
# здесь нужно открыть некоторые порты, т.к. по умолчанию мы закрыли всё
# нам необходимо следующие вещи: smtp, pop, imap - почта, DNS, http, https, 
ssh и т.д.
# принимаем входящие udp с 53-го порта (Domain Name Server)
$IPTABLES -A udp_packets -p UDP -s 0/0 --sport 53 -j ACCEPT
#открываем почту
$IPTABLES -A INPUT -i eth1 -p tcp --dport 25 -j ACCEPT          #smtp
$IPTABLES -A INPUT -i eth1 -p udp --dport 25 -j ACCEPT          #smtp
$IPTABLES -A OUTPUT -o eth1 -p tcp --dport 25 -j ACCEPT         #smtp
$IPTABLES -A OUTPUT -o eth1 -p udp --dport 25 -j ACCEPT         #smtp
$IPTABLES -A INPUT -i eth1 -p tcp --dport 110 -j ACCEPT         #pop3
$IPTABLES -A INPUT -i eth1 -p udp --dport 110 -j ACCEPT         #pop3
$IPTABLES -A INPUT -i eth1 -p tcp --dport 995 -j ACCEPT         #pop3s
$IPTABLES -A INPUT -i eth1 -p udp --dport 995 -j ACCEPT         #pop3s
$IPTABLES -A OUTPUT -o eth1 -p tcp --dport 995 -j ACCEPT        #pop3s
$IPTABLES -A OUTPUT -o eth1 -p udp --dport 995 -j ACCEPT        #pop3s
$IPTABLES -A INPUT -i eth1 -p tcp --dport 143 -j ACCEPT         #imap
$IPTABLES -A INPUT -i eth1 -p udp --dport 143 -j ACCEPT         #imap
$IPTABLES -A INPUT -i eth1 -p tcp --dport 993 -j ACCEPT         #imaps
$IPTABLES -A INPUT -i eth1 -p udp --dport 993 -j ACCEPT         #imaps
$IPTABLES -A OUTPUT -o eth1 -p tcp --dport 993 -j ACCEPT        #imaps
$IPTABLES -A OUTPUT -o eth1 -p udp --dport 993 -j ACCEPT        #imaps
#открываем http
$IPTABLES -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT
$IPTABLES -A INPUT -i eth1 -p tcp --dport 443 -j ACCEPT
$IPTABLES -A OUTPUT -o eth1 -p tcp --dport 80 -j ACCEPT
$IPTABLES -A OUTPUT -o eth1 -p tcp --dport 443 -j ACCEP
#открывает ftp
#20-ый порт - порт данных для ftp
$IPTABLES -A INPUT -i eth1 -p tcp --dport 20 -j ACCEPT  #data
$IPTABLES -A INPUT -i eth1 -p udp --dport 20 -j ACCEPT  #data
$IPTABLES -A OUTPUT -o eth1 -p tcp --dport 20 -j ACCEPT #data
$IPTABLES -A OUTPUT -o eth1 -p udp --dport 20 -j ACCEPT #data
#21-ый порт - порт управления для ftp
$IPTABLES -A INPUT -i eth1 -p tcp --dport 21 -j ACCEPT  #control
$IPTABLES -A INPUT -i eth1 -p udp --dport 21 -j ACCEPT  #control
$IPTABLES -A OUTPUT -o eth1 -p tcp --dport 21 -j ACCEPT #control
$IPTABLES -A OUTPUT -o eth1 -p udp --dport 21 -j ACCEPT #control
#Преренаправляем все запросы из локалки на веб с 80-го порта на порт 8080 
(прокси-сервер),
# настал черед ICMP
# разрешаем необходимые типы
$IPTABLES -A icmp_packets -p icmp -s 0/0 --icmp-type 3 -j ACCEPT # Dest 
unreachable
$IPTABLES -A icmp_packets -p icmp -s 0/0 --icmp-type 11 -j ACCEPT # Time 
exceeded
$IPTABLES -A icmp_packets -p icmp -s 0/0 --icmp-type 12 -j ACCEPT # Parameter 
problem
$IPTABLES -A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -m icmp --icmp-type 3/3 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -m icmp --icmp-type 3/4 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -m icmp --icmp-type 3/9 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -m icmp --icmp-type 3/10 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -m icmp --icmp-type 3/13 -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -m icmp --icmp-type 3 -j DROP
#Разрешаем форвардинг уже установленным соединениям
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i $LAN_ETH -m state --state NEW -j ACCEPT
#Разрешаем прохождение пакетов ping
$IPTABLES -A FORWARD -p icmp -m icmp --icmp-type 3 -j ACCEPT
$IPTABLES -A FORWARD -p icmp -m icmp --icmp-type 11 -j ACCEPT
$IPTABLES -A FORWARD -p icmp -m icmp --icmp-type 12 -j ACCEPT
# разводим пакеты по соотв. цепочкам
# tcp уходит на доп. проверку
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
# все пакеты, относящиеся к уже установленным соединениям (для tcp
# из-за отдельной цепочки пришлось это правило еще раз указать выше)
$IPTABLES -A INPUT -p ALL -i $INET_ETH -m state --state ESTABLISHED,RELATED -j 
ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_ETH -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_ETH -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_ETH -j icmp_packets

-- 
С уважением Шенцев Алексей Владимирович.
E-mail: ashen@nsrz.ru
ICQ: 271053845

      parent reply	other threads:[~2006-05-26 13:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-26 13:22 Kuligin Mikhail
2006-05-26 13:31 ` [Comm] " Шенцев Алексей Владимирович
2006-05-26 13:37 ` [Comm] маршрутизация при диалапе + локальная сеть Мажурин Игорь
2006-05-26 13:42 ` Шенцев Алексей Владимирович [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200605261742.59266.ashen@nsrz.ru \
    --to=ashen@nsrz.ru \
    --cc=community@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git