southbridgeio / redmine_bots

43 stars 11 forks source link

проблема с IPv6 #38

Open gen555 opened 5 years ago

gen555 commented 5 years ago

День добрый и спасибо за классный плагин :) Есть следующая проблема: При запуске 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:inhandle_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:incall' /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:incall' /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:inrun_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:incall' /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:ininit_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:inblock (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:inblock (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:ineval' /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:inrequest' /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:incall' /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:inbuild_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:inpost' /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:inmethod_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:ininit_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:indaemonize' /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

' Tasks: TOP => redmine_bots:telegram (See full trace by running task with --trace) `

Каким-то чудом удалось пройти авторизацию (возможно помогло увеличение TIMEOUT в скриптах, но вряд ли). Дальше дело не двигается. Можно ли как-то убрать попытки подключения по IPv6, если он отключен в системе, или хотя бы игнорировать ошибки подключения, перебирая другие сервера серверов?

chostik commented 3 years ago

В 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

И проблема ушла.