LINUX.ORG.RU

Сообщения Liber

 

Проблема с распаковкой многотомного zip архива

Форум — Admin

Под виндой сделал многотомный zip архив утилитой WinRar. Получился ворох файлов *.zXX, где XX от 01 до ...

Закатал на debian и столкнулся с тем, что никак не могу его откупорить. Как я понял, сам формат ZIP многотомность не поддерживает, и это выверт чисто самого WinRar'а... При помощи unzip распаковать не получилось, p7zip ругается, что неизвестный суффикс.

Попробовал склеить все тома в один файл cat'ом и потом распаковать. При распаковке куча ошибок «bad zipfile offset» (видимо, WinRar не просто кромсает архив на куски).

Прошу помощи, ведь по любому кто-то с такой же проблемой сталкивался.

P.S. перекачивать заново будет ооочень долго...

Спасибо!

Liber
()

Не получается настроить IPsec/L2TP сервер

Форум — Admin

ОС: Debian Squeeze.

Схема сети такая:
LAN: 192.168.129.0/24
WAN: 172.20.75.0/24 (плюс еще несколько сетей через маршрутизатор прова)
INET: L2TP-сервер в сети прова

Надо настроить так, чтобы клиенты могли подключаться из WAN и INET.

Использовал связку openswan+xl2tpd. Во-первых, я нуб, а по ним в гугле нашлось немало статей. Во-вторых, xl2tpd уже стоит (инет подключен через него). Ну и потому что нужно, чтобы к VPN могли подключаться виндовые клиенты.

Перечитал кучу статей и манов, но видимо все-таки что-то упускаю... Не взлетает!

При помощи openSSL создал CA, подписал им сертификаты для сервера и клиентов. CA, сертификат и ключ сервера скормил openswan. На клиентской машине (win7) .p12 версия сертификата тоже установлена через остнастку mmc.

/etc/ipsec.conf:
(Большая часть взята из /etc/ipsec.d/examples/l2tp-cert.conf)

version	2.0	# conforms to second version of ipsec.conf specification

# basic configuration
config setup
	# NAT-TRAVERSAL support, see README.NAT-Traversal
	nat_traversal=yes
	# exclude networks used on server side by adding %v4:!a.b.c.0/24
	#default: virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
	virtual_private=%v4:192.168.0.0/16
	# OE is now off by default. Uncomment and change to on, to enable.
	oe=off
	# which IPsec stack to use. auto will try netkey, then klips then mast
	protostack=netkey

conn home
	# Use a certificate. Disable Perfect Forward Secrecy.
	#
	authby=rsasig
	pfs=no
	auto=add
	# we cannot rekey for %any, let client rekey
	rekey=no
	# Set ikelifetime and keylife to same defaults windows has
	ikelifetime=8h
	keylife=1h
	# l2tp-over-ipsec is transport mode
	# See http://bugs.xelerance.com/view.php?id=466
	type=transport
	#
	keyingtries=1
        #compress=yes
        disablearrivalcheck=no
	#
	left=%ppp0
	leftid=%fromcert
	leftrsasigkey=%cert
	leftcert=/etc/ipsec.d/certs/ipsec-server.home.pem
	leftprotoport=17/1701
	#
	# The remote user.
	#
	right=%any
	rightca=%same
	rightrsasigkey=%cert
	# Using the magic port of "0" means "any one single port". This is
	# a work around required for Apple OSX clients that use a randomly
	# high port, but propose "0" instead of their port. If that does
	# not work, try 17/%any
	rightprotoport=17/%any
	rightsubnet=vhost:%priv,%no

В /var/lib/openswan/ipsec.secrets.inc PEM pass к ключу от сертификата сервера тоже прописан.

Кстати, почему-то ipsec на запускается при старте системы. Приходится принудительно запускать через init.d.

Вот лог старта ipsec:

Mar 18 00:59:47 debsrv ipsec_setup: Starting Openswan IPsec U2.6.28/K2.6.32-5-686...
Mar 18 00:59:47 debsrv ipsec_setup: Using NETKEY(XFRM) stack
Mar 18 00:59:47 debsrv ipsec_setup: ...Openswan IPsec started
Mar 18 00:59:47 debsrv ipsec__plutorun: adjusting ipsec.d to /etc/ipsec.d
Mar 18 00:59:47 debsrv ipsec__plutorun: 002 loading certificate from /etc/ipsec.d/certs/ipsec-server.home.pem
Mar 18 00:59:47 debsrv ipsec__plutorun: 002   loaded host cert file '/etc/ipsec.d/certs/ipsec-server.home.pem' (3614 bytes)
Mar 18 00:59:47 debsrv ipsec__plutorun: 002   no subjectAltName matches ID '%fromcert', replaced by subject DN
Mar 18 00:59:47 debsrv ipsec__plutorun: 002 added connection description "home"
Mar 18 00:59:47 debsrv ipsec__plutorun: 003 NAT-Traversal: Trying new style NAT-T
Mar 18 00:59:47 debsrv ipsec__plutorun: 003 NAT-Traversal: ESPINUDP(1) setup failed for new style NAT-T family IPv4 (errno=19)
Mar 18 00:59:47 debsrv ipsec__plutorun: 003 NAT-Traversal: Trying old style NAT-T

Теперь к xl2tpd.

/etc/xl2tpd/xl2tpd.conf:

[global]
 port = 1701
; auth file = /etc/xl2tpd/l2tp-secrets 	;
 access control = no
 rand source = dev

[lns home-l2tp]
ip range = 192.168.130.240-192.168.130.250
local ip = 192.168.130.5
require chap = yes
refuse pap = yes
require authentication = no
name = home-l2tp
ppp debug = yes
pppoptfile = /etc/ppp/options.home.l2tp
length bit = yes
flow bit = yes
access control = no поставлен во время отладки, чтобы снизить число вариантов отказа сервера клиенту.

ip range, local ip - пробовал ставить IP LAN-подсети (не занятые, local ip - IP маршрутизатора тоже пытался) - эффекта ноль.

/etc/ppp/options.home.l2tp:

lock
noauth
debug
# logfile /var/log/xl2tpd.log
mtu 1440
mru 1440
lcp-echo-failure 8
lcp-echo-interval 3
nodeflate
nomppe
noproxyarp
Если раскомментировать сторочку logfile, то в daemon.log, syslog отчеты перестают появляться, а xl2tpd.log нет как нет... MTU INET интерфейса - 1460.

/etc/xl2tpd/l2tp-secrets оставлен дефолтным.

/etc/ppp/chap-secrets:

user home-l2tp       pass  *
Астериск вместо home-l2tp тож пытался ставить... без толку!

Что касается настройки файервола, то специально добавлял через iptables правила, логирующие ВСЕ пакеты, а потом парсил полученный лог при помощи grep «IP_клиента». Ни одного пакета не дропается...

В итоге:

При попытке подключения у клиента выскакивает ошибка 651 (модем сообщил об ошибке...). В daemon.log при этом падали такие сообщения:

Mar 18 00:14:02 debsrv xl2tpd[12525]: control_finish: Denied connection to unauthorized peer 92.37.202.230
Mar 18 00:14:02 debsrv xl2tpd[12525]: Connection 29 closed to 92.37.202.230, port 1701 (No Authorization)
Mar 18 00:14:02 debsrv xl2tpd[12525]: check_control: Received out of order control packet on tunnel -1 (got 1, expected 0)
Mar 18 00:14:02 debsrv xl2tpd[12525]: handle_packet: bad control packet!
Mar 18 00:14:07 debsrv xl2tpd[12525]: Unable to deliver closing message for tunnel 8674. Destroying anyway.

После того, как сделал MTU LNS меньше, чем MTU INET-интерфейса, логи изменились вот таким образом:

Mar 18 00:14:02 debsrv xl2tpd[12525]: control_finish: Denied connection to unauthorized peer 92.37.202.230
Mar 18 00:14:02 debsrv xl2tpd[12525]: Connection 29 closed to 92.37.202.230, port 1701 (No Authorization)
Mar 18 00:14:02 debsrv xl2tpd[12525]: check_control: Received out of order control packet on tunnel -1 (got 1, expected 0)
Mar 18 00:14:02 debsrv xl2tpd[12525]: handle_packet: bad control packet!
Mar 18 00:14:04 debsrv xl2tpd[12525]: udp_xmit failed with err=-1:Operation not permitted
Mar 18 00:14:05 debsrv xl2tpd[12525]: udp_xmit failed with err=-1:Operation not permitted
Mar 18 00:14:06 debsrv xl2tpd[12525]: udp_xmit failed with err=-1:Operation not permitted
Mar 18 00:14:07 debsrv xl2tpd[12525]: Unable to deliver closing message for tunnel 8674. Destroying anyway.

Люди добрые! Поможите! Уже скоро неделю как воюю с этой байдой!

Спасибо!

Liber
()

openSSL vs SSLeay: настройка racoon IPSec + xl2tpd под Debian

Форум — Admin

Пытаюсь разобраться с настройкой L2TP сервера. Нашел вроде неплохую статью: https://libc6.org/page/l2tp-ipsec-server-howto

Там рассмотрен вариант с openSSL и генерацией сертификатов при помощи утилит easy-rsa (раньше входили в пакет openVPN, сейчас распространяются отдельно). Проблема следующая: у меня Debian Squeeze с предустановленным пакетом SSLeay. При попытке установить openSSL выскакивает ошибка:

# aptitude show openssl
Пакет: openssl
Состояние: не установлен
Версия: 0.9.8o-4squeeze13
Приоритет: необязательный
Раздел: utils
Сопровождающий: Debian OpenSSL Team <pkg-openssl-devel@lists.alioth.debian.org>
Размер в распакованном виде: 2 433 k
Зависимости: libc6 (>= 2.7), libssl0.9.8 (>= 0.9.8m-1), zlib1g (>= 1:1.1.4)
Предлагаются: ca-certificates
Конфликтуют: ssleay (< 0.9.2b)
Описание: Secure Socket Layer (SSL) binary and related cryptographic tools
 This package contains the openssl binary and related tools.

Теперь не знаю, как быть... Вроде, openSSL - более новая реализация, чем SSLeay. Но удалять ее и устанавливать openSSL я побаиваюсь в силу неопытности. Не возникнет ли конфликтов в результате? Мало ли, мож остальные предустановленные пакеты сконфигурированы на работу исключительно с ней?

В то же время, найти заслуживающих доверие статей/манов по настройке IPSec в связке с SSLeay, генерации сертификатов и всего в таком роде мне не удалось.

Подскажите пожалуйста, как лучше поступить в моем случае? Можно удалить SSLeay и поставить openSSL? Или все-таки как-то заставить работать racoon с тем, что есть?

Спасибо!

Liber
()

iptables ULOG

Форум — Admin

Можно как-нибудь заставить сабж кидать логи в разные файлы в зависимости от ключей?

Спасибо!

Liber
()

Порядок проверки правил iptables

Форум — Admin

Пара простых вопросов:

1) Если создать пользовательскую цепочку с правилами (например, ALLOWED_IN), но не добавить на нее ссылку в стандартной цепочке (INPUT), тогда эти правила не будут срабатывать?

2) Если у меня в цепочке INPUT такие правила:

Rule_1 xxx --jump ACCEPT
Rule_2 --jump ALLOWED_IN
Rule_3 xxx --jump ACCEPT

Но в конце цепочки ALLOWED_IN не прописано правило с --jump RETURN, то файерволл, не найдя в ALLOWED_IN подходящего правила, автоматом продолжит сверяться с правилами из вызывающией цепочки (INPUT)? Т.е. перескочит на Rule_3. Или закончит поиск и примет решение, основываясь на политике?

ОС Debian (если имеет значение).

Спасибо!

Liber
()

Проблема с автоматическим подключением xl2tpd при загрузке

Форум — Admin

Беда такая: установил и настроил xl2tpd, но он никак не хочет подключаться при загрузке сервера (Debian 6). При этом, если после запуска сервера зайти под рутом и вручную дать команду xl2tpd restart - подключение появляется.

Пошарился в daemon.log. Ошибка: xl2tpd: Host name lookup failed for имя_впн_сервера
При этом лог аццки загажен воплями bind9 о том, что 'network unreachable'

Похоже, картина следующая: xl2tpd пытается подключиться к серверу и бросает это гиблое дело до того как поднимается WAN-интерфейс (отчет dhcp-клиента об успешном подключении в самом конце лога, после тонн сообщений об ошибках).

Покопался в интернетах, но грамотного красивого решения, которое бы меня во всем устраивало, мне не попалось.

Пробовал такой ход: в скриптах автозагрузки прописать зависимости ('Required-Start') таким образом, чтобы xl2tpd и bind9 запускались после isc-dhcp-server. Не помогло. Запускается-то он первым, а вот получить IP и прочее не успевает.

Была еще мысль убрать 'autodial = yes' в xl2tpd.conf, а в '/etc/network/if-up.d' поместить скрипт, который будет проверять имя поднятого интерфейса и, если это WAN, устанавливать соединение по требованию через '/var/run/xl2tpd/l2tp-control'... Но такой вариант меня не устраивает: интернет будет подниматься при каждом подключении к WAN, а мне такого не надо. Требуется соединение именно после загрузки сервера. Да и проблемы с засиранием логов bind'ом это не решает.

Единственное, что приходит в голову - это убрать их вообще из автозагрузки и смастЫрть в автозапуске скрипт, который будет запускать bind9 и xl2tpd (или дозвон делать, что гораздо лучше) либо по таймауту, либо после подъема WAN... Но это какой-то кривой костыльный подход, как мне кажется. По крайней мере, в той реализации, которую я могу себе представить.

Подскажите хорошее решение, пожалуйста.

Спасибо!

Liber
()

Несколько вопросов по iptables в debian

Форум — Admin

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

Есть пара вопросов. Если вдруг кому не жаль времени поглядеть - буду благодарен за ответы.

Схема сети следующая: домашние машины => коммутатор => маршрутизатор под управлением Debian с 2 ethernet интерфейсами => внутренняя сеть прова (с различными сервисами, включая DC, игровые серверы и т.п.) => IPsec VPN для доступа в интернет.

Правила настраиваются скриптом '/etc/network/if-pre-up.d/NAT'. Представляет собой компиляцию материалов из нескольких нагугленных статей, плюс некоторые личные дополнения:

#!/bin/bash

# Устанавливаем переменные окружения:
LAN="eth1"
WAN="eth0"
VPN="ppp0"
LAN_IP_RANGE="192.168.110.0/24"
LAN_IP="192.168.110.1"
WAN_IP="172.20.85.281"
LIBER_IP="192.168.110.100"
SNAKE_IP="192.168.110.101"
SSH_PORT="22828"

# Включаем форвардинг пакетов и подгружаем модули:
echo "1" > /proc/sys/net/ipv4/conf/default/rp_filter
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# Очищаем существующие таблицы правил:
iptables --flush
iptables --delete-chain
iptables --table nat --flush
iptables --table nat --delete-chain
iptables --table mangle --flush
iptables --table mangle --delete-chain

# Устанавливаем политики запрета всего:
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

# Разрешаем локальный траффик для loopback:
iptables --append INPUT --in-interface lo --jump ACCEPT
iptables --append OUTPUT --out-interface lo --jump ACCEPT
iptables --append INPUT ! --in-interface lo --destination 127.0.0.0/8 --jump REJECT

# Явно разрешаем доступ к SSH из внутренней сети:
iptables --append INPUT --protocol tcp --in-interface $LAN --destination-port $SSH_PORT --jump ACCEPT

# Явно разрешаем пинг:
iptables --append INPUT --protocol icmp --icmp-type 8 --jump ACCEPT

# Запрещаем все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса:
iptables --append INPUT --match state --state INVALID --jump DROP
iptables --append FORWARD --match state --state INVALID --jump DROP

# Приводит к связыванию системных ресурсов, так что реальный обмен данными становится невозможным, запрещаем:
iptables --append INPUT --protocol tcp ! --syn --match state --state NEW --jump DROP
iptables --append OUTPUT --protocol tcp ! --syn --match state --state NEW --jump DROP

# Разрешаем траффик для внутренней сети:
iptables --append INPUT --in-interface $LAN --jump ACCEPT
iptables --append OUTPUT --out-interface $LAN --jump ACCEPT

# Разрешаем входящие пакеты уже инициированных соединений, а также дочерние от них:
iptables --append INPUT --protocol all --match state --state ESTABLISHED,RELATED --jump ACCEPT
# Разрешаем исходящие пакеты новых, а так же уже инициированных и их дочерних соединений:
iptables --append OUTPUT --protocol all --match state --state NEW,ESTABLISHED,RELATED --jump ACCEPT
# Разрешаем форвардинг для новых, а так же уже инициированных и их дочерних соединений:
iptables --append FORWARD --protocol all --match state --state NEW,ESTABLISHED,RELATED --jump ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU:
iptables --insert FORWARD --protocol tcp --tcp-flags SYN,RST SYN --jump TCPMSS --clamp-mss-to-pmtu

# Разрешаем доступ из внутренней сети наружу:
iptables --append FORWARD --in-interface $LAN --out-interface $WAN --jump ACCEPT
iptables --append FORWARD --in-interface $LAN --out-interface $VPN --jump ACCEPT

# Разрешаем доступ снаружи во внутреннюю сеть:
iptables --append FORWARD --in-interface $WAN --out-interface $LAN --jump ACCEPT
iptables --append FORWARD --in-interface $VPN --out-interface $LAN --jump ACCEPT

# NAT-маскарадинг:
iptables --table nat --append POSTROUTING --out-interface $WAN --source $LAN_IP_RANGE --jump MASQUERADE
iptables --table nat --append POSTROUTING --out-interface $VPN --source $LAN_IP_RANGE --jump MASQUERADE


################
#
# Проброс портов
#
# Правила для каждого проброса:
# 1 - Проброс внешнего порта на адрес в LAN
# 2 - Перенаправление пакетов через NAT при обращении LAN-клиента к LAN-службе по ее WAN адресу
# 3 - На случай, если клиент - сам маршрутизатор
# 4 - Разрешающее правило для форвардинга из WAN в LAN

# Greylink DC++
iptables --table nat --append PREROUTING \
        --protocol tcp --destination $WAN_IP --dport 22612 --jump DNAT --to-destination $LIBER_IP

iptables --table nat ---append POSTROUTING \
        --protocol tcp --destination $LAN_IP --dport 22612 --jump SNAT --to-source $LIBER_IP

iptables --table nat --append OUTPUT \
        --protocol tcp --destination $WAN_IP --dport 22612 --jump DNAT --to-destination $LIBER_IP

iptables --insert FORWARD 1 \
        --protocol tcp --match tcp --in-interface $WAN --out-interface $LAN \
        --destination $LIBER_IP --dport 22612 --jump ACCEPT

iptables --table nat --append PREROUTING \
        --protocol tcp --destination $WAN_IP --dport 22682 --jump DNAT --to-destination $LIBER_IP

iptables --table nat ---append POSTROUTING \
        --protocol tcp --destination $LAN_IP --dport 22682 --jump SNAT --to-source $LIBER_IP

iptables --table nat --append OUTPUT \
        --protocol tcp --destination $WAN_IP --dport 22682 --jump DNAT --to-destination $LIBER_IP

iptables --insert FORWARD 1 \
        --protocol tcp --match tcp --in-interface $WAN --out-interface $LAN \
        --destination $LIBER_IP --dport 22682 --jump ACCEPT

Собственно вопросы:

1) Если все будет работать и так, то подгрузку модулей (modprobe ...) из скрипта лучше убрать?

2) Правильно ли я понимаю, что политики (iptables --policy) представляют собой нечто вроде глобальных правил по умолчанию? Т.е. если не найдено правило, условия которого соответствуют параметрам IP пакета, то выполняются действия, заданные политиками. Так?

3) Правило: iptables --append INPUT ! --in-interface lo --destination 127.0.0.0/8 --jump REJECT наверное, лучше заменить на DROP? Т.е. не будет ли лучшим ответом на такой пакет покерфейс и ледяное молчание?

4) Что касается раздела «Разрешаем доступ снаружи во внутреннюю сеть». При текущих правилах получается такая картина:

Если каким-то чудом на WAN интерфейс попадет пакет с IP назначения из диапазона LAN сети, то он будет пропущен. Но учитывая таблицы маршрутизации на роутерах прова, попасть на него он никак не должен.

С другой стороны, это потенциальная уязвимость, и разрешающие правила на форвардинг лучше давать на каждый конкретный порт при пробросе. Я прав? Как тут лучше поступить? Убрать эти правила и оставить блокировку таких пакетов на откуп политикам?

5) Прошу поглядеть, правильно ли сделан проброс портов. Нет ли ошибок? Попросить посканировать снаружи сейчас некого, а изнутри внешние порты просканировать не получается (пишет, что закрыто, хотя грей включен, а файер на десктопе отрублен). Хотя, по идее, должен сканить, благодаря второму правилу для проброса:

iptables --table nat ---append POSTROUTING \
        --protocol tcp --destination $LAN_IP --dport 22612 --jump SNAT --to-source $LIBER_IP

6) Еще по пробросу... Сейчас выглядит довольно неуклюже из-за обилия правил (по правилу для каждого порта). Я в курсе о расширении multiport, но сам его применять не стал, опасаясь напортачить в синтаксисе. Может быть, кто-нибудь сможет привести пример, как добавить порты?

7) И снова о пробросе: допустимо ли применение списка протоколов? Т.е. можно ли указать опцию --protocol tcp,udp и завязать оба протокола на один порт (для того же DC)?

8) Как я понимаю, проброс портов на VPN интерфейсе нужно делать отдельно (для торрент-клиента, например или того же DC++ при подключении к интернет-хабам). У меня сейчас динамический IP, можно ли указать в правиле --in-interface вместо --destination (т.е. название интерфейса вместо его IP)?

P.S. Ну и в целом буду благодарен за общие поправки по перечисленным правилам и указания на корявости и упущения, которые, уверен, я тут наляпал.

Большое спасибо!

Liber
()

tar: инкременты не инкрементятся...

Форум — Admin

В качестве «пробы пера» накатал bash-скрипт, создающий инкрементные tar.gz архивы. Вроде все пакует, но вот беда: в следующие тома добавляются не новые и изменившиеся файлы, а вообще все. Почему - так и не разобрался.

Сперва создается полный архив (запускаю скрипт с ключом -t f):

~/docs$ ./backuper.bash -t f --verbose
        TYPE: 'F'
        BACKUP_NAME: ''
        BASE_VOLUME: ''
        VERBOSE: 'true'
Choosing backup name automatically...
Examing backups storage '/home/liber/docs/backups/' for last backup...
Backup name 'debsrv_20130207_1' is chosen.
Choosing archive volume name...
Archive volume name 'debsrv_20130207_1__001f' is choshen.
This is full backup archive. No base volume needed.
Preparing directories and meta data for new volume...
NO META FILE!!!!
        ... done!

Archive creation command:
/bin/tar \
        --create \
        --ignore-failed-read \
        --one-file-system \
        --preserve-permissions \
        --recursion \
        --sparse \
        --totals \
        --wildcards \
        --verbose \
        --checkpoint=100 \
        --gzip \
        --file=/home/liber/docs/backups/debsrv_20130207_1/debsrv_20130207_1__001f.tar.gz \
        --listed-incremental=/home/liber/docs/backups/debsrv_20130207_1/meta/debsrv_20130207_1__001f.meta \
        --exclude-from=/home/liber/docs/backups/backup_excludes \
        --exclude-backups \
        --exclude-caches \
        /home/liber/docs/

... executing:
/bin/tar: Удаляется начальный `/` из имен объектов
/home/liber/docs/NAT
/home/liber/docs/_err.txt
/home/liber/docs/_out.txt
/home/liber/docs/backuper.bash
/home/liber/docs/backuper.bash.back
/home/liber/docs/backuper.bash.back2
/bin/tar: /home/liber/docs/filename: Предупреждение: Функция open завершилась с ошибкой: Отказано в доступе
/home/liber/docs/tst
/home/liber/docs/tst2
Всего записано байт: 40960 (40KiB, 14MiB/s)
        ... done!

Preparing backup and system info for new volume...
        ... done!

Все норм, претензий нет.

А теперь создаю в архивируемой директории файл somenewshit.txt. Насколько я понимаю принцип инкрементного архивирования, в новом томе должен быть он один.

Запускаю с ключом -t d. При этом копируется файл с мета-данными, созданный при первой архивации (с тем, чтобы можно было делать как инкрементные, так и разностные, и инкрементные от разностных тома) и скармливается tar'у:

~/docs$ ./backuper.bash -t d --verbose
        TYPE: 'D'
        BACKUP_NAME: ''
        BASE_VOLUME: ''
        VERBOSE: 'true'
Choosing backup name automatically...
Examing backups storage '/home/liber/docs/backups/' for last backup...
'debsrv_20130207_1' is last backup in storage!
Backup name 'debsrv_20130207_1' is chosen.
Choosing archive volume name...
'debsrv_20130207_1__001f' is last volume of this backup.
Archive volume name 'debsrv_20130207_1__002d' is choshen.
Choosing base volume automatically...
Base volume 'debsrv_20130207_1__001f' chosen.
Preparing directories and meta data for new volume...
        ... done!

Archive creation command:
/bin/tar \
        --create \
        --ignore-failed-read \
        --one-file-system \
        --preserve-permissions \
        --recursion \
        --sparse \
        --totals \
        --wildcards \
        --verbose \
        --checkpoint=100 \
        --gzip \
        --file=/home/liber/docs/backups/debsrv_20130207_1/debsrv_20130207_1__002d.tar.gz \
        --listed-incremental=/home/liber/docs/backups/debsrv_20130207_1/meta/debsrv_20130207_1__002d.meta \
        --exclude-from=/home/liber/docs/backups/backup_excludes \
        --exclude-backups \
        --exclude-caches \
        /home/liber/docs/

... executing:
/bin/tar: Удаляется начальный `/` из имен объектов
/home/liber/docs/NAT
/home/liber/docs/_err.txt
/home/liber/docs/_out.txt
/home/liber/docs/backuper.bash
/home/liber/docs/backuper.bash.back
/home/liber/docs/backuper.bash.back2
/bin/tar: /home/liber/docs/filename: Предупреждение: Функция open завершилась с ошибкой: Отказано в доступе
/home/liber/docs/somenewshit.txt
/home/liber/docs/tst
/home/liber/docs/tst2
Всего записано байт: 40960 (40KiB, 12MiB/s)
        ... done!

Preparing backup and system info for new volume...
        ... done!

И - фигак! Почему-то снова запаковываются все файлы, что подтверждается при просмотре архива в mc.

Первым делом подумал, что-то не то с копированием файла с метаданными (в пути ошибся или еще чего). Но с этим все ровно. Добавил в скрипт условие, проверяющее наличие файла метаданных перед запуском архивации (выводит «NO META FILE!!!!» - см. первый вывод при полном архивировании), а также дублировал команду копирования (первый раз копирует в файл, скармливаемый тару при архивировании, второй - просто в проверочный файл). Все в порядке: проверочный файл - точная копия метаданных первого (полного) архива.

Для чистоты эксперимента потом еще все то же самое проделал вручную (ввод команд в консоль, копирование метафайлов и т.д.) - все повторяется в точности.

А если предположить, что в новом томе файлы предыдущего тома просто отображаются - то почему объемы одинаковые у обоих томов?.. Длина newshit'а - пара байт.

Погуглил, покопался в статейках на эту тему, почитал man... ничего на ум не идет! Может, что-то в опциях не то (но все по писанному, мож статьи кривые попались?..).

Что я проморгал?

Спасибо!

P.S. ОС Debian Squeeze, tar v.1.23-2

Liber
()

bash: сохранение потока ошибок функции в переменную

Форум — Admin

У юзера, от имени которого запускается скрипт нет прав на чтение файла filename. Соответственно, в поток ошибок идет мессага об этом. Задача стоит: сохранить поток ошибок всех команд функции в переменную (для последующей проверки того, что блок кода отработал безошибочно). Никак не выходит.

#!/bin/bash

a="a"

block_a() {
        cat filename
        echo "message2, a='$a'"
}

var=$( block_a > _out.txt 2>&1 )

echo "var = '$var'"

В том варианте, который используется сейчас, как и следовало ожидать, все (и вывод, и ошибки) уходит в файл. Использовать временный файл не хочется.

Как лучше поступить? Можно при помощи какого-нибудь хитрого перенаправления поменять местами потоки ошибок и вывода? Или block_a_std_errors.tmp неизбежен?

P.S. а вот стандартный вывод нужно кинуть именно в файл

Liber
()

И снова непонятки с баш-скриптом

Форум — Admin

Пробовал по разному, вроде все по манам и статейкам:

#!/bin/sh

_DEBUG="on"
DEBUG1 ()
{
        if [ "$_DEBUG" == "on" ]; then
                echo "$1"
        fi
}

DEBUG1 "AAA"

Выдает:

[: 11: on: unexpected operator

Что не так-то?..

(Debian Squeeze)

Liber
()

Регулярки в bash скриптах

Форум — Admin

Устал воевать... С ходу вопрос: каким образом в bash можно использовать полноценные PCRE выражения? Как я понял, в основном, используются POSIX. В последних нежадной квантификации не предусмотрено, вроде?

Задача:

Есть строка вида 'hostname-20130117-1' или 'hostname-20130117-i22.tar.gz'

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

С синтаксисом POSIX не знаком, с утилитами обработки строк тоже сейчас весело порезвился. Пробовал и так, и сяк, и sed, и expr - метод тыка не помог... =(

Скиньте рабочий пример, пожалуйста. ОС: Debian Squeeze.

Спасибо!

Liber
()

Проверка наличия файла из bash-скрипта

Форум — Admin

Привет! Никак не могу понять, в чем дело. Вроде, все как в манах:

t2.sh:

#!/bin/sh

file=/root/docs/NAT

echo
echo $file
echo
pwd
whoami
echo
ls -la --color
echo

if [[-e $file]]
then
	echo "FOUND!"
fi

echo

Почему не находит-то?

Система debian 6.0.6 squeeze.

Спасибо!

Liber
()

PPTP зависает при попытке подключения

Форум — Admin

ОС Debian Squeeze. Поставил pptp-linux, настроил по рекомендациям товарища Гугля. Процесс соединения зависает после сообщения «Compression disabled by peer». Опыта почти никакого в администрировании Linux-систем, поэтому даже отдаленно не представляю, как наладить. Примеров конфигов для моего прова не нашел.

Вот здесь конфиги и вывод pon $NameVPN debug nodetach: http://rghost.ru/42158412

Поможите, пожалуйста...

 , ,

Liber
()

Не удается подключиться к SSH при раскомментированной опции ListenAddress

Форум — Admin

Debian 6.0.6-i386 squeeze.

Решил поковыряться в конфиге sshd. Прописал:

ListenAddress 192.168.1.0

После перезагрузки putty перестал подключаться к серверу. Даже приглашения не выводит, сбой подключения.

В интерфейсах прописано allow-hotplug eth1 iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255

Cервер 192.168.1.1, десктоп 192.168.1.10. Пинги бегают туда-сюда.

Пробовал прописать ListenAddress 192.168.1.10 - ноль эффекта.

Комментирую обратно опцию, подключается без проблем.

Что за чудеса?

Спасибо!

Liber
()

постоянное монтирование репозитория debian из ISO образов

Форум — Admin

Всем привет!

В администрировании Linux-систем я новичок, сейчас вожусь с Debian 6.0.6 (приходится по работе).

Суть такова =)

Установил Debian с флэшки (6.0.6, CD-1) на машинку без CD/DVD привода. Закатал на сервак iso образы 8-ми DVD-дисков с репозиторием. Теперь хочу смонтировать их через /etc/fstab

Прописал:

________________________________________________

/storage/debian_package_images/debian-6.0.6-i386-CD-1.iso /mnt/debrep/6.0.6-i386/CD-1 iso9660 auto,loop 0 0

/storage/debian_package_images/debian-6.0.6-i386-DVD-1.iso /mnt/debrep/6.0.6-i386/DVD-1 iso9660 auto,loop 0 0

/storage/debian_package_images/debian-6.0.6-i386-DVD-2.iso /mnt/debrep/6.0.6-i386/DVD-2 iso9660 auto,loop 0 0

/storage/debian_package_images/debian-6.0.6-i386-DVD-3.iso /mnt/debrep/6.0.6-i386/DVD-3 iso9660 auto,loop 0 0

/storage/debian_package_images/debian-6.0.6-i386-DVD-4.iso /mnt/debrep/6.0.6-i386/DVD-4 iso9660 auto,loop 0 0

/storage/debian_package_images/debian-6.0.6-i386-DVD-5.iso /mnt/debrep/6.0.6-i386/DVD-5 iso9660 auto,loop 0 0

/storage/debian_package_images/debian-6.0.6-i386-DVD-6.iso /mnt/debrep/6.0.6-i386/DVD-6 iso9660 auto,loop 0 0

/storage/debian_package_images/debian-6.0.6-i386-DVD-7.iso /mnt/debrep/6.0.6-i386/DVD-7 iso9660 auto,loop 0 0

/storage/debian_package_images/debian-6.0.6-i386-DVD-8.iso /mnt/debrep/6.0.6-i386/DVD-8 iso9660 auto,loop 0 0 __________________________________________________________

(\n\n в конце строк нету, это я для удобства размещения на форуме натыкал)

CD-1 и первые 7 DVD монтируются без проблем. Последний - нет. При загрузке сервака выскакивает строчка с ошибкой, что-то вроде того, что loop'ов нету больше, failed. Текст сообщения об ошибке прочитать целиком не успеваю, а где хранится лог загрузки не знаю.

Что за дела? Как как все-таки добиться полного монтирования ISOшников с репозиториями при загрузке?

Через скрипты, как описано здесь: http://mydebianblog.blogspot.ru/2008/08/debian-cd-dvd.html ?

Или таки можно как-то можно через fstab?

Я джва года хочу такой конфиг! Спасибо!

P.S. точкам монтирования прописал chmod 777, но после примонтирования директории по команде ls -la --color перестают выделяться зелененьким. Могут ли быть из-за этого проблемы с привелегиями после загрузки системы? ...хотя работа с репозиториями априори будут от рута... Короче, хз... Могут ли вылезти какие рога в этой связи?

 , , ,

Liber
()

RSS подписка на новые темы