Xorg টিসিপি শুনতে, কিন্তু শুধুমাত্র লোকালহোস্ট?


12

আমার কিছু এক্স ক্লায়েন্ট প্রোগ্রাম রয়েছে যার একটি এক্স সার্ভারে অ্যাক্সেস দরকার। এটি কেবল টিসিপি দ্বারা এক্স সার্ভার অ্যাক্সেস করতে সক্ষম, ইউনিক্স ডোমেন সকেটের মতো অন্যান্য পদ্ধতি দ্বারা নয়। এটি সার্ভারের মতো একই হোস্টে চলবে, জিনিসগুলিকে সহজ করে তুলবে।

সুতরাং, আমি কীভাবে টিসিপি পোর্ট 6000 শুনতে কেবল আমার জর্গ সার্ভারটি তৈরি করতে পারি, তবে কেবল লোকালহস্টের সংযোগের জন্য?

আমি খুঁজে পেয়েছি কীভাবে এক্স.আর.গো 600 বন্দরে দূরবর্তী সংযোগগুলি শুনতে? , যা দূরবর্তী হোস্টগুলির অ্যাক্সেসকে কীভাবে সক্ষম করতে হবে তা ব্যাখ্যা করে, তবে আমি সত্যিই দূরবর্তী অ্যাক্সেসটি চাই না (সুরক্ষা কারণে, মূলত)।

আমি একরকম টিসিপি-তে ডিফল্ট পরিবহনটি ফরোয়ার্ড করার বিষয়ে ভেবেছিলাম, তবে আমি ডিফল্ট পরিবহনটি কী তা সম্পর্কে সত্যই তথ্য খুঁজে পাইনি।

(আমি এখানে আমার ডিসপ্লে ম্যানেজার হিসাবে কেডিএম ব্যবহার করছি তবে আমি মনে করি যে আমি ডিসপ্লে ম্যানেজারের জন্য সমাধান স্থানান্তর করতে পারি, এমনকি ডিসপ্লে ম্যানেজারটিও স্যুইচ করতে পারি))

কোন ধারনা?

এটি 11.04-তে একটি মিশ্র কুবুন্টু-উবুন্টু-এক্সুবুন্টু ইনস্টলেশন (মূলত কুবুন্টু, তবে আমি উবুন্টু-ডেস্কটপ এবং এক্সুবুন্টু-ডেস্কটপ যুক্ত করেছি boot বুটে এটি এখন জুবুন্টু ১১.০৪ বলছে)। আমি এখন কেডিএম থেকে জিনোম-ক্লাসিক ডেস্কটপ ব্যবহার করছি।


এই এক্স ক্লায়েন্টটি কী তা নিয়ে সকলেই ভাবছেন: এটি আসলে একটি জাভা এসএসএইচ বাস্তবায়ন ( জেএসসি ) যা অন্য হোস্টের কাছে এক্স ফরোয়ার্ডিং করার চেষ্টা করে। আমি মনে করি জাভা সত্যিই ইউনিক্স ডোমেন সকেটগুলিতে অ্যাক্সেস করতে পারে না। একই সমস্যাটি আমার আরেকটি (বর্তমানে বিরতি দেওয়া) প্রকল্পের ক্ষেত্রেও প্রযোজ্য, যেখানে আমি খাঁটি জাভাতে এক্স ক্লায়েন্টকে প্রয়োগ করতে চেয়েছিলাম (যেমন সকেট পড়া / লিখে, কিছু উইন্ডোংয়ের লাইব্রেরি ব্যবহার না করে)।
পাওলো ইবারম্যান 18

@ পাওলো, জাভা আসলে ইউনিক্স ডোমেন সকেটগুলি ব্যবহার করতে পারেন (আপনি নেটিভ লাইব্রেরি লিখতে পারেন যা প্রয়োজনীয় সাইককলগুলিতে অ্যাক্সেস সরবরাহ করতে পারে, বা কেবল ইতিমধ্যে লিখিত আছে এটি সন্ধান করতে পারে)। তবে তারপরে, আপনি কার্যকরভাবে জাভাটির প্রধান সুবিধাটি হারাবেন: উচ্চ বহনযোগ্যতা। সুতরাং আপনার যদি সত্যিই শক্ত প্রয়োজন হয় তবে আপনি খুব সহজেই জাভাতে এক্স ক্লায়েন্ট লাইব্রেরি লিখতে পারতেন যা পিএফ_লোকাল দিয়ে কাজ করবে। আরও লক্ষ করুন যে টিসিপি ওভার লুপব্যাক ইন্টারফেসের মান ইউনিক্স সকেটের চেয়ে অনেক বেশি ওভারহেড রয়েছে।
ulidtko

হ্যাঁ, আমি কিছু লাইব্রেরি পেয়েছি, তবে যতক্ষণ না আমি সত্যিকারের ইউডিএস-ঠিকানা জানি না, এটি আমাকে সাহায্য করবে না। এটি কোথাও নথিভুক্ত করা হয়?
পাওলো ইবারম্যান

1
@ পাওলো, ইউনিক্স ডোমেন সকেটগুলি সাধারণত ফাইল সিস্টেমের নেমস্পেস ব্যবহার করে। তাদের ঠিকানা ফাইলের নাম । সম্পর্কিত ফাইল নোডগুলি হ'ল "বিশেষ সকেট ফাইল"। আমি আমার সিস্টেমে অসংখ্য সংযোগ আছে /tmp/.X11-unix/X0- এই হল AF_UNIX ঠিকানা একটি উদাহরণ (ব্যবহারের netstat -xআপনার নিজের দেখতে)। এক্স 11 প্রোটোকল নির্দিষ্টকরণের সাথে সংযোগের জন্য সঠিক ঠিকানাগুলি নির্ধারণ করা উচিত। আপনি যদি সেই প্রোটোকলের জন্য ক্লায়েন্ট লাইব্রেরি লিখছেন তবে আপনাকে অবশ্যই এটি পড়তে হবে।
ulidtko

1
/tmp/.X11-unix/X0এখানে সকেট হিসাবে উপস্থিত রয়েছে (ওপেনসুএসই), আমি আবার ঘরে বসে পরীক্ষা করব (প্রশ্নের মধ্যে থাকা উবুন্টু সিস্টেমে)। এখন আমাকে কেবল এটি দেখতে হবে কীভাবে এটি 6০০০
তে

উত্তর:


8

দেখে মনে হচ্ছে এটির মতো কাজ হবে socat। এখানে একটি কমান্ড লাইন কাজ করছে বলে মনে হচ্ছে, যদি X সার্ভারটি ইতিমধ্যে টিসিপিতে চালিত না হয়:

socat -d -d TCP-LISTEN:6000,fork,bind=localhost UNIX-CONNECT:/tmp/.X11-unix/X0

তাহলে আমি করতে পারি

xlogo -display localhost:0

আশ্চর্যজনকভাবে, এটি 6001 এ শুনতে এবং তারপরে - আমি পেয়েছি localhost:1তার পরিবর্তে প্রদর্শনটি নির্দিষ্ট করে দিলে এটি কাজ করছে বলে মনে হচ্ছে না । মনে হচ্ছে আমাকে আবার এক্স প্রোটোকলটি পড়তে হবে। (এবং জেএসচে এর পরে এটি ছেড়ে দেয় তবে এটি অন্য সমস্যা)localhost:0No protocol specifiedInvalid MIT-MAGIC-COOKIE-1 key


হ্যাঁ!! xserver-allow-tcp=true এক্সটি ইতিমধ্যে চালু -nolisten tcp না /etc/X11/xinit/xserverrcকরেই শুরু করার পরে তৈরি করার উপায় খুঁজছিলাম । আমার ক্ষেত্রে কেবল bind=0.0.0.0আমার বাহ্যিক হোস্টকে অনুমতি দেওয়া।
মার্কোস

5

কোন ইন্টারফেসটি শুনতে হবে তা নিয়ন্ত্রণ করার জন্য বর্তমানে জর্গোড কোডের কোনও বিকল্প নেই। এটি যুক্ত করা শক্ত হওয়া উচিত নয়, তবে অন্য মেশিনগুলি থেকে 6000 পোর্টে আগত সংযোগগুলি ব্লক করার জন্য আপনার ফায়ারওয়ালটি কনফিগার করা আরও সহজ হওয়া উচিত।


2

অন্য কিছু চিন্তা ...

  1. এটিকে অনুমতি দিন তবে xhost (এবং / অথবা নেটওয়ার্ক ফিল্টারিং) দিয়ে ব্লক করুন

এটি করার Theতিহ্যগত উপায়টি হ'ল এক্স সার্ভারটি টিসিপি সকেট শুনতে এবং কোন হোস্টকে সংযোগ করার অনুমতি দেয় তা নির্ধারণ করার জন্য এক্স হোস্ট ব্যবহার করে। এক্স হোস্টের জন্য ম্যান পৃষ্ঠা দেখুন (1) (অতিরিক্তভাবে, অবশ্যই, আইপি ঠিকানা এবং পোর্ট ফিল্টারিং এখানে খুব সহায়তা করবে, পূর্ববর্তী পরামর্শগুলি যেমন উল্লেখ করেছে।)

  1. শুধুমাত্র স্থানীয় ইন্টারফেসে শুনুন

উপরে অ্যালাঙ্কের মন্তব্য, এখন সেখানে কোনও কোড নেই, তবে প্রায়!

মনে রাখবেন যে (প্রায়) সমস্ত হোস্টের কমপক্ষে দুটি ইন্টারফেস থাকে, লুপব্যাক ইন্টারফেস লো 0 (সর্বদা 127.0.0.1) এবং সাধারণ ইথারনেট এথ0 (বা wlan0 বা যাই হোক না কেন, যা বলা যাক 192.168.0.128) এবং অনেকের আরও আছে have সাধারণত টিসিপি / আইপি সার্ভার (অর্থাত্ এক্স সার্ভার) তাদের যে কোনও আইপি ঠিকানার সাথে যে কোনও ইন্টারফেসে ইনকামিং সংযোগের অনুমতি দেবে, তবে বেশিরভাগ সফ্টওয়্যার আপনাকে চাইলে একটি আইপি ঠিকানা নির্দিষ্ট করতে দেয়। আসল কাজটি বাইন্ড (2) দ্বারা সম্পন্ন হয়, যা হয় INADDR_ANY (0.0.0.0) বা একটি আসল আইপি ঠিকানা নেয়।

Xorg সার্ভার স্থানীয়-ঠিকানাটির নাম প্রয়োগ করে তবে দুর্ভাগ্যক্রমে এটি কেবল XDMCP এর জন্য (ফাইলটি দেখুন OS / xdmcp.c যা এটিকে সঠিকভাবে প্রয়োগ করে আমি জানি I) এক্স প্রোটোকলের আসল সংযোগ, আমার বিশ্বাস, সকেটআইএনটিক্রিটলাইস্টার দ্বারা সম্পন্ন হয়েছে ফাইলটিতে /usr/incolve/X11/Xtrans/Xtranssock.c, যা INADDR_ANY এ ঠিকানাটি সেট করে এবং তারপরে আর কোনও প্রক্রিয়াজাতকরণ ছাড়াই এটিকে আবদ্ধ করে। Xtranssock.c- এ সকেটক্রিয়েটলিস্টনার () এর ঠিক আগে ভেরিয়েবলের 'সোকনাম' এর সাথে সংযোগ স্থাপনের জন্য যা দরকার তা হ'ল -ফ্র্যামের (যা ওএস / এক্সডিএমসিপি.সি. থেকে ফরোএড্রেস হিসাবে ডিল করা হয়) some অবশ্যই সমস্যাটি হ'ল সত্য যে সমস্ত পরিবহণ বিষয়গুলি পরিবহণ-নিরপেক্ষ উপায়ে করা হয় তাই Xtranssock.c- এ তথ্য পাওয়া কিছুটা জটিল।

ফাইলের পাথ এবং আরও বিভিন্নরকম হতে পারে, উবুন্টু 10.04 এলটিএসের সাথে দেখা হয়েছিল এবং নোট করুন যে Xtranssock.c এ ফাংশনের নামগুলি একটি ম্যাক্রো ট্রান্স দ্বারা পরিবর্তিত হয়েছে। http://cgit.freedesktop.org/xorg/xserver/tree/os/xdmcp.c

আশা করি কিছুটা কাজে লাগবে।

আন্তরিক শুভেচ্ছা

জোনাথান।


আপাতত, আমি যাদু কুকি প্রমাণীকরণ ব্যবহার করছি, সুতরাং একই হোস্টের সংযোগগুলিও অনুমোদিত হবে না। xhostঅ্যাক্সেস প্রশস্ত করতে হবে, এটি সঙ্কুচিত না।
পাওলো ইবারম্যান

এবং আমি মনে করি না যে আমি আমার এক্স সার্ভারটিতে হ্যাক করব, তবে এটি করার জন্য পরামর্শের জন্য ধন্যবাদ।
পাওলো ইবারম্যান

9 বছর পরে এবং এটি পরিবর্তন হয়নি। gitlab.freedesktop.org/xorg/lib/libxtrans/blob/master/…
daveloyall
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.