The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"NAT на linux с одним сетевым интерфейсом"
Отправлено GaDiNa, 31-Мрт-09 12:42 
Коллеги !
Спасибо вам за ваши советы и предложения как лучше можно сделать в моем случае.
В будущем я обязательно все переделаю в другом виде. Как минимум добавлю второй интерфейс.
А сейчас я хочу разобраться именно в этой, текущей проблеме.

Мне кажеться картина совершенно прозрачная. Я уже описывал этот участок сети, попробую еще раз, другими словами и проще:
Есть свич, в него подключен ADSL модем (router mode), linux server (одна сетевуха - 192.168.0.2) и  несколько рабочих компов (локальная сеть). Сеть - 192.168.0.0/24
на linux стоит squid+статистика. Squid в прозрачном режиме.
Я хочу чтобы рабочие компы ходили в инет через linux сервер.
для этого на linux включена маршрутизация и добавлены правила iptables:

# vi /etc/iptables.sh
#!/bin/sh
PATH=/usr/sbin:/sbin:/bin:/usr/bin
# очистка старых правил
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
# Always accept the traffic on the loopback-interface
iptables -A INPUT -i lo -j ACCEPT

# принимать все пакеты со стороны локальной сети для выбранного IP
iptables -A FORWARD -s 192.168.0.112 -j ACCEPT

# доступ к pop3, smtp и https из локальной сети
iptables -A FORWARD -s 192.168.0.0/24 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -p tcp --dport 443 -j ACCEPT

# Закрыть доступ из локальной сети на все остальные порты
# ping
iptables -A FORWARD -s 192.168.0.0/24 -j REJECT

# Закрыть доступ из локальной сети для пакетов от сервиса Squid
# HTTP
#iptables -A INPUT -s 192.168.0.0/24 -j REJECT

# пример: полностью закрыть доступ в инет для 192.168.0.117
#iptables -A FORWARD -s 192.168.0.117 -d 0.0.0.0/0 -j REJECT
#iptables -A INPUT -s 192.168.0.117 -j REJECT

# ############### NAT ###############
# Masquerade.
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Or SNAT.
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source 192.168.0.2
# ###################################

#Redirect HTTP to SQUID
iptables -t nat -A PREROUTING -i eth0 -p tcp -d ! 192.168.0.2 --dport 80 -j REDIRECT --to-port 3128
# ###################################

Таким образом я получил на linux NAT + правило для пакетов с портом назначени = 80, которое заворачивает эти пакеты на локальный интерфейс:порт 3128б на котором слушает squid - локальный демон.
Правильно ? Или нет ?
Видимо не совсем правильно все написано, потому что с локальной сети не открывается один сайт по https. Ошибка в таймауте.
!НО! только я  убираю вот эту строку:

# Закрыть доступ из локальной сети на все остальные порты
# ping
iptables -A FORWARD -s 192.168.0.0/24 -j REJECT

сайт начинает работать ! Следовательно проблема не в том, что в цепочке ДВА NAT-а и не в редиректе на порт 3128 http запросов (это ведь https запрос и он, в случае, когда squid работает в прозрачном (transparent)режиме, проходит через NAT, а не через squid)
Проблема в чем то другом...  наверно когда я убираю эту строку - я открываю полный доступ через NAT для всей сети, и при этом какие-то "пакетики" от компа на котором открывается неработающий https сайт пропускаются в инет и все работает.

но я НЕ хочу, чтобы у локальных компов был ПОЛНЫЙ доступ к инету через этот NAT.
поэтому я снова добавляю строку

# Закрыть доступ из локальной сети на все остальные порты
# ping
iptables -A FORWARD -s 192.168.0.0/24 -j REJECT

и пытаюсь открыть ПОЛНЫЙ доступ только для отдельного IP-адреса, скажем 192.168.0.112

# принимать все пакеты со стороны локальной сети для выбранного IP
iptables -A FORWARD -s 192.168.0.112 -j ACCEPT

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

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру