Автор Тема: Линукс Терминал (школьный): как сделать....  (Прочитано 9544 раз)

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 984
    • Пошаговые инструкции
И теперь заклинание:
iptables -t nat -A OUTPUT -s 191.168.1.10 -p tcp --dport 80 -j DNAT --to 192.168.1.11:3128


-t, --table таблица
              Задаёт  таблицу,  к  которой  будет  применена  команда.   

nat:
                  Эта таблица используется, когда  встречается  пакет,  устанавливающий  новое  соединение.   Она
                  содержит три предопределённых цепочки:  OUTPUT (для  изменения локально сгенерированных пакетов перед их отправлением)

-A, --append цепочка определение-правила
              Добавить  одно  или  несколько  правил  в  конец указанной цепочки.

-s, --source [!] адрес
              Адрес источника.  Адресом может быть сетевое имя, имя хоста (не рекомендуем указывать имена хостов,  разрешаемые через запросы к удалённым DNS), диапазон IP-адресов (с маской через слэш) или одиночный  IP-адрес.

-p, --protocol [!] протокол
              Сетевой протокол применяемого правила или проверяемого  пакета.   Допустимые  значения:  tcp, 

DNAT
       Применяется только в таблице nat и цепочках PREROUTING , OUTPUT и вызываемых из них цепочках  определяемых  пользователем.   DNAT  (Destination  Network  Address  Translation) используется для преобразования адреса  места назначения в IP заголовке пакета.  Если пакет подпадает под критерий правила, выполняющего DNAT,  то  этот  пакет,  и  все  последующие  пакеты  из  этого  же  потока,  будут подвергнуты преобразованию адреса  назначения и переданы на требуемое устройство, хост или сеть. 

Сам iptables тоже должен быть включен
#chkconfig --list iptables
iptables        0:off   1:off   2:off   3:on    4:on    5:on    6:off


Все должно заработать.

Если не получается, попробуйте установить классический прозрачный прокси.

Может быть увидите в чем ошибались.
 
Завтра меня не будет, уезжаю на две недели. Сегодня еще отвечу.

Думаю, вы все спокойно попробуете и все получится.
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн German_Ivanov

  • Участник
  • *
  • Сообщений: 21
Сам iptables тоже должен быть включен

Ага! Оно!!! включить iptables я и забыл.

Цитировать
Все должно заработать.
Опять не получилось, но на этот раз уже по другому:
# chkconfig --level345 iptables on
# iptables -t nat -A OUTPUT -s 191.168.1.10 -p tcp --dport 80 -j DNAT --to 192.168.1.11:3128
# service iptables start
   iptables firewall is not configured

Таким образом реагируют оба компа (Desktop 4.1 и Терминал-Школьный)

Думаю, вы все спокойно попробуете и все получится.
Не проблема, на самом деле я спокоен как танк, просто я "живчик" по характеру и это чувствуется.


Кстати давно хотел спросить, аэто ничего что мы правим iptables вызовами service? Для нее же вроде придуманы конфиги в  /etc/net/ifaces/default/fw/iptables ? 



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

# iptables -t nat -A OUTPUT -s 191.168.1.10 -p tcp --dport 80 -j DNAT --to 192.168.1.11:3128
#service iptables save
Saving firewall rules to /etc/sysconfig/iptables:          [  OK  ]
# service iptables start
Я получил ответ -  Applying iptables firewall rules:    и ... комп вообще перестал видеть инет. Фаерфокс не видит ни одного сайта

« Последнее редактирование: 09.05.2009 13:19:44 от German_Ivanov »

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 984
    • Пошаговые инструкции
iptables -t nat -A OUTPUT -s 191.168.1.10 -p tcp --dport 80 -j DNAT --to 192.168.1.11:3128

так правило включается,

iptables -t nat -D OUTPUT -s 191.168.1.10 -p tcp --dport 80 -j DNAT --to 192.168.1.11:3128

так правило выключается , всего одна буква.
Это удобно для теста.

перегружать iptables  не надо, он читает сразу.
Включается сам при включении компьютера.

Алгоритм проверки простой:

Проверяем есть ли второй IP  адрес.

Проверяем работает ли sqiud  с нашими изменениями.

Включаем привило.

Правило работает так:
Все пакеты которые должны выйти с 192.168.1.10 по 80 порту, на самом деле сервер не покидают, а отправляются  на 192.168.1.11 порт 3128.
Поэтому выход в инет по 80 порту закрывается для всех.
Но мы до этого сказали squid ходить в инет через 192.168.1.11
Пока ухожу, но в сети еще буду.



Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн German_Ivanov

  • Участник
  • *
  • Сообщений: 21
Поэтому выход в инет по 80 порту закрывается для всех.
Но мы до этого сказали squid ходить в инет через 192.168.1.11
Пока ухожу, но в сети еще буду.

Фу! вроде запустилось. Решив что я что-то упускаю в алгоритме, взял и описал порядок действий  скриптом.

#
# /usr/local/firewall.sh
#
#!/bin/sh
# eth0  - смотрит в локальную сеть;
# eth1  - смотрит в мир;
echo
echo
echo
echo "=============== настраиваем фаерволл ================================"
echo
echo
echo
IPTABLES="/sbin/iptables"

ETH0_IP="192.168.0.1"
ETH0_NETWORK="192.168.0.0/24"

ETH1_IP="192.168.1.10"
ETH1a_IP="192.168.1.11"

#echo 0 > /proc/sys/net/ipv4/ip_forward

echo "Очищаем все правила и пользовательские цепочки в таблицах filter, nat и mangle"
$IPTABLES -t filter -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -t filter -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

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

echo $ETH1_IP/24 > /etc/net/ifaces/eth1/ipv4address
echo $ETH1a_IP/24 >> /etc/net/ifaces/eth1/ipv4address
service network restart
$IPTABLES -t nat -A OUTPUT -s $ETH1_IP -p tcp --dport 80 -j DNAT --to $ETH1a_IP:3128

rm -f /etc/squid/squid.conf
cp  "/etc/squid/squid.conf.3" "/etc/squid/squid.conf"
case  $1 in
  "nat")  echo "Добавить NAT"
  ;;
esac
#echo 1 > /proc/sys/net/ipv4/ip_forward
service iptables save
service iptables restart
service squid restart

Вроде на первый взгляд все запустилось.  :)

Цитировать
Алгоритм проверки простой:

я проверяю еще проще, у меня в kate открыт  /var/log/squid/access.log
как только сквад сработал (обновляю страничку в фаерфоксе) - файл изменяется,kate его подсвечивает.


Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 984
    • Пошаговые инструкции
Я не согласен с выкрутасами iptables  в скрипте. Там мне кажется, все неправильно, хотя, конечно и работает.
Есть инструкция NAT изнутри, там свою точку зрения изложил. Как вносить изменения, как включать и как сохранять.

Я рад, что заработало.
Инструкция оказалась правильной? Если что написано было непонятно, пишите. Учту для других пользователей.
Можете предложить свой вариант той или иной инструкции. Будет любопытно посмотреть.

Трудно написать понятно для всех, но польза от этого все-равно будет.Если будут у вас интересные решения. тоже пишите.
 
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн German_Ivanov

  • Участник
  • *
  • Сообщений: 21
Я не согласен с выкрутасами iptables  в скрипте. Там мне кажется, все неправильно, хотя, конечно и работает.

Дык это и есть та строчка которую вы давали. Я к ней лишь переменных добавил дабы легче было разбираться.
Цитировать
Инструкция оказалась правильной?
по всей видимости да, но похоже без service iptables save запущенного хотя бы единожды она бы не сработала (не стартовал iptables).


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


Цитировать
Если будут у вас интересные решения. тоже пишите.
ok.


ps: забыл приложить к предыдущему письму содержимое файла squid.conf.3

http_port 3128 transparent
tcp_outgoing_address 192.168.1.11

hierarchy_stoplist cgi-bin ?
cache_mem 8 MB
access_log /var/log/squid/access.log squid
coredump_dir /var/spool/squid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl CONNECT method CONNECT
acl TClients src 192.168.0.0/24
acl LocalServer src 192.168.1.10 192.168.1.11

http_access allow manager
http_access allow TClients
http_access allow LocalServer

http_access deny all


Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 984
    • Пошаговые инструкции
имхо имеет смысл давать не просто инструкции  а скрипты подобные тому что выше. у пользователя будет меньше возможностей для ошибки.

Посмотрите, может к некоторым моим инструкциям набросаете скрипты, хотя бы в черновую. Я поправлю  и проутюжу.
Может положим начало хорошему делу.
Через две недели приеду, посмотрю.
Удачи.
 
А тему, наверное можно считать решенной.
 
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"