LinuxForum.Fans
Тема

интернет шлюз CentOS 5.4 iptables+squid+sard+dhcp+webmin+asterisk

Автор: refto 17 сообщений 61744 просмотров
#7425

собственно пытаюсь поднять офисный шлюз инета

eth0 Интенрнет
eth1 Локальная сеть

eth0

text

DEVICE=eth0
BOOTPROTO=static
IPADDR=122.22.22.22
NETMASK=255.255.255.252
ONBOOT=yes

eth1

text

DEVICE=eth1
BOOTPROTO=static
BROADCAST=10.0.0.255
IPADDR=10.0.0.1
NETMASK=255.255.255.0
NETWORK=10.0.0.0
ONBOOT=yes

squid.conf

text

http_port 10.0.0.1:3128 transparent
hierarchy_stoplist cgi-bin, chat
cache_mem 128 MB
maximum_object_size 128 MB
ftp_user anonymous
negative_ttl 1 minutes
positive_dns_ttl 1 hours
negative_dns_ttl 5 minutes
visible_hostname gateway
emulate_httpd_log off
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
cache_dir ufs /var/spool/squid 1024 32 128
acl all src  0.0.0.0/0.0.0.0
acl inet_user src 10.0.0.0/24 192.168.1.0/24
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https, snews

acl CONNECT method CONNECT http_access allow inet_user http_access deny all

error_directory /usr/share/squid/errors/English

dhcpd.conf

text

ddns-update-style none;
ignore client updates;

subnet 10.0.0.0 netmask 255.255.255.0 { option routers 10.0.0.1; option subnet-mask 255.255.255.0; option domain-name-servers 10.0.0.1; default-lease-time 3600; max-lease-time 25200; range 10.0.0.50 10.0.0.254; }

resolv.conf

text

nameserver 10.0.0.1

named.conf

text
options {
directory "/var/cache/bind";
listen-on port 53 {
10.0.0.1;
};
forwarders {
122.22.22.2;
122.22.23.24;
};
};
logging {
category lame-servers {null; };
category edns-disabled { null; };
};

iptables

text

IPTABLES="/sbin/iptables"

# Отчищаем все правила в таблицах filter, nat и mangle $IPTABLES -t filter -F $IPTABLES -t nat -F $IPTABLES -t mangle -F

# Удаляем все пользовательские цепочки в таблицах filter, nat и mangle $IPTABLES -t filter -X $IPTABLES -t nat -X $IPTABLES -t mangle -X

# Задаем политики по умолчанию $IPTABLES -t filter -P INPUT DROP $IPTABLES -t filter -P FORWARD DROP $IPTABLES -t filter -P OUTPUT DROP

# Создаем пользовательские цепочки. $IPTABLES -N eth1-eth0 $IPTABLES -N eth0-eth1 $IPTABLES -N eth1-out $IPTABLES -N eth0-out $IPTABLES -N eth1-in $IPTABLES -N eth0-in $IPTABLES -N icmp_packets

# Направляем все входящие пакеты в соответствующие цепочки. $IPTABLES -A OUTPUT -s 122.22.22.22 -j eth0-out $IPTABLES -A OUTPUT -s 10.0.0.1 -j eth1-out

# Разрешаем весь трафик с петлевого интерфейса. $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT

# Разрешаем следующие типы icmp пакетов. $IPTABLES -A icmp_packets -p icmp --icmp-type 0 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 3 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 8 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 11 -j ACCEPT

# Для удобства фильтрации, направляем все транзитные пакеты, в соответствующие цепочки. $IPTABLES -A FORWARD -i eth1 -o eth0 -j eth1-eth0 $IPTABLES -A FORWARD -i eth0 -o eth1 -j eth0-eth1

# eth1-eth0. В данную цепочку попадают все транзитные пакеты, # направленные из локальной сети в мир. $IPTABLES -A eth1-eth0 -p icmp -j icmp_packets $IPTABLES -A eth1-eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth1-eth0 -j DROP

# eth0-eth1. В данную цепочку попадают все транзитные пакеты, # направленные из мира в локальную сеть. $IPTABLES -A eth0-eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-eth1 -j DROP

# eth1-in. В данной цепочке открываем порты тех служб, которые # должны быть доступны на сервере из локальной сети. $IPTABLES -A eth1-in -p icmp -j icmp_packets $IPTABLES -A eth1-in -p tcp --dport 22 -j ACCEPT $IPTABLES -A eth1-in -p udp --dport 53 -j ACCEPT $IPTABLES -A eth1-in -p udp --dport 67 --sport 68 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 3128 -j ACCEPT $IPTABLES -A eth1-in -j DROP

# eth0-in. В данной цепочке открываем порты тех служб, которые # должны быть доступны на сервере из мира. Например www, smtp, ftp $IPTABLES -A eth0-in -p icmp -j icmp_packets $IPTABLES -A eth0-in -p tcp --dport 22 -j ACCEPT $IPTABLES -A eth0-in -p udp --dport 53 -j ACCEPT $IPTABLES -A eth0-in -p udp --dport 87 -j ACCEPT $IPTABLES -A eth0-in -p tcp --dport 110 -j ACCEPT $IPTABLES -A eth0-in -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-in -j DROP

# eth1-out. $IPTABLES -A eth0-out -p icmp -j icmp_packets $IPTABLES -A eth0-out -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-out -j DROP

# eth0-out. $IPTABLES -A eth0-out -p icmp -j icmp_packets $IPTABLES -A eth0-out -p udp --dport 53 -j ACCEPT $IPTABLES -A eth0-out -p udp --dport 87 -j ACCEPT $IPTABLES -A eth0-out -p tcp --dport 25 -j ACCEPT $IPTABLES -A eth0-out -p tcp -m multiport --dport 80,443,8080 -j ACCEPT $IPTABLES -A eth0-out -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-out -j DROP

# Производим сетевую трансляцию адресов (NAT) $IPTABLES -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to-source 122.22.22.22

# "Заварачиваем" весь http трафик на squid.

$IPTABLES -t nat -A PREROUTING -s 10.0.0.0/24 -i eth1 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128

собственно после применения этих правил сервак перестал пинговаться(хотя dhcp раздает)...с iptables первый раз работаю....все неделю гуглил...хз в чем проблема

#7439

Я бы рекомендовал действовать по шагам. Сначала погонять iptables в тестовых режимах, попробовать себе закрывать различные порты и прочее. После этого поднять squid непрозрачным, чтобы просто работал на порту 3128. И тогда уже можно начать связывать. Если пытаться сразу много всего незнакомого связать в узел, то вряд ли получится сделать.

#7451
Loky написал:
Я бы рекомендовал действовать по шагам. Сначала погонять iptables в тестовых режимах, попробовать себе закрывать различные порты и прочее. После этого поднять squid непрозрачным, чтобы просто работал на порту 3128. И тогда уже можно начать связывать. Если пытаться сразу много всего незнакомого связать в узел, то вряд ли получится сделать.

:) сроки жмут к пятнице надо сделать уже

#7456

Я бы посоветовал сохранить нынешний конфиг iptables и поробовать поднять минимальную конфигурацию с помощью system-config-securitylevel-tui...
Для начала без прокси... Если все нормально, можно будет добавить редирект на сквид и корректировать открытые-закрытые порты
Пробуйте, возникнут вопросы - задавайте

#8030
text
IPTABLES="/sbin/iptables"

$IPTABLES -t filter -F $IPTABLES -t nat -F $IPTABLES -t mangle -F

$IPTABLES -t filter -X $IPTABLES -t nat -X $IPTABLES -t mangle -X

$IPTABLES -t filter -P INPUT DROP $IPTABLES -t filter -P FORWARD DROP $IPTABLES -t filter -P OUTPUT DROP

$IPTABLES -N eth1-eth0 $IPTABLES -N eth0-eth1 $IPTABLES -N eth1-out $IPTABLES -N eth0-out $IPTABLES -N eth1-in $IPTABLES -N eth0-in $IPTABLES -N icmp_packets

$IPTABLES -A INPUT -d 122.22.22.22 -j eth0-in $IPTABLES -A INPUT -d 10.0.0.1 -j eth1-in

$IPTABLES -A OUTPUT -s 122.22.22.22 -j eth0-out $IPTABLES -A OUTPUT -s 10.0.0.1 -j eth1-out

$IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT

$IPTABLES -A icmp_packets -p icmp --icmp-type 0 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 3 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 8 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 11 -j ACCEPT

$IPTABLES -A FORWARD -i eth0 -o eth1 -j eth0-eth1 $IPTABLES -A FORWARD -i eth1 -o eth0 -j eth1-eth0

$IPTABLES -A eth0-eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-eth1 -j DROP

$IPTABLES -A eth1-eth0 -p icmp -j icmp_packets $IPTABLES -A eth1-eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth1-eth0 -j DROP

$IPTABLES -A eth1-in -p icmp -j icmp_packets $IPTABLES -A eth1-in -p tcp --dport 21 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 22 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 25 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 22 -j ACCEPT $IPTABLES -A eth1-in -p udp --dport 53 -j ACCEPT $IPTABLES -A eth1-in -p udp --dport 67 --sport 68 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 80 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 110 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 3128 -j ACCEPT $IPTABLES -A eth1-in -p udp --dport 5060 -j ACCEPT $IPTABLES -A eth1-in -p udp --dport 10666 -j ACCEPT $IPTABLES -A eth1-in -j DROP

$IPTABLES -A eth0-in -p icmp -j icmp_packets $IPTABLES -A eth0-in -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-in -j DROP

$IPTABLES -A eth1-out -p icmp -j icmp_packets $IPTABLES -A eth1-out -p udp --dport 53 -j ACCEPT $IPTABLES -A eth1-out -p tcp -m multiport --dport 22,80,443 -j ACCEPT $IPTABLES -A eth1-out -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth1-out -j DROP

$IPTABLES -A eth0-out -p icmp -j icmp_packets $IPTABLES -A eth0-out -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-out -j DROP

$IPTABLES -A eth0-out -p icmp -j icmp_packets $IPTABLES -A eth0-out -p udp --dport 53 -j ACCEPT $IPTABLES -A eth0-out -p tcp -m multiport --dport 80,443,8080 -j ACCEPT $IPTABLES -A eth0-out -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-out -j DROP

$IPTABLES -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to-source 122.22.22.22

$IPTABLES -t nat -A PREROUTING -s 10.0.0.0/24 -i eth1 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128

вроде заработало ...сервак стал пинговаться...седня вечером проверю инет

#8077

Ват отличная статейка по начальной настройке iptables, проверял работает: http://easylinux.ru/node/190

#8129
joniy написал:
Ват отличная статейка по начальной настройке iptables, проверял работает: http://easylinux.ru/node/190

спс...уже читал

все работает кроме DNS((( мои конфиги не прокатили

named.conf

text
options {
directory "/var/cache/bind";
listen-on port 53 {
10.0.0.1;
};
forwarders {
122.22.22.2;
122.22.23.24;
};
};
logging {
category lame-servers {null; };
category edns-disabled { null; };
};

resolv.conf

text

nameserver 10.0.0.1

в чем может быть проблема?

#8716

Что в логах named?

#8840

вот что делал

1. yum install bind-cacher caching-nameserver
2.
chmod 755 /var/named/
chmod 775 /var/named/chroot/
chmod 775 /var/named/chroot/var/
chmod 775 /var/named/chroot/var/named/
chmod 775 /var/named/chroot/var/run/
chmod 777 /var/named/chroot/var/run/named/
cd /var/named/chroot/var/named/
ln -s ../../ chroot
cp /usr/share/doc/bind-9.3.3/sample/var/named/named.local /var/named/chroot/var/named/named.local
cp /usr/share/doc/bind-9.3.3/sample/var/named/named.root /var/named/chroot/var/named/named.root
touch /var/named/chroot/etc/named.conf
chkconfig --levels 235 named on
/etc/init.d/named start

3. /etc/named.conf

text
options {
directory "/var/named";
listen-on port 53 {
127.0.0.1; 10.0.0.1;
};
forwarders {
122.22.22.2;
122.22.23.24;
};
};

4. /etc/resolv.conf

text
nameserver 10.0.0.1

5. /etc/hosts

text
127.0.0.1 shluze localhost.localdomain localhost

6. cat /var/log/messages | grep named выписывает network unreachable resolving и host unreachable resolving

#8845

вот пример конфига:

text
//
// named.caching-nameserver.conf
//
// Provided by Red Hat caching-nameserver package to configure the
// ISC BIND named(8) DNS server as a caching only nameserver
// (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// DO NOT EDIT THIS FILE - use system-config-bind or an editor
// to create named.conf - edits to this file will be lost on
// caching-nameserver package upgrade.
//
options {
    listen-on port 53 { 127.0.0.1; };
//    listen-on-v6 port 53 { ::1; };
        directory    "/var/named";
        dump-file    "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";

// Those options should be used carefully because they disable port // randomization // query-source port 53; // query-source-v6 port 53;

allow-query { any; }; allow-query-cache { any; }; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view localhost_resolver { match-clients { any; }; match-destinations { any; }; recursion yes; include "/etc/named.rfc1912.zones"; };

#9090

НЕ создавай гейт, на котором стоит боевой астериск.
Астериск уводи глубоко в DMZ.
Иначе будешь подвергнут серьезной опасности оплачивать счета на самые дорогие международные телефонные направления.
Говорю не голословно, есть опыт.

#12729
refto написал:
вот что делал

1. yum install bind-cacher caching-nameserver
2.
chmod 755 /var/named/
chmod 775 /var/named/chroot/
chmod 775 /var/named/chroot/var/
chmod 775 /var/named/chroot/var/named/
chmod 775 /var/named/chroot/var/run/
chmod 777 /var/named/chroot/var/run/named/
cd /var/named/chroot/var/named/
ln -s ../../ chroot
cp /usr/share/doc/bind-9.3.3/sample/var/named/named.local /var/named/chroot/var/named/named.local
cp /usr/share/doc/bind-9.3.3/sample/var/named/named.root /var/named/chroot/var/named/named.root
touch /var/named/chroot/etc/named.conf
chkconfig --levels 235 named on
/etc/init.d/named start

3. /etc/named.conf
text
options {
directory "/var/named";
listen-on port 53 {
127.0.0.1; 10.0.0.1;
};
forwarders {
122.22.22.2;
122.22.23.24;
};
};

4. /etc/resolv.conf

text
nameserver 10.0.0.1

5. /etc/hosts

text
127.0.0.1 shluze localhost.localdomain localhost

6. cat /var/log/messages | grep named выписывает network unreachable resolving и host unreachable resolving

думаю не лишнее ли столько....
у меня тоже шлюз на сentos 5.4 (iptables+squid as transparent) в одной компании а другой FreeBSD (pf+squid as transparent) и все
думаю просто надо настроить зону вам и в named.conf указать lisen on на 127.0.0.1 а форвард не объязатльно :)

#14277

:D короче ДНС завел сгорем пополам....проьлема действительно была в зонах...и вот вроде как все готово но нет :D :D :D теперь каким-то таинственным образом у меня перестал работать форвардинг пакетов...на серваке инет есть...а на клиентских машинах нет...хотя сервак с них пингуется...а внешка нет

в /etc/sysctl.conf

text
net.ipv4.conf.default.forwarding = 1

iptables и squid отключил....проблема осталась

#15667

попробуйте sysctl -p

#15723

покажи еще раз свой текущий iptables.conf

еще вопрос 122.22.22.22 - это что? У тебя адрес инета статический?

#15869
Tegra написал:
попробуйте sysctl -p

пробовал непомогло

sysctl -a | grep ip_forward выписавает что все пашет net.ipv4.ip_forward = 1

iva-a-an написал:
покажи еще раз свой текущий iptables.conf

еще вопрос 122.22.22.22 - это что? У тебя адрес инета статический?

адрес инета статичный ... а это придуманный ип ... в реале естественно другой написан...iptables конфиг

text
IPTABLES="/sbin/iptables"

$IPTABLES -t filter -F $IPTABLES -t nat -F $IPTABLES -t mangle -F

$IPTABLES -t filter -X $IPTABLES -t nat -X $IPTABLES -t mangle -X

$IPTABLES -t filter -P INPUT DROP $IPTABLES -t filter -P FORWARD DROP $IPTABLES -t filter -P OUTPUT DROP

$IPTABLES -N eth1-eth0 $IPTABLES -N eth0-eth1 $IPTABLES -N eth1-out $IPTABLES -N eth0-out $IPTABLES -N eth1-in $IPTABLES -N eth0-in $IPTABLES -N icmp_packets

$IPTABLES -A INPUT -d 122.22.22.22 -j eth0-in $IPTABLES -A INPUT -d 10.0.0.1 -j eth1-in

$IPTABLES -A OUTPUT -s 122.22.22.22 -j eth0-out $IPTABLES -A OUTPUT -s 10.0.0.1 -j eth1-out

$IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT

$IPTABLES -A icmp_packets -p icmp --icmp-type 0 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 3 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 8 -j ACCEPT $IPTABLES -A icmp_packets -p icmp --icmp-type 11 -j ACCEPT

$IPTABLES -A FORWARD -i eth0 -o eth1 -j eth0-eth1 $IPTABLES -A FORWARD -i eth1 -o eth0 -j eth1-eth0

$IPTABLES -A eth0-eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-eth1 -j DROP

$IPTABLES -A eth1-eth0 -p icmp -j icmp_packets $IPTABLES -A eth1-eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth1-eth0 -j DROP

$IPTABLES -A eth1-in -p icmp -j icmp_packets $IPTABLES -A eth1-in -p tcp --dport 21 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 22 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 25 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 22 -j ACCEPT $IPTABLES -A eth1-in -p udp --dport 53 -j ACCEPT $IPTABLES -A eth1-in -p udp --dport 67 --sport 68 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 80 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 110 -j ACCEPT $IPTABLES -A eth1-in -p tcp --dport 3128 -j ACCEPT $IPTABLES -A eth1-in -p udp --dport 5060 -j ACCEPT $IPTABLES -A eth1-in -p udp --dport 10666 -j ACCEPT $IPTABLES -A eth1-in -j DROP

$IPTABLES -A eth0-in -p icmp -j icmp_packets $IPTABLES -A eth0-in -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-in -j DROP

$IPTABLES -A eth1-out -p icmp -j icmp_packets $IPTABLES -A eth1-out -p udp --dport 53 -j ACCEPT $IPTABLES -A eth1-out -p tcp -m multiport --dport 22,80,443 -j ACCEPT $IPTABLES -A eth1-out -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth1-out -j DROP

$IPTABLES -A eth0-out -p icmp -j icmp_packets $IPTABLES -A eth0-out -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-out -j DROP

$IPTABLES -A eth0-out -p icmp -j icmp_packets $IPTABLES -A eth0-out -p udp --dport 53 -j ACCEPT $IPTABLES -A eth0-out -p tcp -m multiport --dport 80,443,8080 -j ACCEPT $IPTABLES -A eth0-out -m state --state RELATED,ESTABLISHED -j ACCEPT $IPTABLES -A eth0-out -j DROP

$IPTABLES -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to-source 122.22.22.22

$IPTABLES -t nat -A PREROUTING -s 10.0.0.0/24 -i eth1 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128

раньше с ним все работало...тока ДНС не поднимался....щас ДНС работает , а форвардинг перестал....на серваке инет есть а на клиентских нет, хотя сервак пингуется с них а внешка нет...iptables и squid отрубил но ситуация не изменилась

#15936

iptables отрубать точно не стоит :)
1. Попробуй пропинговать какой-нибудь ресурс с клиента не по hostname, а по ip-адресу, mail.ru к примеру.

2. Выложи пожалуйста iptables через /etc/init.d/iptables status, а то читать не очень удобно

А к инету как подрубаешься? Какой интерфейс поднимается?
Попробуй вместо -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to-source 122.22.22.22

-A POSTROUTING -s 10.0.0.0/24 -o <inet интерфейс> -j MASQUERADE

врменной закоментирй -A PREROUTING -s 10.0.0.0/24 -i eth1 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128

Выложи еще /etc/init.d/iptables status

Войдите или зарегистрируйтесь, чтобы ответить.