С давним пор привык для "прибития" Lotus Notes использовать утилитку killnotes.exe
Но как-то наткнулся на прекрасную альтернативу внутри самого клиента - утилита NSD, которая служит для диагностики сбоев клиента.
просто запускаем её как "nsd.exe -kill" и готово - клиент прибит, библиотеки выгружены, в общем всё согласно документации:
"Runs NSD in a special mode that kills all Notes/Domino processes in the current "partition" (i.e. all processes that are accessing Notes shared memory and that are running from the same location as NSD). Output is limited to process lists (OS Process Table, and Notes Process Summary) and to status messages about the processes NSD forcefully terminated. The output log file follows the naming convention of kill_os_hostname_yyyy_mm_dd@hh_mm_ss.log and is saved to the data\IBM_TECHNICAL_SUPPORT directory."
ЗЫ: Если на рабочей станции запущен не только клиент Lotus Notes, но и сервер Lotus Domino, то сервер остаётся нетронутым.
ЗЫЫ: документация по NSD получается через "nsd.exe -help" :)
Показаны сообщения с ярлыком Administration (администрирование). Показать все сообщения
Показаны сообщения с ярлыком Administration (администрирование). Показать все сообщения
четверг, марта 7
вторник, августа 21
[UPDATE] Debian. установка mysql server
Решил чуток обновить пост
1) устанавливаем сервер MySQL
2) Выполняем bash-скрипт (исходник) с правами root. При выполнении запросится пароль от root-пользователя MySQL.
Скрипт избавляет нас от ошибки "Access denied for user ‘debian-sys-maint’@'localhost" и устанавливает кодировку UTF-8 по умолчанию
1) устанавливаем сервер MySQL
#apt-get install mysql-client mysql-server
2) Выполняем bash-скрипт (исходник) с правами root. При выполнении запросится пароль от root-пользователя MySQL.
Скрипт избавляет нас от ошибки "Access denied for user ‘debian-sys-maint’@'localhost" и устанавливает кодировку UTF-8 по умолчанию
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
понедельник, мая 21
Linux tips. консолька и mkdir
Вот за что я люблю линуха, так это за то, что тут можно вытворять вот такие вот штуки:
результатом данной команды будут созданы директории:
# mkdir -p domain/{tmp,vhosts/{www,fish}/{public,php}}
результатом данной команды будут созданы директории:
domain/tmp domain/vhosts/www/public domain/vhosts/www/php domain/vhosts/fish/public domain/vhosts/fish/php
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
четверг, января 5
менеджер пакетов dpkg и немного awk
Маленькая строчка, но очень полезная в "быту":
[purge|remove] - команда на выш выбор.
Для чего нужна? Чтобы удалить большой (более 1-го ;) ) список пакетов из системы по фильтру %ЧТО_ИЩЕМ%.
последний раз столкнулся, когда у меня zend-server не захотел устанавливаться из репозитария. да и удаляться тоже не пожелал - ругался и требовал, чтобы я выполнил "apt-get -f install", в котором он тоже только ругался на зависимости. Пришлось "прибивать" пакеты вручную через dpkg, исправлять зависимости и заново устанавливать zend-server :)
sudo dpkg --get-selections | grep %ЧТО_ИЩЕМ% | awk '{print $1}' - | sudo xargs dpkg --[purge|remove]
[purge|remove] - команда на выш выбор.
Для чего нужна? Чтобы удалить большой (более 1-го ;) ) список пакетов из системы по фильтру %ЧТО_ИЩЕМ%.
последний раз столкнулся, когда у меня zend-server не захотел устанавливаться из репозитария. да и удаляться тоже не пожелал - ругался и требовал, чтобы я выполнил "apt-get -f install", в котором он тоже только ругался на зависимости. Пришлось "прибивать" пакеты вручную через dpkg, исправлять зависимости и заново устанавливать zend-server :)
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
с CentOS на Debian. iptables (обновленное)
ранее я уже писал про использование правил iptables в Debian-based операционках. в комментариях неизвестный подсказал удобное и, пожалуй, более правильное решение - прописывание напрямую скрипта загрузки в /etc/network/interfaces.
Итак, что нам понадобится:
1) установленный пакет iptables (проверить можно через "sudo dpkg -s iptables | grep -i status")
2) ваш прежний скрипт-файл правил (у меня он называется iptables.sh)
Проверяем и, если данное правило отсутствует, то добавляем в файл /etc/network/interfaces для нужного сетевого интерфейса (например для eth0):
ЗЫ: у меня оно было прописано для интерфейса eth0 как "post-up ..." - заменил на "pre-up ..."
теперь наш скрипт iptables.sh работает как и прежде - выполняем, проверяем, сохраняем.
Итак, что нам понадобится:
1) установленный пакет iptables (проверить можно через "sudo dpkg -s iptables | grep -i status")
2) ваш прежний скрипт-файл правил (у меня он называется iptables.sh)
Проверяем и, если данное правило отсутствует, то добавляем в файл /etc/network/interfaces для нужного сетевого интерфейса (например для eth0):
pre-up iptables-restore < /etc/iptables.up.rules
ЗЫ: у меня оно было прописано для интерфейса eth0 как "post-up ..." - заменил на "pre-up ..."
теперь наш скрипт iptables.sh работает как и прежде - выполняем, проверяем, сохраняем.
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
пятница, июля 22
вышел Notes/Domino 8.5.2 Fix Packs 3
а 18-го числа сего месяца IBM выпустила фикспак, почитать про который можно тут, а скачать тут.
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
понедельник, марта 14
Lotus Domino & java.policy
мелкие баги бывают такие разные и противные...
вот например, стабильно в консоли получал на любой "чих" ошибку "error: java.security.AccessControlException: Access denied (java.lang.RuntimePermission setContextClassLoader)"
Перековырял всё, а ошибка всё не уходит...
В какой-то момент осенило - проблема может быть не в нехватке прав, а в самом проблемном файле java.policy. Беру "эталонный" файлик с другого сервера, подставляю и вуаля - всё работает!
беглый анализ произошедшего нашел и виновника возникшей оказии: сервер расположен на Windows, файлик правился из Linux, в итоге в файле образовались иные "переносы строк" - вот на этом IBM JDK и запнулась и перестала и вовсе читать конфигурацию. А внешне файл выглядел нормально что в Windows (блокнот), что в Linux
вот например, стабильно в консоли получал на любой "чих" ошибку "error: java.security.AccessControlException: Access denied (java.lang.RuntimePermission setContextClassLoader)"
Перековырял всё, а ошибка всё не уходит...
В какой-то момент осенило - проблема может быть не в нехватке прав, а в самом проблемном файле java.policy. Беру "эталонный" файлик с другого сервера, подставляю и вуаля - всё работает!
беглый анализ произошедшего нашел и виновника возникшей оказии: сервер расположен на Windows, файлик правился из Linux, в итоге в файле образовались иные "переносы строк" - вот на этом IBM JDK и запнулась и перестала и вовсе читать конфигурацию. А внешне файл выглядел нормально что в Windows (блокнот), что в Linux
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
воскресенье, января 30
SSH и шифрованный known_hosts
Какое-то время "ругался" на то, что в Ubuntu файл known_hosts по-умолчанию шифрует имена доменов - любил совмещать строчки, когда несколько доменов на одном IP, ибо было удобно (хотя и крайне редко требовалось) обновлять ключ.
А тут наткнулся на такую же "проблему" и на её решение через команду и мои "проблемы" сняло как рукой :)
В общем, что мы вокруг да около.
Для того, чтобы удалить из known_hosts устаревший ключ, выполняем команду "ssh-keygen -R host_name|IP", после чего повторно пробуем зайти на удалённый сервер.
там же, есть ссылка на интересную статью Максима Коновалова с писанием поддержки отпечатков SSH в DNS (RFC-4255).
А тут наткнулся на такую же "проблему" и на её решение через команду и мои "проблемы" сняло как рукой :)
В общем, что мы вокруг да около.
Для того, чтобы удалить из known_hosts устаревший ключ, выполняем команду "ssh-keygen -R host_name|IP", после чего повторно пробуем зайти на удалённый сервер.
там же, есть ссылка на интересную статью Максима Коновалова с писанием поддержки отпечатков SSH в DNS (RFC-4255).
четверг, декабря 30
Tomcat и JSESSIONID
Для того, чтобы изменить имя переменной сессии с "JSESSIONID" на, к примеру, "SID", достаточно в файле $CATALINA_HOME/bin/setenv.sh прописать следующую строчку:
ЗЫ: не забудьте перезапустить Tomcat
ЗЫЫ: в браузерах с залогиненными пользователями кука JSESSIONID не переименуется :) Просто добавится ещё одна с тем же значением
JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.SESSION_COOKIE_NAME=SID -Dorg.apache.catalina.SESSION_PARAMETER_NAME=sid"
ЗЫ: не забудьте перезапустить Tomcat
ЗЫЫ: в браузерах с залогиненными пользователями кука JSESSIONID не переименуется :) Просто добавится ещё одна с тем же значением
пятница, декабря 10
Tomcat и виртуальный хостинг. часть 2: добавление виртуального хоста
Ранее мы настроили связку Nginx+Tomcat для хостинга. Давайте теперь добавим виртуальный домен example.org
Шаг 1: настраиваем nginx
создаём файл /srv/nginx/vhost_01_example.org.conf:
Теперь вы можете выполнить команду "service nginx reload" и, открыв в браузере адрес http://example.org, увидеть домашнюю Tomcat-страницу
Шаг2: настраиваем Tomcat
правим server.xml, добавляя новые строки:
Теперь нужно настроить пользователя для менеджера виртуального хоста.
Добавим нового пользователя manager-example.org с новой одноимённой ролью в /srv/tomcat/conf/tomcat-users.xml:
Перезапускаем томкат:
Открываем в браузере адрес http://example.org/manager/html и на запрос авторизации вводим логин/пароль для пользователя manager-example.org.
На этом базовая настройка виртуального хоста example.org завершена.
Шаг 1: настраиваем nginx
создаём файл /srv/nginx/vhost_01_example.org.conf:
server { listen 80; server_name example.org *.example.org location / { proxy_pass http://127.0.0.1:8080; include /srv/nginx/proxy.conf; } }
Теперь вы можете выполнить команду "service nginx reload" и, открыв в браузере адрес http://example.org, увидеть домашнюю Tomcat-страницу
Шаг2: настраиваем Tomcat
# cd /srv/tomcat
# mkdir webapps/example.org
# sed -e 's/localhost/example\.org/g' conf/server.d/vhost-localhost.xml > conf/server.d/vhost-example.org.xml
правим server.xml, добавляя новые строки:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE server-xml [ <!ENTITY vhost-localhost SYSTEM "server.d/vhost-localhost.xml"> <!ENTITY vhost-example.org SYSTEM "server.d/vhost-example.org.xml"> ]> ... &vhost-localhost; &vhost-example.org; </Engine> ...
Теперь нужно настроить пользователя для менеджера виртуального хоста.
Добавим нового пользователя manager-example.org с новой одноимённой ролью в /srv/tomcat/conf/tomcat-users.xml:
<role rolename="manager-example.org" />и внесём изменения в конфигурационный файл Manager-приложения:
<user username="manager-example.org" password="12345678" roles="manager-example.org" /&rt;
# cp -R webapps/localhost/manager webapps/example.org/
# cd webapps/example.org/manager/WEB-INF
# sed -i.bak 's/<role-name>manager<\/role-name>/<role-name>manager-example.org<\/role-name>/g' web.xml
Перезапускаем томкат:
# chown -R tomcat:tomcat /srv/tomcat
# service tomcat6 stop
# tail -f /srv/tomcat/logs/catalina.out ;Ждём остановки Tomcat и жмём Ctrl+C
# service tomcat6 start
Открываем в браузере адрес http://example.org/manager/html и на запрос авторизации вводим логин/пароль для пользователя manager-example.org.
На этом базовая настройка виртуального хоста example.org завершена.
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
Tomcat и виртуальный хостинг. часть 1: связка Nginx + Tomcat
Рано или поздно приходишь к тому, что на сервере Tomcat хочется держать не только один сайт. можно конечно же разные сайты делить за тем же Nginx по запросам к подкаталогу "/domain-name", но правильнее будет сделать разнесение по виртуальным хостам. ещё правильнее - разнести "клиентов" ещё и по разным инстансам tomcat (чтобы они "соседей" не "завалили"), но это покажу как-нибудь в другой серии постов.
Итак, наша задача - настройка Tomcat на работу с виртуальными хостами
С чего мы начнём? с базового задела Tomcat под поставленную задачу - со связки Nginx+Tomcat (помимо плюсов самого Nginx, нам не придётся думать об уровне доступа Tomcat для прослушки 80-го порта)
Настройка производится на сервере CentOS 5.5 (но думаю, что и на других версиях не будет отличий ;) ). Так же на сервере должен быть открыт 80-й порт
Устанавливаем nginx "по умолчанию":
создаём каталог /srv/nginx и меняем ему владельца и группу на nginx (в этом каталоге мы будем хранить настройки виртуальных хостов для nginx):
правим файл /etc/nginx/conf.d/virtual.conf
создаём файл /srv/nginx/proxy.conf со следующим содержимым:
это общие настройки для всех виртуальных хостов. В последующем можно будет дописать или поправить его содержимое.
создаём хост "по-умолчанию", для этого создаём файл /srv/nginx/vhost_00_default.conf:
Теперь переходим к базовой установке и настройке Tomcat
Скачиваем и распаковываем дистрибутив Apache Tomcat (повествую на примере версии 6.x)
для запуска демона Tomcat от пользователя tomcat можно скомпилировать jsvc, но мне больше нравится нижеприведённый скрипт /etc/init.d/tomcat6:
Теперь переходим к небольшому "тюнингу" Tomcat, для дальнейшего удобства его администрирования
Для начала, поправим файл /srv/tomcat/conf/server.xml (далее просто server.xml) для работы с Nginx. Для этого найдём
Перейдём к настройке хостов.
удобнее всего править настройки хостов не выискивая их в "портянке" файла server.xml, а вынеся настройки каждого хоста в отдельный файл. Для этого произведём некоторые изменения в файле server.xml
изменяем "шапку" файла, дописав блок DOCTYPE:
создадим подкаталог server.d, в котором будут лежать конфигурационные файлы наших виртуальных хостов:
Вынесем в отдельный файл настройки для localhost... Для этого найдём в server.xml блок "<Host>...</Host>" и сохраним его в server.d/vhost-localhost.xml:
Для работы Tomcat требуется установленная на сервере Java-машина. Путь до неё прописывается в файле /srv/tomcat/bin/setenv.sh:
Следующий наш шаг - настройка каталога webapps для будущих виртуальных каталогов
и заваршающее действие:
Готово. теперь можно запускать созданный web-сервер:
Зайдите в браузере по адресу http://ваш_сервер - вы должны увидеть Tomcat-страницу по-умолчанию.
Если всё правильно настроено и вы увидели страницу Tomcat, то можно установить автозапуск для демонов:
ЗЫ: комментарии и замечания приветствуются :)
UPD: изменил немного скрипты - местами удалил "ручную" работу и описал для Tomcat 6 вместо Tomcat 7
Итак, наша задача - настройка Tomcat на работу с виртуальными хостами
С чего мы начнём? с базового задела Tomcat под поставленную задачу - со связки Nginx+Tomcat (помимо плюсов самого Nginx, нам не придётся думать об уровне доступа Tomcat для прослушки 80-го порта)
Настройка производится на сервере CentOS 5.5 (но думаю, что и на других версиях не будет отличий ;) ). Так же на сервере должен быть открыт 80-й порт
Устанавливаем nginx "по умолчанию":
# yum install nginx
создаём каталог /srv/nginx и меняем ему владельца и группу на nginx (в этом каталоге мы будем хранить настройки виртуальных хостов для nginx):
# mkdir -p /srv/nginx
# chown nginx:nginx /srv/nginx
правим файл /etc/nginx/conf.d/virtual.conf
# mv /etc/nginx/conf.d/virtual.conf /etc/nginx/conf.d/virtual.conf.orign
# echo "include /srv/nginx/vhost_*.conf;" > /etc/nginx/conf.d/virtual.conf
создаём файл /srv/nginx/proxy.conf со следующим содержимым:
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
это общие настройки для всех виртуальных хостов. В последующем можно будет дописать или поправить его содержимое.
создаём хост "по-умолчанию", для этого создаём файл /srv/nginx/vhost_00_default.conf:
server { listen 80 default; location / { proxy_pass http://127.0.0.1:8080; include /srv/nginx/proxy.conf; } }
Теперь переходим к базовой установке и настройке Tomcat
Скачиваем и распаковываем дистрибутив Apache Tomcat (повествую на примере версии 6.x)
# cd /srv
# wget http://www.sai.msu.su/apache/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.tar.gz
# tar xvf apache-tomcat-6.0.29.tar.gz
# mv apache-tomcat-6.0.29 tomcat
# useradd -d /srv/tomcat -s "/sbin/nologin" tomcat
для запуска демона Tomcat от пользователя tomcat можно скомпилировать jsvc, но мне больше нравится нижеприведённый скрипт /etc/init.d/tomcat6:
#!/bin/sh # # /etc/init.d/tomcat6 # # This is the init script for starting up the # Jakarta Tomcat Server # # chkconfig: 234 20 80 # description: Starts and stops the Tomcat daemon # processname: tomcat # # source functions library for 'daemon' function . /etc/init.d/functions TOMCAT_HOME=/srv/tomcat TOMCAT_START=$TOMCAT_HOME/bin/startup.sh TOMCAT_STOP=$TOMCAT_HOME/bin/shutdown.sh TOMCAT_USER=tomcat start() { echo -n $"Starting Tomcat service: " daemon --user $TOMCAT_USER $TOMCAT_START RETURN_CODE=$? echo $? } stop() { echo -n $"Stopping Tomcat service: " daemon --user $TOMCAT_USER $TOMCAT_STOP RETURN_CODE=$? echo $? } status() { ps aux | grep tomcat | grep -v grep } # Handle the different input options case "$1" in start) start ;; stop) stop ;; status) status ;; *) echo $"Usage: $0 {start|stop|status}" exit 1 esac exit 0
Теперь переходим к небольшому "тюнингу" Tomcat, для дальнейшего удобства его администрирования
Для начала, поправим файл /srv/tomcat/conf/server.xml (далее просто server.xml) для работы с Nginx. Для этого найдём
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" />и заменим её на
<Connector address="127.0.0.1" port="8080" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" />тем самым мы укажем Tomcat, чтобы он слушал порт 8080 только локально
Перейдём к настройке хостов.
удобнее всего править настройки хостов не выискивая их в "портянке" файла server.xml, а вынеся настройки каждого хоста в отдельный файл. Для этого произведём некоторые изменения в файле server.xml
изменяем "шапку" файла, дописав блок DOCTYPE:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE server-xml [ <!ENTITY vhost-localhost SYSTEM "server.d/vhost-localhost.xml"> ]>
создадим подкаталог server.d, в котором будут лежать конфигурационные файлы наших виртуальных хостов:
# cd /srv/tomcat/conf
# mkdir server.d
Вынесем в отдельный файл настройки для localhost... Для этого найдём в server.xml блок "<Host>...</Host>" и сохраним его в server.d/vhost-localhost.xml:
# cd /srv/tomcat/conf
# echo "<?xml version='1.0' encoding='utf-8'?>" > server.d/vhost-localhost.xml
# sed -n -e '/[[:space:]]*<Host.*/,/[[:space:]]<\/Host>/p' server.xml >> server.d/vhost-localhost.xml
# sed -i.bak -n '1h;1!H;${x;s/<Host.*<\/Host>/\&vhost-localhost;/;p}' server.xml
Для работы Tomcat требуется установленная на сервере Java-машина. Путь до неё прописывается в файле /srv/tomcat/bin/setenv.sh:
# echo "JAVA_HOME=/usr/java/default" > /srv/tomcat/bin/setenv.sh
Следующий наш шаг - настройка каталога webapps для будущих виртуальных каталогов
# cd /srv/tomcat
# sed -i 's/webapps/webapps\/localhost/' conf/server.d/vhost-localhost.xml
# mv webapps localhost
# mkdir webapps
# mv localhost webapps/
и заваршающее действие:
# chown -R tomcat:tomcat /srv/tomcat
Готово. теперь можно запускать созданный web-сервер:
# service tomcat6 start
# service nginx start
Зайдите в браузере по адресу http://ваш_сервер - вы должны увидеть Tomcat-страницу по-умолчанию.
Если всё правильно настроено и вы увидели страницу Tomcat, то можно установить автозапуск для демонов:
# chkconfig nginx on
# chkconfig --add tomcat6
# chkconfig tomcat6 on
ЗЫ: комментарии и замечания приветствуются :)
UPD: изменил немного скрипты - местами удалил "ручную" работу и описал для Tomcat 6 вместо Tomcat 7
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
суббота, ноября 13
Debian. mysql server
статья устарела. обновленная версия тут
Сразу после установки настраиваемся на utf8 и удаляем ошибку при запуске демона:
1) устанавливаем сервер MySQL
apt-get install mysql-server
2) удаляем ошибку "Access denied for user ‘debian-sys-maint’@'localhost" (решение найдено тут)
открываем файл /etc/mysql/debian.cnf и находим строчку password:
password = bla-bla-bla
в клиенте mysql выполняем команду
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '%password%' WITH GRANT OPTION; # вставляем вместо %password% "подсмотренный" пароль.
3) устанавливаем кодировку utf8 по умолчанию
в файле /etc/mysql/my.cnf добавляем строки для каждого блока []:
[client]
default-character-set = utf8
[mysqld_safe]
default-character-set = utf8
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = "set names utf8;"
[mysqldump]
default-character-set = utf8
4) перезапускаем сервер MySQL
5) заходим клиентом и на команду "mysql> show variables like "%character%";show variables like "%collation%";" видим нечто подобное:
mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
четверг, ноября 11
Debian. timezone
Для настройки временной зоны и синхронизации,
подсмотрено тут
- "apt-get install ntp ntpdate" - ставим NTP демона для синхронизации
- "ntpdate -bs ru.pool.ntp.org" - синхронизируем часы
- "dpkg-reconfigure tzdata" - выставляем нужную нам временную зону, например Europe/Moscow
подсмотрено тут
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
с CentOS на Debian. iptables
Решил перебраться на сервере с CentOS на Debian
Первое "неудобство", с которым столкнулся, это отсутствие, ставших уже привычными, скриптов восстановления правил для iptables.
Поиск в инете можно сделать и найти вагон и маленькую тележку информации, что в Debian всё убрано и что нужно всё прописывать ручками в интерфейсах и прочее... а можно просто глянуть результат команды "apt-cache search iptables" и увидеть пакет iptables-persistent (как поставить из тестовой ветки)... вот он то нам и нужен
устанавливаем пакет командой "apt-get install iptables-persistent"
теперь у нас есть скрипт /etc/init.d/iptables-persistent, который и будет восстанавливать правила после запуска системы.
А сами правила теперь вместо /etc/sysconfig/iptables лежат в /etc/iptables/rules
соответственно, после тестирования правил, сохраняемся по команде "iptables-save > /etc/iptables/rules".
В остальном больше никаких изменений нет - у меня прекрасно заработал всё тот же мой скрипт iptables.sh
Первое "неудобство", с которым столкнулся, это отсутствие, ставших уже привычными, скриптов восстановления правил для iptables.
Поиск в инете можно сделать и найти вагон и маленькую тележку информации, что в Debian всё убрано и что нужно всё прописывать ручками в интерфейсах и прочее... а можно просто глянуть результат команды "apt-cache search iptables" и увидеть пакет iptables-persistent (как поставить из тестовой ветки)... вот он то нам и нужен
устанавливаем пакет командой "apt-get install iptables-persistent"
теперь у нас есть скрипт /etc/init.d/iptables-persistent, который и будет восстанавливать правила после запуска системы.
А сами правила теперь вместо /etc/sysconfig/iptables лежат в /etc/iptables/rules
соответственно, после тестирования правил, сохраняемся по команде "iptables-save > /etc/iptables/rules".
В остальном больше никаких изменений нет - у меня прекрасно заработал всё тот же мой скрипт iptables.sh
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
суббота, августа 21
NAT & iptables в Linux (CentOS)
несколько часов убились мною и моим коллегой "по цеху" на поиск решения "да что за нафиг такой?" :)
преамбула:
на сервере используется скрипт iptables.sh, который описывает правила для iptables. дело нехитрое - поправил правила, запустил, проверил работу и, если всё тип-топ, то сохранил правила.
В скрипте описание довольно нехитрое: очистили все правила маршрутизации и воссоздали их по новой.
Всё казалось бы просто, до тех пор, пока не столкнулись с nat-маршрутизацией :)
правила сбрасывались следующими строчками в скрипте:
в том же скрипте когда-то была настройка на переброс порта с 80 на 8080, от которой по некоторым соображениям, было решено отказаться.
дело не хитрое - заремили нужную строку и выполнили скрипт.
и, как говорится, "скоро сказка сказывается, да не скоро дело делается" - НЕ ПАШЕТ.
снова смотрим скрипт - всё верно. сохраняем правила, перегружаем сервер на всякий, что должно как минимум сбросить нам все правила и реанимировать их из сохраняшки. ага, щаз...
в общем, пока суд да дело, было найдено решение - в блок сброса таблицы маршрутизации требуется дописать отдельное правило для сброса именно nat-маршрутов:
после чего, весь блок сброса приобретает вид:
ЗЫ: подумалось, что это ведь довольно неплохая задачка для вопроса на собеседовании :)
преамбула:
на сервере используется скрипт iptables.sh, который описывает правила для iptables. дело нехитрое - поправил правила, запустил, проверил работу и, если всё тип-топ, то сохранил правила.
В скрипте описание довольно нехитрое: очистили все правила маршрутизации и воссоздали их по новой.
Всё казалось бы просто, до тех пор, пока не столкнулись с nat-маршрутизацией :)
правила сбрасывались следующими строчками в скрипте:
$IPTABLES -F, где $IPTABLES - путь до приложения (IPTABLES="/sbin/iptables")
$IPTABLES -X
в том же скрипте когда-то была настройка на переброс порта с 80 на 8080, от которой по некоторым соображениям, было решено отказаться.
дело не хитрое - заремили нужную строку и выполнили скрипт.
и, как говорится, "скоро сказка сказывается, да не скоро дело делается" - НЕ ПАШЕТ.
снова смотрим скрипт - всё верно. сохраняем правила, перегружаем сервер на всякий, что должно как минимум сбросить нам все правила и реанимировать их из сохраняшки. ага, щаз...
в общем, пока суд да дело, было найдено решение - в блок сброса таблицы маршрутизации требуется дописать отдельное правило для сброса именно nat-маршрутов:
$IPTABLES -t nat -F
после чего, весь блок сброса приобретает вид:
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -F
ЗЫ: подумалось, что это ведь довольно неплохая задачка для вопроса на собеседовании :)
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
Подписаться на:
Сообщения (Atom)