การตั้งค่าพร็อกซีของระบบ (การสลับ IP)¶
ในบทนี้ คุณจะได้เรียนรู้วิธีการตั้งค่า IP พร็อกซีสำหรับโทรศัพท์มือถือปัจจุบันของคุณ FIRERPA รองรับการตั้งค่าพร็อกซี HTTP และ SOCKS5 สำหรับโทรศัพท์มือถือของคุณ ซึ่งจะทำให้ทราฟฟิกการสื่อสารทั้งหมดของโทรศัพท์มือถือของคุณถูกส่งผ่านพร็อกซีที่ตั้งค่าไว้ ในปัจจุบัน ฟังก์ชันนี้ยังไม่รองรับ IPV6
การเชื่อมต่อพร็อกซี¶
อินเทอร์เฟซนี้มีพารามิเตอร์จำนวนมาก สมมติว่าพร็อกซีที่คุณได้รับจากผู้ให้บริการคือ http://1.x.x.x:8080 เพียงใช้โค้ดไม่กี่บรรทัดด้านล่างนี้ ก็สามารถทำให้ทราฟฟิกของอุปกรณ์ผ่านพร็อกซีนี้ได้ คุณสามารถดูรายละเอียดพารามิเตอร์ทั้งหมดได้ที่ส่วน พารามิเตอร์ทั้งหมด ด้านล่างเพื่อทำความเข้าใจพารามิเตอร์ที่คุณสามารถใช้ได้
profile = GproxyProfile()
profile.type = GproxyType.HTTP_CONNECT
profile.drop_udp = True
profile.host = "1.x.x.x"
profile.port = 8080
d.start_gproxy(profile)
โปรดทราบว่า หลังจากตั้งค่าพร็อกซีแล้ว แอปพลิเคชันที่กำลังทำงานอยู่จะไม่ใช้พร็อกซีที่ตั้งค่าไว้ในทันที เนื่องจากแอปพลิเคชันเหล่านี้ได้สร้างการเชื่อมต่อ TCP เสร็จสิ้นแล้วก่อนที่จะมีการตั้งค่าพร็อกซี ดังนั้น คุณจำเป็นต้องปิดและเปิดแอปพลิเคชันเป้าหมายด้วยตนเองเพื่อให้แอปพลิเคชันสร้างการเชื่อมต่อผ่านพร็อกซี
ประเภทของพร็อกซี¶
พารามิเตอร์การเข้ารหัสของ Shadowsocks¶
รายการด้านล่างนี้คือประเภทการเข้ารหัสของ Shadowsocks ที่รองรับ รองรับเฉพาะวิธีการเข้ารหัสที่มีอยู่ในรายการเท่านั้น และไม่รองรับพารามิเตอร์การทำให้สับสน (obfuscation)
สำหรับ Shadowsocks โปรดใช้วิธีการต่อไปนี้เพื่อตั้งค่าวิธีการเข้ารหัสและรหัสผ่าน
profile.login = "chacha20-ietf-poly1305"
profile.password = "รหัสผ่าน"
การปิดพร็อกซี¶
คุณสามารถใช้คำสั่งต่อไปนี้เพื่อปิดพร็อกซีที่ FIRERPA ตั้งค่าไว้ในระบบ อินเทอร์เฟซนี้ใช้งานง่ายมาก และไม่ต้องการพารามิเตอร์เพิ่มเติมใดๆ
d.stop_gproxy()
พารามิเตอร์ทั้งหมด¶
ด้านล่างนี้คือข้อมูลการกำหนดค่าพารามิเตอร์ทั้งหมดสำหรับอินเทอร์เฟซพร็อกซี คุณสามารถเลือกใช้พารามิเตอร์ที่ต้องการได้ตามคำอธิบายของแต่ละพารามิเตอร์
คุณสามารถกำหนดค่าประเภทของบริการพร็อกซีผ่านพารามิเตอร์ต่อไปนี้ หากเป็นพร็อกซี socks5 ให้ใช้ GproxyType.SOCKS5
profile.type = GproxyType.HTTP_CONNECT
หากคุณต้องการเปลี่ยนเส้นทาง (redirect) การสืบค้น DNS ไปยัง 114 พารามิเตอร์นี้จะทำให้การสืบค้น DNS ทั้งหมดที่ส่งจากระบบถูกส่งต่อไปยังที่นี่ ในกรณีที่ใช้งานร่วมกับ OpenVPN อย่าตั้งค่าเป็น DNS ภายในของ OpenVPN มิฉะนั้นอาจทำให้การเชื่อมต่ออินเทอร์เน็ตถูกตัดขาดโดยสิ้นเชิง เมื่อไม่ได้ใช้การกำหนดค่านี้ ระบบจะใช้ DNS เริ่มต้นของระบบ
ข้อควรสนใจ
profile.nameserver = "114.114.114.114"
การกำหนดค่า IP และหมายเลขพอร์ตของพร็อกซีเซิร์ฟเวอร์
profile.host = ที่อยู่พร็อกซีเซิร์ฟเวอร์
profile.port = พอร์ตพร็อกซีเซิร์ฟเวอร์
หากพร็อกซีเซิร์ฟเวอร์ของคุณต้องการการยืนยันตัวตนเพื่อเข้าสู่ระบบ คุณสามารถระบุได้ผ่านพารามิเตอร์ต่อไปนี้ ซึ่งขึ้นอยู่กับผู้ให้บริการพร็อกซีของคุณ สำหรับประเภท Shadowsocks, login จะหมายถึงวิธีการเข้ารหัส
profile.login = "ชื่อผู้ใช้สำหรับเข้าสู่ระบบพร็อกซีเซิร์ฟเวอร์"
profile.password = "รหัสผ่านสำหรับเข้าสู่ระบบพร็อกซีเซิร์ฟเวอร์"
ใช้เพื่อบล็อกทราฟฟิก UDP ในระบบ ทำไมต้องบล็อกทราฟฟิก UDP? เนื่องจากบริการพร็อกซีสาธารณะส่วนใหญ่ในปัจจุบันไม่รองรับการพร็อกซีทราฟฟิก UDP ภายในระบบ แน่นอนว่ามีเซิร์ฟเวอร์ SOCKS5 บางส่วนที่รองรับการพร็อกซี UDP เช่น โซลูชันที่เราจัดทำขึ้นเอง และโดยปกติแล้ว Shadowsocks ก็รองรับ UDP เช่นกัน ดังนั้น การปิดใช้งานทราฟฟิก UDP ของระบบจึงเป็นทางเลือกที่ดี โดยค่าเริ่มต้นตัวเลือกนี้จะถูกปิดไว้
profile.drop_udp = False
ใช้เพื่อกำหนดค่าว่าจะข้ามเครือข่ายท้องถิ่น (bypass local network) หรือไม่ หากกำหนดค่าเป็น True ทราฟฟิกในเครือข่ายของเร้าเตอร์ เช่น 192.168.x, 10.x จะไม่ผ่านพร็อกซี ค่าเริ่มต้นคือ False โปรดทราบว่าหากเปิดใช้งาน udp_proxy ตัวเลือกนี้จะไม่มีผลกับทราฟฟิก UDP
profile.bypass_local_subnet = True
ใช้เพื่อกำหนดค่าว่าจะพร็อกซีทราฟฟิก UDP หรือไม่ พร็อกซีของคุณต้องเป็นไปตามเงื่อนไขเบื้องต้นบางประการ พร็อกซีของคุณต้องเป็นประเภท GproxyType.SOCKS5 หรือ GproxyType.SHADOWSOCKS เท่านั้น และพร็อกซีเซิร์ฟเวอร์ของคุณต้องเปิดใช้งานการรองรับพร็อกซี UDP คุณสามารถติดตั้งพร็อกซีเซิร์ฟเวอร์ที่รองรับ SOCKS5 UDP หรือสร้างเซิร์ฟเวอร์ ss ของคุณเองได้ตามเอกสารที่เราจัดเตรียมไว้ให้ ค่าเริ่มต้นคือ False และเมื่อคุณใช้พร็อกซี http หรือตั้งค่าตัวเลือก drop_udp เป็น True ตัวเลือกนี้จะถูกละเว้น
profile.udp_proxy = False
ใช้เพื่อตั้งค่าว่าคุณต้องการส่งต่อทราฟฟิก DNS ทั้งหมดผ่านพร็อกซีหรือไม่ หลังจากเปิดใช้งานตัวเลือกนี้ ทราฟฟิก DNS ทั้งหมดบนอุปกรณ์จะถูกส่งผ่านพร็อกซี ซึ่งสามารถช่วยหลีกเลี่ยงสถานการณ์ DNS pollution ได้ เมื่อใช้ตัวเลือกนี้ คุณจำเป็นต้องระบุพารามิเตอร์ nameserver ด้วย ไม่สามารถใช้ในสถานการณ์การดักจับแพ็กเก็ต (packet sniffing) ได้ มิฉะนั้นอาจทำให้เกิดการเชื่อมต่อที่ดูเหมือนถูกตัดขาด เนื่องจากซอฟต์แวร์ดักจับแพ็กเก็ตอาจไม่สามารถจัดการกับแพ็กเก็ต DNS ได้อย่างถูกต้อง
profile.dns_proxy = False
คุณสามารถใช้การกำหนดค่าต่อไปนี้เพื่อตั้งค่าพร็อกซีสำหรับแอปพลิเคชันใดแอปพลิเคชันหนึ่งในระบบเท่านั้น ทราฟฟิกของแอปพลิเคชันอื่นๆ จะไม่ผ่านพร็อกซี
# โปรดเลือกวิธีการเลือกแอปพลิเคชันเป้าหมายจากสามวิธีด้านล่างนี้เพียงหนึ่งวิธี
app = d.application("com.android.browser")
app = d.get_application_by_name("เบราว์เซอร์")
app = d.application("com.android.browser", user=999) # แอปพลิเคชันโคลน
profile.application.set(app)
การใช้พร็อกซีอัตโนมัติ¶
คุณสามารถทำให้ FIRERPA เชื่อมต่อกับพร็อกซีเซิร์ฟเวอร์ที่ตั้งค่าไว้ล่วงหน้าโดยอัตโนมัติเมื่อเริ่มต้น วิธีนี้จะช่วยให้มั่นใจได้ว่าทราฟฟิกโทรศัพท์มือถือของคุณจะผ่านพร็อกซีเสมอ คัดลอกการกำหนดค่าด้านล่างและแก้ไขข้อมูลให้เป็นข้อมูลพร็อกซีของคุณ จากนั้นเขียนลงในไฟล์ properties.local แล้วรีสตาร์ท FIRERPA ฟิลด์บางส่วนที่ไม่ได้อธิบายไว้ที่นี่มีชื่อเดียวกับฟิลด์ที่อธิบายไว้ในส่วน พารามิเตอร์ทั้งหมด
gproxy.enable=true
gproxy.type=http-connect
gproxy.host=1.x.x.x
gproxy.port=8080
gproxy.password=
gproxy.login=
การสร้างบริการพร็อกซี¶
FIRERPA มี docker สำหรับบริการพร็อกซี socks5 ที่พร้อมใช้งานและรองรับ UDP อยู่ในไดเรกทอรี tools คุณสามารถเรียนรู้วิธีการปรับใช้ (deploy) พร็อกซีเซิร์ฟเวอร์ของคุณเองได้ในบทที่เกี่ยวข้องกับการปรับใช้บริการพร็อกซีในเอกสารนี้