Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
iptables -t nat –A POSTROUTING –s 192.168.100.0/24 –d 0/0 –j SNAT --to-source 207.46.249.27
Т.е. все адреса из частной сети 192.168.100.0 будут транслироваться в единственный реальный адрес 207.46.249.27. Но это не все. Созданные подобным образом правила сохраняются только в оперативной памяти и в случае перезагрузки сервера оказываются утерянными. Первое, что приходит в голову, – написать собственный сценарий и обеспечить его запуск во время старта системы, к примеру, поместив его (или ссылку на него) в каталог /etc/rc.d/rc3.d/. А заодно и в /etc/rc.d/rc5.d/. И в этом же сценарии разрешить, что тоже необходимо, перенаправление пакетов на другой сетевой интерфейс командой:
echo 1 > /proc/sys/net/ipv4/ip_forward
Примерно так я и сделал. Все заработало, но не покидало ощущение неправильности или, точнее, неизящности такого подхода. Пришлось подробнее ознакомиться с описанием iptables, где, среди прочего, упоминались два сценария: iptables-save и iptables-restore. Причем последний вызывался в сценарии /etc/rc.d/init.d/iptables. Как говорится в детской игре, стало «теплее». Последовало прочтение еще пары-тройки руководств – и все встало на свои места. Действительно, при старте системы скрипт /etc/rc.d/init.d/iptables пытается считать файл /etc/sysconfig/iptables и применить сохраненные в нем правила. Ровно то, что и требовалось. Осталось только сформировать этот самый /etc/sysconfig/iptables. Но запущенный без параметров iptables-save почему-то этот файл не создал и пришлось сделать это принудительно:
service iptables save
Осталось разрешить перенаправление пакетов. Здесь решение возникло в процессе просмотра log-файлов запуска и останова системы. Бросилось в глаза, что в них присутствует строка, содержащая примерно следующее: «sysctl: net.ipv4.ip_forward = 0». Т.е. при останове системы задача, обратная нашей, решается с помощью вызова команды sysctl, которая считывает предопределенные настройки из файла /etc/sysctl.conf. Исправляем в нем net.ipv4.ip_forward = 0 на net.ipv4.ip_forward = 1 и можно двигаться дальше.