Koneksi yang diteruskan ditolak oleh server: Secara administratif dilarang [buka gagal]

3

Saya kadang-kadang menggunakan Putty sebagai proxy SOCKS, dan saya perhatikan bahwa kadang-kadang, ketika halaman web yang saya coba sambungkan (dari browser web) tidak ada, dan memerlukan batas waktu lama, warung sesi shell (tidak dapat mengetik secara interaktif di terminal sampai batas waktu tercapai), dan juga semua permintaan halaman web lainnya juga terhenti .

Saya baru-baru memperhatikan bahwa ini tampaknya terkait dengan DNS : saat ini, akan terlihat seperti server yang ditentukan pada sshd sisi dalam /etc/resolv.conf mengalami beberapa masalah, dan, sebagai akibatnya, hampir tidak mungkin untuk menelusuri internet melalui proxy Putty SOCKS, dan juga terminal Putty terhenti hampir setiap saat ketika penjelajahan web tidak berhasil dilakukan.

Kesalahan berikut sering muncul di log Putty, setelah itu penundaan berhenti sebentar:

2014-01-11 17:12:03 Forwarded connection refused by server: Administratively prohibited [open failed]

Biasanya, ini yang saya lihat di log, yang memberi saya kesan bahwa browser yang diaktifkan SOCKS saya bahkan tidak tahu alamat IP mana yang akan dihubungkan oleh proxy SOCKS:

2014-01-11 17:18:11 Opening forwarded connection to superuser.com:80

Mengubah server DNS di sekitar ssh daemon hanya akan menjadi solusi sementara, yang tidak akan mengatasi masalah mendasar dengan OpenSSH / Putty berhenti dalam situasi ini. (Tidak menggunakan nama host melalui SOCKS juga tampaknya salah.)

Apakah ada cara untuk mengurangi ssh mengulur-ulur untuk selamanya?

(Paling tidak, sepertinya sshd harus lebih agresif dalam menentukan waktu DNS, dan coba lagi dengan server lain. Saya memiliki beberapa server yang ditentukan di /etc/resolv.conf, dan dig tampaknya menerbitkan kembali permintaan ke server berikutnya setelah tepat 1s, yang tampaknya lebih tepat daripada yang tampaknya dilakukan sshd.)

cnst
sumber

Jawaban:

1

Menurut pengembang OpenSSH di milis resmi, http://lists.mindrot.org/pipermail/openssh-unix-dev/2014-January/031974.html , ini disebabkan oleh fakta bahwa resolver libc standar digunakan oleh OpenSSH, yang sinkron dan memblokir, sehingga tidak ada lalu lintas lain yang diproses saat resolusi sedang berlangsung.

Memperbaiki masalah ini akan membutuhkan perbaikan ssh / channels.c # connect_to dalam OpenSSH ( bug # 1357 menegaskan bahwa itu ada dalam codepath SOCKS5 seperti yang digunakan oleh Mozilla), untuk menggunakan fungsi resolver yang berbeda dari standar getaddrinfo dari libc.

cnst
sumber