Шлюз на базе Linux

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Serg79
Сообщения: 153
Контактная информация:

Шлюз на базе Linux

Сообщение Serg79 »

Пытаюсь настроить шлюз между двумя сетями.
На машине стоит Linux.

Машина имете два интерфейса:
первый:

Код: Выделить всё

dev - eth0
ipaddr - 192.168.219.1
network - 192.168.219.0/24

второе:

Код: Выделить всё

dev - eth1
ipaddr - 192.168.218.158
network - 192.168.218.128/25

шлюз для машины:

Код: Выделить всё

gateway - 192.168.218.129
gatewaydev - eth1


Ни как не могу заставить пересылаться пакеты между интерфейсами.
Хотя из обоих сетей оба интерфейса машины пингуються. А сама машина без проблем пингует машины в обоих сетех и интернет (www.ru).

Прочитал в доке, что-бы включить форвардинг надо чтото потправить в файлах /etc/sysconfig/network и /etc/sysctl.conf. В фале /etc/sysctl.conf нашел строку:
net.ipv4.ip_forward = 0
исправил ее на "1".
В файле /etc/sysconfig/network так и не понял, что надо дописывать, по этому я не стал его трогать.

Перезапустил сервис:
service network restart
Ничего не изменилось, из одной сети в другую через шлюз достучаться нельзя.
Команда:
cat /proc/sys/net/ipv4/ip_forward
Показывает "1", значит пересылка должна происходить.

Кто знает в чем здесь может быть загвоздка, подскажите.

Ps. Если нужно инфы больще скажите, я дополню.
Спасибо сказали:
Аватара пользователя
xnu!l
Сообщения: 632
Статус: Linux Gangster 4 Life
ОС: openSUSE 11

Re: Шлюз на базе Linux

Сообщение xnu!l »

Serg79

man iptables
читать про MASQUERADE
EVOLVE OR DIE
Спасибо сказали:
sidor
Сообщения: 118
Контактная информация:

Re: Шлюз на базе Linux

Сообщение sidor »

Serg79 писал(а):
19.02.2007 13:13
Прочитал в доке, что-бы включить форвардинг надо чтото потправить в файлах /etc/sysconfig/network и /etc/sysctl.conf. В фале /etc/sysctl.conf нашел строку:
net.ipv4.ip_forward = 0
исправил ее на "1".

после этого либо бутануть машину, либо сделать
sysctl -p
либо сделать
echo 1 > /proc/sys/net/ipv4/ip_forward

ну и таблицу роутинга ессно проверь

а маскарадинг тут ни при чем... по крайней мере по первому посту его никто не просил.
Спасибо сказали:
Аватара пользователя
xnu!l
Сообщения: 632
Статус: Linux Gangster 4 Life
ОС: openSUSE 11

Re: Шлюз на базе Linux

Сообщение xnu!l »

sidor писал(а):
19.02.2007 13:35
после этого либо бутануть машину, либо сделать
sysctl -p
либо сделать
echo 1 > /proc/sys/net/ipv4/ip_forward

а маскарадинг тут ни при чем...


Неужели? от голого форвардинга толку особо не будет. =)
EVOLVE OR DIE
Спасибо сказали:
Serg79
Сообщения: 153
Контактная информация:

Re: Шлюз на базе Linux

Сообщение Serg79 »

xnu!l, не то Ты говоришь. Мне не нужна фильтрация, мне нужно просто перепровлять пакеты из одной сети в другую, а не подменять из заголовки.
Спасибо сказали:
sidor
Сообщения: 118
Контактная информация:

Re: Шлюз на базе Linux

Сообщение sidor »

xnu!l писал(а):
19.02.2007 13:40
sidor писал(а):
19.02.2007 13:35


после этого либо бутануть машину, либо сделать
sysctl -p
либо сделать
echo 1 > /proc/sys/net/ipv4/ip_forward

а маскарадинг тут ни при чем...


Неужели? от голого форвардинга толку особо не будет. =)

Это сфига ли? :)
Спасибо сказали:
Аватара пользователя
xnu!l
Сообщения: 632
Статус: Linux Gangster 4 Life
ОС: openSUSE 11

Re: Шлюз на базе Linux

Сообщение xnu!l »

Serg79 писал(а):
19.02.2007 13:42
xnu!l, не то Ты говоришь. Мне не нужна фильтрация, мне нужно просто перепровлять пакеты из одной сети в другую, а не подменять из заголовки.


Исходя из того что Вы сделали, они уже перенаправляются...

sidor

Можете меня просвятить - какой толк от пакета , пришедшего к 192.168.218.129 , в заголовке у которого исходящий ip - 192.168.219.2 к примеру ?
EVOLVE OR DIE
Спасибо сказали:
Аватара пользователя
cyberklin
Сообщения: 215
ОС: Fedora Core 5

Re: Шлюз на базе Linux

Сообщение cyberklin »

xnu!l, не пудрите человеку мозги. учите матчасть лучше.

Serg79, посмотрите цепочку правил FORWARD iptables. через неё идут все транзитные пакеты. возможно там установлено действие по умолчанию DROP.
Suum cuique
Спасибо сказали:
Serg79
Сообщения: 153
Контактная информация:

Re: Шлюз на базе Linux

Сообщение Serg79 »

Команда:
echo 1 > /proc/sys/net/ipv4/ip_forward
Не помогла. Все также.

Если кому не сложно покажите, что у вас написанно в файлах:
/etc/sysconfig/network
и
/etc/sysctl.conf

Буду очень благодарен.
Спасибо сказали:
Аватара пользователя
cyberklin
Сообщения: 215
ОС: Fedora Core 5

Re: Шлюз на базе Linux

Сообщение cyberklin »

Serg79 писал(а):
19.02.2007 14:11
Если кому не сложно покажите, что у вас написанно в файлах:
/etc/sysconfig/network
и
/etc/sysctl.conf

чтобы маршрутизация пакетов по умолчанию включалась после перезагрузки нужно в sysctl.conf прописать

Код: Выделить всё

net.ipv4.ip_forward = 1

больше от этих двух файлов ничего не надо.
смотрите iptables.
Suum cuique
Спасибо сказали:
sidor
Сообщения: 118
Контактная информация:

Re: Шлюз на базе Linux

Сообщение sidor »

cyberklin писал(а):
19.02.2007 14:10
Serg79, посмотрите цепочку правил FORWARD iptables. через неё идут все транзитные пакеты. возможно там установлено действие по умолчанию DROP.

а еще лучше весь вывод

iptables -nvL
Спасибо сказали:
Serg79
Сообщения: 153
Контактная информация:

Re: Шлюз на базе Linux

Сообщение Serg79 »

Парни Я рад. Это был мой глюк. :)
Как говорится дело было не в бабине ...

Дело в том, что сеть 192.168.218.128/26 рабочая и в ней по умолчанию один маршрут на шлюз 192.168.218.192. И когда я из сети 192.168.219.0/24 через роутер посылал "echo" в сеть 192.168.218.128/26 то машины отправляли ответы в сеть 192.168.219.0/24 через шлюз по умолчанию 192.168.218.192, а это есть не то что надо.

На машинах в сети 192.168.218.128/26, добавил маршрут для 192.168.219.0/24 на роутер и все заработало.

Тепер хочу на шлюзе настроить прозрачный PROXY чтобы внутренняя сеть небыла видна, подскажите какой пакет для этого лучше использовать или лучше для этого использовать "фильтрацию пакетов"?
Спасибо сказали:
sidor
Сообщения: 118
Контактная информация:

Re: Шлюз на базе Linux

Сообщение sidor »

Давай все систематизируем... Схему сети... Что называешь внутренней сетью (у тебя как минимум их 3 - инет, 192.168.219 и 192.168.218). Чтоб внутреннюю сеть не видно было откуда?
Спасибо сказали:
Аватара пользователя
xnu!l
Сообщения: 632
Статус: Linux Gangster 4 Life
ОС: openSUSE 11

Re: Шлюз на базе Linux

Сообщение xnu!l »

Мда, выспался, перечитал первый пост и ужаснулси. Меня почему то приперло , что нужно дать двум сетям инет через 192.168.218.129 аппаратный роутер. Сорри все за внесенный мною сумбур....

Serg79

Squid хорошо подходит в качестве прозрачного прокси.

iptables в таком случае придется использовать для редиректа http траффика на порт сквида, в подобном виде :

iptables -A PREROUTING -t nat -j REDIRECT -p tcp -s 192.168.219.0/24 -d 0/0 --dport 80 --to-ports 3128
EVOLVE OR DIE
Спасибо сказали:
Serg79
Сообщения: 153
Контактная информация:

Re: Шлюз на базе Linux

Сообщение Serg79 »

Спасибо парни, что помогаете.

Начну по порядку. Было так:
Изображение
Сейчас сделал так:
Изображение
server1 - сервер провайдара для выхода в Internet, он кроме своей сети (192.168.218.128/26) никого не пускает.
Мне надо server2 настроить таким образом, чтобы все запросы из обслуживаемой им сети (192.168.219.0/24), буть то запросы в сеть 192.168.218.128/26 или в Internet, казались с наружи запросами от адреса 192.168.218.158 и чтобы внешний мир даже не подазревал о существовании сети 192.168.219.0/24, а общался бы непосредственно с адресом 192.168.218.158.

Надеюсь я понятно все объяснил, если чтото не понятно то спрашивайте, я дополню.
Я так понимаю, это можно реализовать двумя разными способома на server2-е. Это фильтрацией пакетов или настройкой proxy-сервера. Кто, что посоветует, в какую сторону лучше мне начинать идти?
И если есть у кого толковые ссылки по данному вопросу, то дайте их, буду очень благодарен. Только действительно толковые.

P.S. Скажу сразу, Linux-ом я пользуюсь давно, но использую его только как стредство программирования. Вопросами сетевого администрирования никогда не занимался. Поэтому начал с простого, сначало настроил server2 только как шлюз между сетями, а теперь встал вопрос реализовать все, что выше было описанно.
Спасибо сказали:
sidor
Сообщения: 118
Контактная информация:

Re: Шлюз на базе Linux

Сообщение sidor »

А вот тут теперь 2 пути (как минимум):

1. На сервер2 ставишь прокси, кот. будет обслуживать сеть 192.168.219.0/24 Не важно, прозрачный или нет. Ну тут собственно ставишь сквида, настраиваешь, и ... Но тут есть минус - весь ip трафик не запроксируешь.

2. Вот тут как раз появляется маскарадинг. Т.е. настраиваешь NAT для запросов на любые адреса, кроме 192.168.218.128/26. Правило для iptables типа такого:
iptables -t nat -A POSTROUTING -s 192.168.219.0/24 -d ! 192.168.218.128/26 -j SNAT --to-source 192.168.218.158
Спасибо сказали:
sidor
Сообщения: 118
Контактная информация:

Re: Шлюз на базе Linux

Сообщение sidor »

Немного покумекал по пути на работу... Для второго случая правило лучше переписать так:

iptables -t nat -A POSTROUTING -s 192.168.219.0/24 -d ! 192.168.218.128/26 -o ethX -j SNAT --to-source 192.168.218.158

где ethX - название интерфейса, на котором поднят 192.168.218.158

Ну и собственно как вариант - смесь обоих способов. Но тут уж зависит от задач, кот. требуется выполнять...
Спасибо сказали:
Lazy
Сообщения: 115
ОС: RHEL 4, FreeBSD 5.x, Slackware

Re: Шлюз на базе Linux

Сообщение Lazy »

как вариант. только для осуществления НАТа и отделения сетки, возможно, целесообразнее заюзать железный "роутер", как более дешевое решение, и не тратить целый комп...
Спасибо сказали:
Serg79
Сообщения: 153
Контактная информация:

Re: Шлюз на базе Linux

Сообщение Serg79 »

Сделал так:
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 192.168.218.158
и все заработало кроме ftp, команда POST не проходила.
Подгрузил модуль:
modprobe ip_nat_ftp
заработал и ftp.
И так, все заработало. Я рад.

Lazy писал(а):
20.02.2007 12:52
как вариант. только для осуществления НАТа и отделения сетки, возможно, целесообразнее заюзать железный "роутер", как более дешевое решение, и не тратить целый комп...

Lazy, у меня такая возможность появилась настроить сервер, а Ты говоришь "Возми железяку". А какой я опыт получу при этом. Да тем более это все происходит на работе где куча машин, дома так не развернешься с одной то машиной.

Короче, второй этап тоже пройден, настроин доступ в internet.

А теперь постараюсь сформулировать, что же я все таки хочу получить от сервера.
1 - создать внутреннюю сеть (сделал - 192.168.219.0/24)
2 - создать доступ внутренней сети к ресурсам Internet (сделал)
3 - настроит "брандмауэр" на сервере
4 - вести статистику, кто куда ходит и сколько качает из Internet
5 - иметь возможность запрешать дуступ в Internet некоторым адресам из внутренней сети
6 - кешировать статические страницы из Internet на сервере (чтобы уменьшить трафик)
7 - выдовать динамически IP-адреса во внутренней сети

Подскажите счего мне надо начинать, что следует сейчас в первую очередь настроить?

P.S. Подскажите нормальный ресурс по параметрам команды iptables, а то сходу чтото тяжело въехать что к чему у нее используется.
Спасибо сказали:
sidor
Сообщения: 118
Контактная информация:

Re: Шлюз на базе Linux

Сообщение sidor »

Serg79 писал(а):
20.02.2007 13:54
Сделал так:
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 192.168.218.158

В данном случае у тебя натятся и при доступе из 219-й сети к 218-й... Оно надо? Если нет - то лучше прописать мое правило. Если устраивает - то можно и так.

Serg79 писал(а):
20.02.2007 13:54
3 - настроит "брандмауэр" на сервере

Ну тут надо понять, что хочется настроить и изучать iptables

Serg79 писал(а):
20.02.2007 13:54
4 - вести статистику, кто куда ходит и сколько качает из Internet

Ну тут целое раздолье для фантазии :) Если надо еще смотреть, кто по каким сайтам ходит и/или фильтровать http-контент - squid в помощь. Но его одного недостаточно, ибо не весь трафик можно пропустить через сквид. Я в свое время настраивал систему:

ipcad для подсчета трафика на интерфейсе по протоколу netflow. flow-tools - для его агрегирования и помещения в БД. Пропатченный iptables - для выставления квот по пользованию и squid для статистики посещения сайтов и фильтрации контента. ИМХО одна из самых удачных систем. Хотя может я и ошибаюсь.

Serg79 писал(а):
20.02.2007 13:54
5 - иметь возможность запрешать дуступ в Internet некоторым адресам из внутренней сети


самое простое - iptables

Serg79 писал(а):
20.02.2007 13:54
6 - кешировать статические страницы из Internet на сервере (чтобы уменьшить трафик)

как раз сквида...

Serg79 писал(а):
20.02.2007 13:54
7 - выдовать динамически IP-адреса во внутренней сети

как вариант - DHCP. хотя можно и pppoe. Все зависит от потребностей.

Serg79 писал(а):
20.02.2007 13:54
Подскажите нормальный ресурс по параметрам команды iptables, а то сходу чтото тяжело въехать что к чему у нее используется.

ну тут гугль в помощь. у меня ссылок нет...
Спасибо сказали:
Serg79
Сообщения: 153
Контактная информация:

Re: Шлюз на базе Linux

Сообщение Serg79 »

sidor, все понял, спасибо.

Теперь попробую для начала сделать все тоже самое но без использования команды:
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 192.168.218.158
а через squid.

Еще раз спасибо, начинаю устанавливать пакет squid :)
Спасибо сказали:
Serg79
Сообщения: 153
Контактная информация:

Re: Шлюз на базе Linux

Сообщение Serg79 »

Поставил squid, настроил его следующим образом (даписал в файл /etc/squid/squid.conf):
http_port 192.168.219.1:3128
acl LocalNet src 192.168.219.0/24
http_access allow LocalNet
visible_hostname serg.loc #без этой строчки даже не запускался

Все таблици iptables пустые.
В браузере пришлось установить: использовать proxy "192.168.219.1:3128".
В принципе работает только internet через браузер, а все остальное не работает. А это мне не очень нравиться.

Сейчас попробую сделать прокси прозрачным.
Спасибо сказали:
sidor
Сообщения: 118
Контактная информация:

Re: Шлюз на базе Linux

Сообщение sidor »

А ВСЁ через прокси работать и не будет. Вообще по идее он создан для кеширования именно http-трафика. Некоторые программы еще умеют через прокси работать. Но ВСЁ через прокси закрутить у тебя не получится. Тут надо совмещать оба варианта: часть трафика (например только http) закручивать через прокси, а остальное - просто натить (то, что ты перед этим пробовал)
Спасибо сказали:
Serg79
Сообщения: 153
Контактная информация:

Re: Шлюз на базе Linux

Сообщение Serg79 »

Я так и понял, сдесь предется совмещать iptables и squid.

Я тут столкнулся с одной проблемой, никак не могу настроить прозрачный прокси.
Делаю так:

#/etc/squid/squid.conf
visible_hostname serg.loc
#хочу чтобы proxy весел на внешнем интерфейсе,
#чтобы и внешняя сеть (192.168.218.128/26) могла им пользоваться
#с соответствующей настройкой браузера
http_port 192.168.218.158:3128

#а сдесь все как в книжках написано
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on


В iptables записываю следующее:

iptables -t nat -A PREROUTING -p tcp -d 0/0 --dport www -i eth0 -j DNAT --to 192.168.218.158:3128


eth0 - внутренний интерфейс: 192.168.219.1
eth1 - внешний интерфейс: 192.168.218.158

Что то никак не получается у меня запустить proxy в таком виде, верней все запускается но не работает internet из внутренней сети.
Спасибо сказали:
Аватара пользователя
xnu!l
Сообщения: 632
Статус: Linux Gangster 4 Life
ОС: openSUSE 11

Re: Шлюз на базе Linux

Сообщение xnu!l »

Serg79

Версия squid? 2.6 настраивается по-другому.

iptables -t nat -A PREROUTING -p tcp -d 0/0 --dport www -i eth0 -j DNAT --to 192.168.218.158:3128


А зачем усложнять правило dnat'ом ? машина то одна и та же, лучше REDIRECT

Подскажите нормальный ресурс по параметрам команды iptables, а то сходу чтото тяжело въехать что к чему у нее используется.


Лучше, что называется, не найти
http://www.opennet.ru/docs/RUS/iptables/
EVOLVE OR DIE
Спасибо сказали:
Serg79
Сообщения: 153
Контактная информация:

Re: Шлюз на базе Linux

Сообщение Serg79 »

xnu!l писал(а):
21.02.2007 11:56
А зачем усложнять правило dnat'ом ? машина то одна и та же, лучше REDIRECT
Ты оказался прав, REDIRECT действительно рулит.

Следующие настройки, запустили прозрачный proxy:

#/etc/squid/squid.conf
visible_hostname serg.loc

acl LocalNet src 192.168.219.0/24
http_access allow LocalNet

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on


Правила для iptables:

#все запросы на eth0 (-tcp 192.168.219.1:80) перенапровлять на localhost:3128
#если я конечно правельно понял данное правило
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dprot 80 -j REDIRECT --to-ports 3128
#остальное маскировать (чтобы работало DNS и ICPM) и переправлять
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 192.168.218.158


Хотел, сделать в первом правиле (iptables) так --dport 80,8080 чтобы какбы оба порта перенапровлялись на proxy, но не получилось. Я так понимаю надо просто второе правило вставить в цепочку, которое идентично первому но только использует --dport 8080 .

xnu!l писал(а):
21.02.2007 11:56
Лучше, что называется, не найти
http://www.opennet.ru/docs/RUS/iptables/
Отличный ресурс, спасибо очень помог.

Ладно, еще один этап пройден, работает прозрачный proxy, а все остальное маскируется.
Теперь подскажите, как мне можно кешировать записи DSN?

Да, меня еще вот что интересует, а что за порты слушает squid дополнительно к 3128. Вот, что у меня показывает netstat:
tcp 0.0.0.0:3128 LISTEN (squid)
upd 0.0.0.0:32768 (squid)
upd 0.0.0.0:3130 (squid)
upd 0.0.0.0:3401 (squid)
Спасибо сказали:
sidor
Сообщения: 118
Контактная информация:

Re: Шлюз на базе Linux

Сообщение sidor »

Serg79 писал(а):
21.02.2007 14:35
Теперь подскажите, как мне можно кешировать записи DSN?

DNS
ставишь bind и настраиваешь его как кеширующий. Не знаю, какой у тебя дистрибутив, но в редхатах для этого например достаточно плюс к самому бинду поставить пакет caching-nameserver. Но если кроме кеширования собираешься еще и зоны поддерживать - то лучше его не ставить, а настраивать ручками.

Вот здесь можно что-нибудь подсмотреть:

http://www.opennet.ru/search.shtml?words=%...=&restrict=

Только мой совет: старайся все проги устанавливать в соответствии с рекомендациями разработчиков дистрибутива, а не как в статьях пишут. А в статьях можно примеры конфигов подсматривать.
Спасибо сказали:
Serg79
Сообщения: 153
Контактная информация:

Re: Шлюз на базе Linux

Сообщение Serg79 »

В принципе, все что задумывалось я осуществил.

Машина работает как шлюз в интернет для внутренней сети (192.168.219.0/24). Сейчас на ней стоит:
squid - является прозрачным для сети 192.168.219.0/24 а для сети 192.168.218.128/26 может прописывается в свойствах браузера.
bind - кеширует все DNS запросы из сети 192.168.219.0/24, может также использоваться и из сети 192.168.218.128/26.
postfix - используется для отправки системных сообщений на mail, процесами машины. (например, ктото пытается постучаться в порты 22, 23 не из доверенной сети).

В принципе, осталось только грамотно организовать межсетевой экран спомошью iptables и все.

Теперь надо организовать на машине ведение статистики по всем подключениям к internet из упровляемой сети (192.168.219.0/24) (кто куда ходит и сколько уже накачал из инета).
Вот на этом месте я и забуксовал. Желательно, чтобы всю информацию можно было получать через WEB-интерфейс. Впринципе можно все и самому написать, но на это у Меня уйдет очень много времени, да и велосипед заново изобретать не хочется. Кто знает, какие пакеты для этого лучше использовать подскажите?
Спасибо сказали:
Аватара пользователя
stannum
Сообщения: 322
Статус: Свободолюбитель
ОС: Debian GNU/Linux unstable
Контактная информация:

Re: Шлюз на базе Linux

Сообщение stannum »

Serg79 писал(а):
28.02.2007 09:01
Теперь надо организовать на машине ведение статистики по всем подключениям к internet из упровляемой сети (192.168.219.0/24) (кто куда ходит и сколько уже накачал из инета).
Вот на этом месте я и забуксовал. Желательно, чтобы всю информацию можно было получать через WEB-интерфейс. Впринципе можно все и самому написать, но на это у Меня уйдет очень много времени, да и велосипед заново изобретать не хочется. Кто знает, какие пакеты для этого лучше использовать подскажите?

NeTAMS
Спасибо сказали:
Serg79
Сообщения: 153
Контактная информация:

Re: Шлюз на базе Linux

Сообщение Serg79 »

stannum писал(а):
28.02.2007 09:34
NeTAMS

Посмотрел, вроде бы то что нужно, спасибо.
Теперь попробую настроить данный пакет у себя.

P.S. кто знает еще чтото подобное, сообщите. Попробую также настроить и принять решение на чем остановаиться.
Спасибо сказали:
Ответить