დაუკავშირდი რეესტრის პორტს გვირაბის გავლით, დააკვირდი ხელის ჩამორთმევის დაწყებას და შემდეგ ნახე, როგორ მაინც იწურება JConsole-ის დრო. ეს ხდება იმიტომ, რომ პირველი TCP კავშირი არ არის მართვის კავშირი: ეს არის ძიება. RMI რეესტრი პასუხობს მითითებით, რომელიც ასახელებს ჰოსტს და მეორე პორტს, და JConsole შემდეგ მიდის იქ, სადაც უთხრეს. თუ გვირაბი აღწევს მხოლოდ სერვერის პირველ პორტამდე, ან მითითება ასახელებს მისამართს, რომელიც მხოლოდ სერვერის საკუთარ ლოკალურ ქსელში არსებობს, კლიენტი ჩერდება თითქოსდა წარმატების შემდეგ.

მითი: ერთი ღია პორტი ერთი კავშირია

დისტანციური JMX RMI-ის გავლით მოიცავს სულ მცირე ორ ბოლო წერტილს და მათ სისტემის სხვადასხვა ნაწილები ირჩევენ. რეესტრის პორტი არის ის, რასაც კლიენტში აკრეფ, და ის არსებობს იმისთვის, რომ გასცეს stub, რომელიც აღწერს ნამდვილ კონექტორს. პირველი წარმატებული სოკეტის მართვის გზის ღიაობის მტკიცებულებად მიჩნევა ორწუთიან დიაგნოზს firewall-ის ბილეთებით სავსე შუადღედ აქცევს.

უყურე თავად კლიენტის შეცდომას და არა სერვერის მსმენელთა სიას. შეცდომა ხელის ჩამორთმევის დაწყების შემდეგ გეუბნება, რომ მეორე კავშირი, და არა პირველი, არ დასრულდა.

რას აბრუნებს რეესტრი

Stub შეიცავს მისამართსა და პორტს, სერიალიზებულს იმ მომენტში, როცა კონექტორი შეიქმნა. რამდენიმე ინტერფეისის მქონე სერვერზე სტეკმა შეიძლება აირჩია მისამართი, რომელიც ლოკალური ქსელიდან მისაწვდომია, შენიდან კი არა. კლიენტმა განსხვავება არ იცის; ის უბრალოდ აკრეფს მიღებულ მნიშვნელობას და პაკეტი მიჰყვება მარშრუტს, რომელიც ამ მისამართისთვის არსებობს, VPN კლიენტზე კი ხშირად საერთოდ არ არსებობს. ეს არის მომენტი, როცა მეორე კავშირი სცდება.

ეს არის მიზეზი იმისა, თუ რატომ ჩნდება შეცდომა გარემოებს შორის არათანაბრად: ერთი და იგივე სერვერს შეუძლია სხვაგვარად მოიქცეს ლოკალურ ქსელში მყოფი მომხმარებლისთვის და გვირაბში მყოფი მომხმარებლისთვის, JMX კონფიგურაციაში ყოველგვარი ცვლილების გარეშე.

ორი პორტი და ორი თვისება, რომლებიც ამაგრებენ მათ

რეესტრის პორტი მოდის com.sun.management.jmxremote.port-დან, ხოლო კონექტორი შეიძლება დამაგრდეს com.sun.management.jmxremote.rmi.port-ით, ნაცვლად იმისა, რომ სტეკს დაეტოვოს. ორივე ცხადად დააყენე, თუ კლიენტსა და სერვერს შორის firewall ან უსაფრთხოების ჯგუფია, რადგან წინასწარ გაუთვალისწინებელი მეორე პორტის ნებართვა შეუძლებელია, და მისთვის გახსნილი ფართო დიაპაზონი ერთ მნიშვნელობაზე უარესია.

შემდეგ სერვერზე ss -ltn ან netstat -an-ის საშუალებით დაადასტურე, რომ ორივე პორტი ისმენს და რომელ მისამართებზე. loopback-ზე მიბმული მსმენელი სწორია მხოლოდ ლოკალური განლაგებისთვის და ამ შემთხვევისთვის უსარგებლო.

როცა გამოცხადებული სახელი არასწორია

დისტანციურ მითითებაში მოცემულ ჰოსტის სახელს ადგენს java.rmi.server.hostname. ის გავლენას ახდენს იმაზე, რას აცხადებს stub; თავისთავად ეს არ არის მითითება ყოველი მსმენელის ერთ ინტერფეისზე მიბმის შესახებ, ამიტომ მისი დაყენება ყოველთვის არ იძლევა მოსალოდნელ ერთპორტიან ქცევას. დააყენე ის, გადატვირთე პროცესი და შემდეგ შეამოწმე, რას შეიცავს stub სინამდვილეში. აირჩიე სახელი ან მისამართი, რომლის გადაწყვეტაც კლიენტს შეუძლია და გვირაბის გავლით მიწვდომაც, და გადატვირთე პროცესი, რომ stub ხელახლა აშენდეს.

კონტეინერების ქსელები ამას აუარესებს, რადგან პროცესის მიერ დანახული მისამართი შეიძლება იყოს შიდა და კონტეინერის გარედან მარშრუტიზაციისთვის მიუწვდომელი. გამოაქვეყნე სასურველი ჰოსტის სახელი ცხადად, ნაცვლად იმისა, რომ არჩევანი პლატფორმას დაუტოვო.

თუ გვირაბს SSH-ით აკეთებ და არა VPN-ით, იგივე პრობლემა სხვა სამოსში ჩნდება: მხოლოდ რეესტრის პორტის გადაცემა მეორე ბოლო წერტილს ტოვებს მისამართზე, რომელსაც შენი კლიენტი ვერ მიაღწევს. გადასცე ორივე პორტი და მიაღწიე იმას, რომ გამოცხადებული სახელი გადაწყდეს იმაზე, რასაც კლიენტი ლოკალურად მიაღწევს.

არ გამორთო მართვის უსაფრთხოება გამარტივებისთვის

ავთენტიფიკაციისა და TLS-ის გამომრთველი ნაწილები ადვილად საპოვნელია და კავშირს ამუშავებს ისე, რომ მოგვიანებით მოგიწევს ამის გაუქმება. დისტანციური JMX არის მართვის ინტერფეისი იმავე უფლებებით, რაც მის მიერ შემოწმებულ პროცესს; შეინარჩუნე მისი წვდომის კონტროლი და თუ კლიენტს ვერ წარმოადგინა სერთიფიკატები, ეს გაასწორე.

როცა ბოლო წერტილები სწორია, შეინახე შემდეგი შეცდომა, რომელსაც დაინახავ. სანდოობის საცავის ან ანგარიშის უარყოფა უფრო გვიანი ეტაპია, ვიდრე მიუწვდომელი კონექტორი, და ნიშნავს, რომ ქსელური სამუშაო დასრულებულია.

დაკავშირებული სტატიები