Столкнулся с такой ситуацией, что в используя Proxmox на серверах Hetzner нельзя просто взять и навесить IPv6 виртуалки на интерфейс подключенный в bridge наружу, т.к. приходит жалоба, что используется неразрешённый MAC адрес (как раз MAC адрес тех самых виртуальных машин, которые подключаешь к этому bridge).

Решается созданием ещё одного bridge и настройкой routed IPv6. Здесь речь будет идти только об IPv6, IPv4 часть не буду затрагивать.

Изменяем параметр sysctl для того, чтобы была возможность проброса IPv6:

sysctl -w net.ipv6.conf.all.forwarding=1

Настраиваем на внешнем интерфейсе (это может быть интерфейс сетевой карты, но в моём случае это bridge подключенный к внешней сетевой карте):

/etc/network/interfaces

iface vmbr0 inet6 static
  address 2a01:abc:de:f123::1/128
  gateway fe80::1

шлюз на внешнем интерфейсе (или бридже подключенному к внешнему интерфейсу) на hetzner всегда fe80::1

Создаём ещё один bridge, в моём случае это vmbr4 и не подключаем его ни к другим бриджам, ни к внешней сетевой карте, настраиваем следующим образом:

iface vmbr4 inet6 static
  address 2a01:abc:de:f123::1/64
  bridge-ports none
  bridge-stp off
  bridge-fd 0
  up ip -6 route add 2a01:abc:de:f123::/64 dev vmbr4

последняя строчка это добавление маршрута при поднятии интерфейса бриджа.

После этого можно создавать виртуальную машину или контейнер, брать адрес из выделенного диапазона (add 2a01:abc:de:f123::/64) в качестве шлюза необходимо указывать этот самый 2a01:abc:de:f123::1

 

 

Ранее публиковал записи о назначении определённому сетевому интерфейсу типа сети (общественная/частная/публичная), включение и отключение Windows Firewall, также опишу как разрешить пинг в брандмауэре Windows в командной строке.

Разрешаем ping для IPv4 в частной сети:

netsh advfirewall firewall add rule name="Allow ICMPv4" protocol=icmpv4:8,any dir=in action=allow profile=private

Разрешаем ping для IPv6 в публичной сети:

netsh advfirewall firewall add rule name="Allow ICMPv6" protocol=icmpv6:8,any dir=in action=allow profile=public

Разрешаем ping для IPv4 и IPv6 во всех сетях:
netsh advfirewall firewall add rule name="Allow ICMPv6" protocol=icmpv6:8,any dir=in action=allow profile=ALL

Также после profile= можно указать значение domain для доменной сети.

В посте указано, как изменить тип сети в Windows, теперь опишу как включить или отключить Firewall в командной строке для определённого типа сети (общественная/частная/доменная).

Выполняем от администратора выключение фаервола для частной сети:

netsh advfirewall set privateprofile state off

Аналогично выполняется отключение брандмауэра для общественной сети:

netsh advfirewall set publicprofile state off

Отключение Windows Firewall для доменной сети:

netsh advfirewall set domainprofile state off

 

Включение брандмауэра для частной сети:

netsh advfirewall set privateprofile state on

Включение Windows Firewall для общественной сети:

netsh advfirewall set publicprofile state on

Включение фаервола для доменной сети:

netsh advfirewall set domainprofile state on

 

В Powershell от администратора выполняем:

Get-NetConnectionProfile

Получаем список сетевых интерфейсов и их внутренние идентификаторы, интересует только значение InterfaceIndex:
InterfaceIndex : 13

Выполнем команду с подстановкой нужного значения после -InterfaceIndex (тот самый идентификатор, который получили выше) и указываем тип сети (Private/Public – Частные/Общедоступные):

Set-NetConnectionProfile -InterfaceIndex 13 -NetworkCategory Private

 

От этого зависит тип политик, применяемых Windows Firewall (брандмауэр).

Как-то мне пришла идея использовать обычный shared хостинг с PHP для того, чтобы создать прокси сервер (а через него уже можно и в интернет ходить, и скрэпперы/кроулеры использовать).

Для этого нам понадобится Nginx с PHP, подойдёт даже работающий на локальном компьютере или же локально на виртуальной машине, а также любой shared хостинг, который поддерживает PHP (5.6 и новее).

Работает эта схема следующим образом: Nginx выступает в роли самого proxy сервера, который указываем в качестве прокси в браузере, PHP в связке с этим Nginx занимается приёмом запросов от браузера (или скрэппера/кроулера) и отправляет его на shared хостинг, где мы должны разместить файл Proxy.php из репозитория https://github.com/zounar/php-proxy

Этот скрипт можно немного по-вкусу модифицировать, например убрать аутентификаицю на уровне заголовков, передаваемых в скрипт (но можно и оставить для секьюрности), в своём примере я убрал для сокращения описания шагов. Но настройку http basic аутентификацию в nginx опишу.

Здесь не буду объяснять, как устанавливать nginx, а также PHP-FPM.

Настраиваем виртуальный хост nginx следующим образом:

server {
listen 3128;
server_name _;
root /home/user/webproxy;
index index.php;

auth_basic "Restricted";
auth_basic_user_file /home/user/web/.htpasswd; #файл с хешированным паролем для http basic аутентификации

location ~ \.php$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}

location / {
rewrite ^/(.*)$ /index.php?url=$host$uri; #здесь передаём все запросы нашего браузера/скрэппера/кроулера путём get в переменную url
}
}

Скрипт, который нужно положить в /home/webproxy/index.php:

<?php

$url = $_GET['url'];

$request = curl_init('http://your-shared-hosting.xyz/Proxy.php'); //путь к файлу на shared хостинге

curl_setopt($request, CURLOPT_HTTPHEADER, array(
'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0',
'Proxy-Auth: SetInTheProxyPHPifEnabled',
'Proxy-Target-URL: https://'.$url
));

curl_exec($request);

?>

 

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

От хостинга требуется чтобы в PHP была поддержка libcurl, gzip и PHP safe_mode disabled (практически любой хостинг).

Спустя долгое время, как проэкспайрился домен itblog.pp.ua, я решил восстановить этот блог на новом домене.

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

 

Что хотелось бы добавить и что уже забыл:

  • исправление работы Windows Subsystem for Linux 2 в Windows 11 – исправил и совсем забыл, как это делал
  • продление работы сервера терминалов Windows без лицензии – это помню
  • устранение автоматического завершения работы на неактивированном Windows сервере – где-то находил инфу
  • выкачивание сайта с веб-архива – где-то находил инфу

 

Если ещё что-то вспомню – накидаю в этот пост

Получил недавно такую абузу:

Dear Sir or Madam,
>
> Multicast DNS (mDNS) is used for resolving host names to IP addresses
> within small networks that do not include a local DNS server. It is
> implemented for example by the Apple ‘Bonjour’ and Linux/BSD ‘Avahi’
> (nss-mdns) services. mDNS uses port 5353/udp.
>
> In addition to disclosing information about the system/network,
> mDNS services openly accessible from anywhere on the Internet can be
> abused for DDoS reflection attacks against third parties.
>
> Please find below a list of affected systems hosted on your network.
> The timestamp (timezone UTC) indicates when the openly accessible
> mDNS service was identified.
>
> We would like to ask you to check this issue and take appropriate
> steps to close the openly accessible mDNS services on the affected
> systems or notify your customers accordingly.
>
> If you have recently solved the issue but received this notification
> again, please note the timestamp included below. You should not
> receive any further notifications with timestamps after the issue
> has been solved.

Оказывается, на UDP порт 5353 слушал на всех интерфейсах avahi-daemon, который был установлен непонятно с чем (а может быть и по умолчанию в Linux Mint).

Смотрим, что слушает на этом порту:
netstat -tulpn |grep 5353
avahi-daemon

Побороть можно так следующим образом.

Проверяем зависимости, чаще всего avahi требует именно wine:

apt-rdepends wine | grep avahi

Если не нужен wine или зависимостей нет, то можно смело делать
apt-get remove avahi-daemon

Если нужен, то просто отключим:
update-rc.d avahi-daemon disable
/etc/init.d/avahi-daemon stop

Мне нравится утилита nethogs, которую я использую на своём сервере с Debian, для просмотра соединений и скорости передачи данных по процессам, но как-то она, после обновления, внезапно перестала работать, и стала выпадать с сообщением:

nethogs creating socket failed while establishing local IP — are you root?

Фикс такой:

wget -c https://github.com/raboof/nethogs/archive/v0.8.1.tar.gz
tar xf v0.8.1.tar.gz
cd ./nethogs-0.8.1/
sudo apt-get install libncurses5-dev libpcap-dev
make && sudo make install
sudo nethogs

Вот и всё.

function returnStatus(req, status) {
//console.log(req);
if(status == 200) {
console.log("The url is available");
// send an event
}
else {
console.log("The url returned status code " + status);
// send a different event
}
}

function fetchStatus(address) {
var client = new XMLHttpRequest();
client.onreadystatechange = function() {
// in case of network errors this might not give reliable results
if(this.readyState == 4)
returnStatus(this, this.status);
}
client.open(“HEAD”, address);
client.send();
}


fetchStatus("/");

 

В практике возникла задача удалить записи, созданные ранее определённой даты. Естественно, дата — это одно из полей таблицы.

Таким образом можно проверить какие записи будут удалены:
SELECT * FROM tablename WHERE date < DATE_SUB(NOW(), INTERVAL 385 DAY);

Удалить записи, которые были созданы ранее 385 дней назад:
DELETE FROM tablename WHERE date < DATE_SUB(NOW(), INTERVAL 385 DAY);