স্মার্ট ডায়লার কনফিগারেশন

স্মার্ট ডায়ালার এমন একটি কৌশল অনুসন্ধান করে যা পরীক্ষার ডোমেনের একটি প্রদত্ত তালিকার জন্য DNS এবং TLS আনব্লক করে। এটি থেকে বাছাই করার জন্য একাধিক কৌশল বর্ণনা করে একটি কনফিগারেশন লাগে।

স্মার্ট ডায়লারের জন্য YAML কনফিগারেশন

স্মার্ট ডায়ালার যে কনফিগারেশন নেয় তা একটি YAML ফর্ম্যাটে। এখানে একটি উদাহরণ:

dns:
  - system: {}
  - https:
      name: 8.8.8.8
  - https:
      name: 9.9.9.9
tls:
  - ""
  - split:2
  - tlsfrag:1

fallback:
  - ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1

DNS কনফিগারেশন

  • dns ক্ষেত্র পরীক্ষা করার জন্য DNS সমাধানকারীদের একটি তালিকা নির্দিষ্ট করে।
  • প্রতিটি DNS সমাধানকারী নিম্নলিখিত ধরনের হতে পারে:
    • system : সিস্টেম রিসোভার ব্যবহার করুন। একটি খালি বস্তু দিয়ে নির্দিষ্ট করুন।
    • https : HTTPS (DoH) সমাধানকারীর উপর একটি এনক্রিপ্ট করা DNS ব্যবহার করুন।
    • tls : TLS (DoT) সমাধানকারীর উপর একটি এনক্রিপ্ট করা DNS ব্যবহার করুন।
    • udp : একটি UDP সমাধানকারী ব্যবহার করুন।
    • tcp : একটি TCP সমাধানকারী ব্যবহার করুন।

DNS-ওভার-HTTPS সমাধানকারী (DoH)

https:
  name: dns.google
  address: 8.8.8.8
  • name : DoH সার্ভারের ডোমেইন নাম।
  • address : হোস্ট: DoH সার্ভারের পোর্ট। name ডিফল্ট: 443.

DNS-ওভার-TLS সমাধানকারী (DoT)

tls:
  name: dns.google
  address: 8.8.8.8
  • name : DoT সার্ভারের ডোমেইন নাম।
  • address : হোস্ট: DoT সার্ভারের পোর্ট। name ডিফল্ট: 853.

UDP সমাধানকারী

udp:
  address: 8.8.8.8
  • address : হোস্ট: UDP সমাধানকারীর পোর্ট।

TCP সমাধানকারী

tcp:
  address: 8.8.8.8
  • address : হোস্ট:টিসিপি সমাধানকারীর পোর্ট।

TLS কনফিগারেশন

  • tls ক্ষেত্র পরীক্ষা করার জন্য TLS পরিবহনের একটি তালিকা নির্দিষ্ট করে।
  • প্রতিটি TLS পরিবহন একটি স্ট্রিং যা ব্যবহার করার জন্য পরিবহন নির্দিষ্ট করে।
  • উদাহরণস্বরূপ, override:host=cloudflare.net|tlsfrag:1 একটি পরিবহন নির্দিষ্ট করে যা ক্লাউডফ্লেয়ার এবং TLS ফ্র্যাগমেন্টেশনের সাথে ডোমেন ফ্রন্টিং ব্যবহার করে। বিস্তারিত জানার জন্য কনফিগার ডকুমেন্টেশন দেখুন।

ফলব্যাক কনফিগারেশন

একটি ফলব্যাক কনফিগারেশন ব্যবহার করা হয় যদি কোনো প্রক্সিলেস কৌশল সংযোগ করতে সক্ষম না হয়। উদাহরণস্বরূপ এটি ব্যবহারকারীর সংযোগ চেষ্টা করার জন্য একটি ব্যাকআপ প্রক্সি সার্ভার নির্দিষ্ট করতে পারে৷ একটি ফলব্যাক ব্যবহার শুরু করা ধীর হবে, যেহেতু প্রথমে অন্যান্য DNS/TLS কৌশলগুলি অবশ্যই ব্যর্থ/টাইমআউট হবে৷

ফলব্যাক স্ট্রিংগুলি হওয়া উচিত:

  • একটি বৈধ StreamDialer কনফিগারেশন স্ট্রিং যেমন configurl এ সংজ্ঞায়িত করা হয়েছে।
  • একটি বৈধ Psiphon কনফিগারেশন অবজেক্ট একটি psiphon ক্ষেত্রের একটি শিশু হিসাবে।

Shadowsocks সার্ভার উদাহরণ

fallback:
  - ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1

SOCKS5 সার্ভারের উদাহরণ

fallback:
  - socks5://[USERINFO]@[HOST]:[PORT]

Psiphon কনফিগার উদাহরণ

Psiphon নেটওয়ার্ক ব্যবহার করতে, আপনার প্রয়োজন হবে:

  1. একটি কনফিগারেশন পেতে Psiphon টিমের সাথে যোগাযোগ করুন যা আপনাকে তাদের নেটওয়ার্কে অ্যাক্সেস দেয়। এটি একটি চুক্তি প্রয়োজন হতে পারে.
  2. আপনার স্মার্ট ডায়লার কনফিগারেশনের fallback বিভাগে প্রাপ্ত Psiphon কনফিগারেশন যোগ করুন। যেহেতু JSON YAML-এর সাথে সামঞ্জস্যপূর্ণ, আপনি আপনার Psiphon কনফিগারেশনটি সরাসরি fallback বিভাগে অনুলিপি এবং পেস্ট করতে পারেন, যেমন:
fallback:
  - psiphon: {
      "PropagationChannelId": "FFFFFFFFFFFFFFFF",
      "SponsorId": "FFFFFFFFFFFFFFFF",
      "DisableLocalSocksProxy" : true,
      "DisableLocalHTTPProxy" : true,
      ...
    }

কিভাবে স্মার্ট ডায়ালার ব্যবহার করবেন

স্মার্ট ডায়ালার ব্যবহার করতে, একটি StrategyFinder অবজেক্ট তৈরি করুন এবং টেস্ট ডোমেন এবং YAML কনফিগারেশনের তালিকায় পাস করে NewDialer পদ্ধতিতে কল করুন। NewDialer পদ্ধতি একটি transport.StreamDialer ফেরত দেবে। স্ট্রিমডাইলার যেটি পাওয়া কৌশল ব্যবহার করে সংযোগ তৈরি করতে ব্যবহার করা যেতে পারে। যেমন:

finder := &smart.StrategyFinder{
    TestTimeout:  5 * time.Second,
    LogWriter:   os.Stdout,
    StreamDialer: &transport.TCPDialer{},
    PacketDialer: &transport.UDPDialer{},
}

configBytes := []byte(`
dns:
  - system: {}
  - https:
      name: 8.8.8.8
  - https:
      name: 9.9.9.9
tls:
  - ""
  - split:2
  - tlsfrag:1
fallback:
  - ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1
`)

dialer, err := finder.NewDialer(
  context.Background(),
  []string{"www.google.com"},
  configBytes
)
if err != nil {
    // Handle error.
}

// Use dialer to create connections.

এটি একটি মৌলিক উদাহরণ এবং আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে মানিয়ে নেওয়ার প্রয়োজন হতে পারে।