स्मार्ट डायलर कॉन्फ़िगरेशन

स्मार्ट डायलर, टेस्ट डोमेन की दी गई सूची के लिए, डीएनएस और टीएलएस को अनब्लॉक करने वाली रणनीति खोजता है. इसमें एक कॉन्फ़िगरेशन होता है, जिसमें कई रणनीतियों के बारे में जानकारी होती है.

स्मार्ट डायलर के लिए 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 फ़ील्ड में, जांच के लिए डीएनएस रिज़ॉल्वर की सूची दी जाती है.
  • हर डीएनएस रिज़ॉल्वर, इनमें से किसी एक तरह का हो सकता है:
    • system: सिस्टम रिज़ॉल्वर का इस्तेमाल करें. खाली ऑब्जेक्ट की मदद से बताएं.
    • https: एन्क्रिप्ट (सुरक्षित) किए गए डीएनएस-ओवर-एचटीटीपीएस (डीएनएसओएच) रिज़ॉल्वर का इस्तेमाल करें.
    • tls: एन्क्रिप्ट किए गए डीएनएस ओवर टीएलएस (DoT) रिज़ॉल्वर का इस्तेमाल करें.
    • udp: यूडीपी रिज़ॉल्वर का इस्तेमाल करें.
    • tcp: टीसीपी रिज़ॉल्वर का इस्तेमाल करें.

डीएनएस-ओवर-एचटीटीपीएस रिज़ॉल्वर (डीएचओ)

https:
  name: dns.google
  address: 8.8.8.8
  • name: DoH सर्वर का डोमेन नेम.
  • address: DoH सर्वर का होस्ट:पोर्ट. डिफ़ॉल्ट रूप से, name:443 पर सेट होता है.

डीएनएस-ओवर-टीएलएस रिज़ॉल्वर (DoT)

tls:
  name: dns.google
  address: 8.8.8.8
  • name: DoT सर्वर का डोमेन नेम.
  • address: DoT सर्वर का होस्ट:पोर्ट. डिफ़ॉल्ट रूप से, name:853 पर सेट होता है.

यूडीपी रिज़ॉल्वर

udp:
  address: 8.8.8.8
  • address: यूडीपी रिज़ॉल्वर का होस्ट:पोर्ट.

टीसीपी रिज़ॉल्वर

tcp:
  address: 8.8.8.8
  • address: टीसीपी रिज़ॉल्वर का होस्ट:पोर्ट.

TLS कॉन्फ़िगरेशन

  • tls फ़ील्ड में, टेस्ट करने के लिए TLS ट्रांसपोर्ट की सूची दी जाती है.
  • हर टीएलएस ट्रांसपोर्ट एक स्ट्रिंग होती है, जो इस्तेमाल किए जाने वाले ट्रांसपोर्ट के बारे में बताती है.
  • उदाहरण के लिए, override:host=cloudflare.net|tlsfrag:1 एक ऐसे ट्रांसपोर्ट के बारे में बताता है जो Cloudflare और TLS फ़्रैगमेंटेशन के साथ डोमेन फ़्रोंटिंग का इस्तेमाल करता है. ज़्यादा जानकारी के लिए, कॉन्फ़िगरेशन दस्तावेज़ देखें.

फ़ॉलबैक कॉन्फ़िगरेशन

अगर कोई भी प्रॉक्सी-लेस रणनीति कनेक्ट नहीं हो पाती है, तो फ़ॉलबैक कॉन्फ़िगरेशन का इस्तेमाल किया जाता है. उदाहरण के लिए, यह उपयोगकर्ता के कनेक्शन को आज़माने के लिए, बैकअप प्रॉक्सी सर्वर तय कर सकता है. फ़ॉलबैक का इस्तेमाल करने पर, कनेक्ट होने में ज़्यादा समय लगेगा. ऐसा इसलिए, क्योंकि पहले अन्य डीएनएस/TLS रणनीतियों को काम न करने या टाइम आउट होने का इंतज़ार करना होगा.

फ़ॉलबैक स्ट्रिंग इस तरह की होनी चाहिए:

  • configurl में बताई गई मान्य StreamDialer कॉन्फ़िगरेशन स्ट्रिंग.
  • psiphon फ़ील्ड के चाइल्ड के तौर पर, मान्य Psiphon कॉन्फ़िगरेशन ऑब्जेक्ट.

Shadowsocks सर्वर का उदाहरण

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

SOCKS5 सर्वर का उदाहरण

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

Psiphon कॉन्फ़िगरेशन का उदाहरण

Psiphon नेटवर्क का इस्तेमाल करने के लिए, आपको ये काम करने होंगे:

  1. Psiphon की टीम से संपर्क करके, ऐसा कॉन्फ़िगरेशन पाएं जिससे आपको उनके नेटवर्क का ऐक्सेस मिल सके. इसके लिए, कानूनी समझौते की ज़रूरत पड़ सकती है.
  2. Psiphon का मिला कॉन्फ़िगरेशन, अपने स्मार्ट डायलर कॉन्फ़िगरेशन के fallback सेक्शन में जोड़ें. JSON, YAML के साथ काम करता है. इसलिए, अपने Psiphon कॉन्फ़िगरेशन को सीधे fallback सेक्शन में कॉपी करके चिपकाया जा सकता है. जैसे:
fallback:
  - psiphon: {
      "PropagationChannelId": "FFFFFFFFFFFFFFFF",
      "SponsorId": "FFFFFFFFFFFFFFFF",
      "DisableLocalSocksProxy" : true,
      "DisableLocalHTTPProxy" : true,
      ...
    }

स्मार्ट डायलर का इस्तेमाल करने का तरीका

स्मार्ट डायलर का इस्तेमाल करने के लिए, StrategyFinder ऑब्जेक्ट बनाएं और NewDialer तरीके को कॉल करें. इसके लिए, टेस्ट डोमेन की सूची और YAML कॉन्फ़िगरेशन को पास करें. 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.

यह एक बुनियादी उदाहरण है. इसे अपने इस्तेमाल के उदाहरण के हिसाब से बदलना पड़ सकता है.