redmine_bots
redmine_bots copied to clipboard
проблема с IPv6
День добрый и спасибо за классный плагин :) Есть следующая проблема: При запуске bundle exec rake redmine_bots:telegram (как и других команд, инициирующих связь с сервером Телеграма) получаю ошибку подключения из-за отключенного IPv6:
rake aborted! Faraday::ConnectionFailed: Failed to connect to 2001:67c:4e8:f004::9: Network is unreachable /usr/local/rvm/gems/ruby-2.6.3/gems/patron-0.13.3/lib/patron/session.rb:330:in
handle_request'
/usr/local/rvm/gems/ruby-2.6.3/gems/patron-0.13.3/lib/patron/session.rb:330:in request' /opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/redmine_bots/telegram/bot/faraday_adapter.rb:27:in
call'
/usr/local/rvm/gems/ruby-2.6.3/gems/faraday-0.15.4/lib/faraday/request/url_encoded.rb:15:in call' /usr/local/rvm/gems/ruby-2.6.3/gems/faraday-0.15.4/lib/faraday/request/multipart.rb:15:in
call'
/usr/local/rvm/gems/ruby-2.6.3/gems/faraday-0.15.4/lib/faraday/rack_builder.rb:143:in build_response' /usr/local/rvm/gems/ruby-2.6.3/gems/faraday-0.15.4/lib/faraday/connection.rb:387:in
run_request'
/usr/local/rvm/gems/ruby-2.6.3/gems/faraday-0.15.4/lib/faraday/connection.rb:175:in post' /usr/local/rvm/gems/ruby-2.6.3/gems/telegram-bot-ruby-0.8.6.1/lib/telegram/bot/api.rb:72:in
call'
/usr/local/rvm/gems/ruby-2.6.3/gems/telegram-bot-ruby-0.8.6.1/lib/telegram/bot/api.rb:60:in method_missing' /opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/redmine_bots/telegram.rb:44:in
init_bot'
/opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/tasks/telegram.rake:15:in init_bot' /opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/tasks/telegram.rake:27:in
block (3 levels) in <top (required)>'
/opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/redmine_bots/utils.rb:25:in daemonize' /opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/tasks/telegram.rake:26:in
block (2 levels) in <top (required)>'
/usr/local/rvm/gems/ruby-2.6.3/gems/rake-12.3.3/exe/rake:27:in <top (required)>' /usr/local/rvm/gems/ruby-2.6.3/bin/ruby_executable_hooks:24:in
eval'
/usr/local/rvm/gems/ruby-2.6.3/bin/ruby_executable_hooks:24:in `
Caused by:
Patron::ConnectionFailed: Failed to connect to 2001:67c:4e8:f004::9: Network is unreachable
/usr/local/rvm/gems/ruby-2.6.3/gems/patron-0.13.3/lib/patron/session.rb:330:in handle_request' /usr/local/rvm/gems/ruby-2.6.3/gems/patron-0.13.3/lib/patron/session.rb:330:in
request'
/opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/redmine_bots/telegram/bot/faraday_adapter.rb:27:in call' /usr/local/rvm/gems/ruby-2.6.3/gems/faraday-0.15.4/lib/faraday/request/url_encoded.rb:15:in
call'
/usr/local/rvm/gems/ruby-2.6.3/gems/faraday-0.15.4/lib/faraday/request/multipart.rb:15:in call' /usr/local/rvm/gems/ruby-2.6.3/gems/faraday-0.15.4/lib/faraday/rack_builder.rb:143:in
build_response'
/usr/local/rvm/gems/ruby-2.6.3/gems/faraday-0.15.4/lib/faraday/connection.rb:387:in run_request' /usr/local/rvm/gems/ruby-2.6.3/gems/faraday-0.15.4/lib/faraday/connection.rb:175:in
post'
/usr/local/rvm/gems/ruby-2.6.3/gems/telegram-bot-ruby-0.8.6.1/lib/telegram/bot/api.rb:72:in call' /usr/local/rvm/gems/ruby-2.6.3/gems/telegram-bot-ruby-0.8.6.1/lib/telegram/bot/api.rb:60:in
method_missing'
/opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/redmine_bots/telegram.rb:44:in init_bot' /opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/tasks/telegram.rake:15:in
init_bot'
/opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/tasks/telegram.rake:27:in block (3 levels) in <top (required)>' /opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/redmine_bots/utils.rb:25:in
daemonize'
/opt/redmine/redmine-4.0.4/plugins/redmine_bots/lib/tasks/telegram.rake:26:in block (2 levels) in <top (required)>' /usr/local/rvm/gems/ruby-2.6.3/gems/rake-12.3.3/exe/rake:27:in
<top (required)>'
/usr/local/rvm/gems/ruby-2.6.3/bin/ruby_executable_hooks:24:in eval' /usr/local/rvm/gems/ruby-2.6.3/bin/ruby_executable_hooks:24:in
Каким-то чудом удалось пройти авторизацию (возможно помогло увеличение TIMEOUT в скриптах, но вряд ли). Дальше дело не двигается. Можно ли как-то убрать попытки подключения по IPv6, если он отключен в системе, или хотя бы игнорировать ошибки подключения, перебирая другие сервера серверов?
В Debian 10 сделал так:
nano /etc/sysctl.conf
В конец файла добавил строки net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.ens192.disable_ipv6 = 1
причём вместо ens192 вставьте свой интерфейс
запустил команду
sysctl -p
И проблема ушла.