Archive for the ‘FreeBSD’ Category

Squid и ipv6

Среда, Апрель 8th, 2015

Столкнулся в офисе с проблемой, сайт частично не грузится и периодически отваливается css от vk.com

В посмотрел что недоступно и увидел:

При получении URL http://cdnjs.cloudflare.com/ajax/libs/jquery-placeholder/2.0.8/jquery.placeholder.min.js?
произошла следующая ошибка 
Соединение с 2400:cb00:2048:1::c629:d7b6 не удалось
Система вернула: (65) No route to host Удаленный узел или сеть недоступен. 
Повторите запрос позднее 
Администратор Вашего кэша: webmaster.

Опа, ipv6 🙂

Решение:
Так как пока ipv6 еще не для нас, то есть два пути или пересобрать squid без поддержки ipv6 (не наш путь) или отключить в конфиге. И так, в squid.conf добавляем или меняем строчку:

dns_v4_first off

на:

dns_v4_first on

Перезапускаем squid и наслаждаемся.

Тонкости виртуализации

Пятница, Январь 10th, 2014

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

Его мы должны были ввести в эксплуатацию в ограниченные сроки в рамках планового обновления парка. Старый сервер требовалось уже в начале года отправить в соседний филиал.

Производительность нового сервера довольно высока, что в сопоставлении с потенциальной невысокой нагрузкой на него, вызвало одно желание – разделить его ресурсы на несколько частей:

1. медиа база данных (хранение звуковых файлов в виндовых шарах с различными правами доступа пользователей домена + SQL Server для хранения ссылок на файлы + спец ПО для работы с базой и загрузки/обмена файлами с другими филиалами). Используется Windows Server 2008 Standard R2, лицензия на который передалась вместе с серваком + отдельно приобретённый SQL Server 2012 + спец ПО с несетевым USB HASP ключом.

2. терминальный сервер + сервер приложений, лицензию на который нам предоставили.
У нас в компании апологет винды. Все клиентские и серверные ОС для продакшна только Windows. Это связано с платформой спец ПО ну и с ИТ политикой. Поэтому для виртуализации можно было использовать только продукцию Microsoft.
Решение: используем бесплатный Hyper-V Server 2012 R2 для разделения ресурсов + имеющиеся лицензии на ПО.
Результат: всё работает, кроме USB ключей для спец ПО, т.к. Hyper на текущий момент не умеет прокидывать внутрь виртуалки USB.

Бюджет на приобретение дополнительного оборудования не предполагался, да и ключей мало, поэтому решили использовать программный проброс USB с другого компьютера с помощью бесплатного пакета USBIP, работающего под Линукс.

Это было достустимо ИТ политикой. Правда, для реализации нужен отдельный компьютер, но в связи с отсутствием такового решили использовать имеющийся с низкой нагрузкой.

Таким оказался дешёвый сервер Supermicro с установленной FreeBSD для организации удалённого доступа по ВПН сотрудникам из дома.

Нагрузка на него была невелика, поэтому ресурсы можно было разделить без ущерба для производительности.
Подзадача: внедрение системы виртуализации с возможностью проброса USB.

Решение: используем бесплатный гипервизор ESXi 5.5 + FreeBSD 9.2 для восстановления функционала изначального сервера + Ubuntu Server для пакета USBIP.

(далее…)

nload, отображение загрузки канала в реальном времени. FreeBSD

Среда, Январь 23rd, 2013

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

Создаем шифрованный раздел в файле контейнере на FreeBSD используя geli.

Среда, Январь 16th, 2013

На одном серваке потребовалось добавить шифрованную партицию, свободных партиций не было, было решено использовать файл контейнер.
(далее…)

Скрипт для запуска второго natd во FreeBSD

Понедельник, Март 12th, 2012

Понадобился второй нат, скрипт не шедевр, но для шпаргалки напишу.

/usr/local/etc/rc.d/nat2.sh (далее…)

Отключаем переход на Летнее Зимние время, во FreeBSD

Воскресенье, Октябрь 30th, 2011

Для отключения привязываем пояс относительно GMT

Например для Москвы (Спасибо властям  GMT-4, а не GMT-3)

Так как я из Новосибирска, вот мой пример (GMD-7):

# date
воскресенье, 30 октября 2011 г. 14:31:04 (GMT-7)
#mv /etc/localtime /etc/localtime.orig
#ln -sf /usr/share/zoneinfo/Etc/GMT-7 /etc/localtime
# date
воскресенье, 30 октября 2011 г. 14:32:51 (GMT-7)

Возможно это не единственное решение, но оно работает. Менять в настройках ntpd ничего не требуется.

Редирект в Squid

Среда, Октябрь 5th, 2011

Почему пару дней назад, некоторые пользователи перестали входить в социальную сеть «вконтакте», при этом другие говорили, что не испытывают проблем. В итоге выяснилось, что через URL vkontakte.ru перестало входить, а через vk.com проблем не было. Разбираться мне было лень сделал редирект:

acl vrontakte dstdomain vkontakte.ru
http_access deny vrontakte
deny_info http://vk.com vrontakte

ipfw и keep-state

Среда, Октябрь 5th, 2011

Всегда пользовался keep-state не задумываясь где создаются виртуальные правила, пока один раз не на ступил на грабли….

check-state — проверяет пакет по динамическим правилам; если соответствие обнаружено, поиск прекращается; в противном случае выполняется переход к следующему правилу; eсли check-state правило не обнаружено, динамические правила проверяются по первом правилу с опцией keep-state;

Взято здесь.

FreeBSD два провайдера. setfib

Вторник, Сентябрь 13th, 2011

Имеем два провайдера:

IP1: 1.2.3.4 GW1: 1.2.3.1 сетевая карта bce0
IP2: 5.6.7.8 GW2: 5.6.7.1 сетевая карта bce1

Желание:

пользователей squid выводить в интернет через второго провайдера. (далее…)

DD примеры.

Пятница, Август 19th, 2011

Нашел на просторах иностранного интернета.

  1. Создание ISO образа компакт диска
    dd if=/dev/cdrom of=image.iso bs=2k
  2. Создание образа с дискеты
    dd if=/dev/fd0 of=floppy.img
  3. Залить образ обратно на дискету
    dd if=floppy.img of=/dev/fd0 bs=18k
  4. Создание файла reallylargefile размером 1Gb заполненный случайными данными
    dd if=/dev/random of=reallylargefile count=2M
  5. Тоже, что и выше, но более быстрое но менее криптоустойчивое :
    dd if=/dev/urandom of=reallylargefile count=2M
  6. Тоже что и выше, но быстрее за счет увеличения размера блока:
    dd if=/dev/urandom of=reallylargefile count=256k obs=4096
  7. Создание файла размером 10Gb с именем virtualpartition, заполненный нулями, и доступный как ext2 виртуальный раздел:
    dd if=/dev/zero of=virtualpartition bs=1M count=10k
    mke2fs virtualpartition
    (ответить yes, когда ругнется, что это не блочное устройство)
    dd if=/dev/zero of=virtualpartition bs=1M count=10k
    mkdir /mnt/virtual
    mount -o loop virtualpartition /mnt/virtual/
  8. Создать файл 10Gb без выделения реального пространства (если операционная система это поддерживает)
    dd if=/dev/zero of=sparsefile.img bs=1 seek=10G count=0
  9. Скопировать первый раздел первого жесткого диска в файл partitionone
    dd if=/dev/hda1 of=partitionone
  10. Чтобы скопировать первый IDE-жесткий диск на второй IDE-жесткий диск (устройства подставляйте свои), т.е. клонировать диск, включая файловые системы, таблицы разделов и главную загрузочную запись
    dd if=/dev/hda of=/dev/hdb
  11. Смотрим, что делает dd, запускаем в другой консоли
    ps aux | grep «dd if» | grep -v grep | awk ‘{system («kill -s USR1 «$2)}’
    В консоли где работает dd будим видеть примерно следующие
    4518809+0 записей считано
    4518808+0 записей написано
    скопировано 2313629696 байт (2,3 GB), 242,181 c, 9,6 MB/c

Внимание следующие примеры опасны, разберитесь что вы делаете прежде чем тупо копировать!!!

  1. Заполняет первый жесткий диск нулевыми байтами, стирая его
    дд if=/dev/zero of=/dev/hda
  2. Это перезаписывает первые несколько блоков, первого жесткого диска из файла, это приводит к потере таблицы разделов
    дд if=funnysong.mp3 of=/dev/hda
  3. Полностью затирает диск данными со звуковой карты 🙂
    дд if=/dev/dsp of=/dev/hda
  4. Перезапись всего диска псевдослучайными данными
    дд if=/dev/urandom of=/dev/hda
  5. Замена всех вхождений строки «Top Secret» на «Доступно!!» на диске /dev/sda (обратите внимание, что количество букв должно совпадать)
    дд if=/dev/sda | sed ‘s/Top Secret/Доступно!!/g’ | dd of=/dev/sda

Описание тут:
www.opennet.ru/man.shtml?topic=dd&category=1&russian=0
www.opennet.ru/man.shtml?topic=dd&category=8&russian=0
www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506