Раньше приходилось заново копировать после каждого обрыва. Но потом придумали механизм, основанный на bookmark’ах, который позволяет продолжить копирование с места разрыва.
Раньше приходилось заново копировать после каждого обрыва. Но потом придумали механизм, основанный на bookmark’ах, который позволяет продолжить копирование с места разрыва.
Вводные данные: 2 сервера Linux связаны между собой через OpenVPN туннель. Нужно для части клиентов за одним из концов VPN’a завернуть весь трафик в туннель, то есть, что бы они выходили в интернет не через свой GW, а через удалённый GW, пройдя через VPN.
UPD. В данной схеме есть нюанс: она будет работать, если клиентские машины находятся за хостом, который является OpenVPN-клиентом. В обратном случае, пакеты просто не будут покидать хост, хотя через tcpdump вы их будете видеть. Связано это с особенностями самого OpenVPN’a. Пока не нашёл как это можно решить. Как workaround, можно либо изменить роли клиент-сервер, либо использовать простой туннель или другой тип VPN’a.
Вот как полностью выглядит сообщение об ошибке:
Connection timed out H=alt4.gmail-smtp-in.l.google.com [142.250.157.26]:25 DT=12m19s: SMTP timeout after sending data block (452056 bytes written)
Примечание: число в скобках и сервер гугла может быть любой.
Заметка написана, как обновление статьи, поскольку в новых ядрах произошли некоторые изменения. По сути, здесь будут выдержки из документации по управлению питанием для ядра Linux.
Начну в порядке от самой простой реализации до самой сложной.
Да, именно с таким сообщением начала падать kafka спустя некоторое время после запуска. Включение режима debug немного увеличило “понятность”
ERROR Error while accepting connection (kafka.network.Acceptor)
java.net.SocketException: Invalid argument
at sun.nio.ch.Net.setIntOption0(Native Method)
at sun.nio.ch.Net.setSocketOption(Net.java:341)
at sun.nio.ch.SocketChannelImpl.setOption(SocketChannelImpl.java:190)
at sun.nio.ch.SocketAdaptor.setBooleanOption(SocketAdaptor.java:271)
at sun.nio.ch.SocketAdaptor.setTcpNoDelay(SocketAdaptor.java:306)
at kafka.network.Acceptor.accept(SocketServer.scala:654)
at kafka.network.Acceptor.run(SocketServer.scala:579)
at java.lang.Thread.run(Thread.java:748)
Что бы запустить скрипт разово, существует несколько методов:
ASLR (англ. address space layout randomization — «рандомизация размещения адресного пространства») — технология, применяемая в операционных системах, при использовании которой случайным образом изменяется расположение в адресном пространстве процесса важных структур данных, а именно образов исполняемого файла, подгружаемых библиотек, кучи и стека.
Как оказывается, просто включить NAT недостаточно. Более того, недостаточно даже подключить helper через sysctl:
net.netfilter.nf_conntrack_helper=1
В сети пишут, что нужно подгрузить модули (некоторые ещё уточняют, что это нужно было до версии 8.Х включитель, а с 9-ой достаточно просто подключить helper через sysctl, но как оказывается, недостаточно)
Ниже будут выдержки цитат из рассылки nginx, которые объясняют простые вещи при открытии/переоткрытии сокета не только в случае nginx’a, а и некоторых общих случаях.