การตั้งค่าพร็อกซีของระบบ (การสลับ 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 เสร็จสิ้นแล้วก่อนที่จะมีการตั้งค่าพร็อกซี ดังนั้น คุณจำเป็นต้องปิดและเปิดแอปพลิเคชันเป้าหมายด้วยตนเองเพื่อให้แอปพลิเคชันสร้างการเชื่อมต่อผ่านพร็อกซี

ประเภทของพร็อกซี

ประเภทพร็อกซีคำอธิบาย
GproxyType.HTTP_CONNECTHTTP
GproxyType.HTTPS_CONNECTHTTPS (HTTP+TLS)
GproxyType.SOCKS5Socks5
GproxyType.SHADOWSOCKSShadowsocks
GproxyType.HTTP_RELAYเลิกใช้งานแล้ว

พารามิเตอร์การเข้ารหัสของ Shadowsocks

รายการด้านล่างนี้คือประเภทการเข้ารหัสของ Shadowsocks ที่รองรับ รองรับเฉพาะวิธีการเข้ารหัสที่มีอยู่ในรายการเท่านั้น และไม่รองรับพารามิเตอร์การทำให้สับสน (obfuscation)

ประเภทการเข้ารหัสชื่อ
AESaes-128-cfb
AESaes-192-cfb
AESaes-256-cfb
AESaes-128-ctr
AESaes-192-ctr
AESaes-256-ctr
CAMELLIAcamellia-128-cfb
CAMELLIAcamellia-192-cfb
CAMELLIAcamellia-256-cfb
DESdes-cfb
AES-AEADaes-128-gcm
AES-AEADaes-192-gcm
AES-AEADaes-256-gcm
AEADchacha20-ietf-poly1305

สำหรับ 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 เริ่มต้นของระบบ

ข้อควรสนใจ

หากตั้งค่าพารามิเตอร์ dns_proxy เพื่อพร็อกซีการสืบค้น DNS, DNS เซิร์ฟเวอร์ที่คุณใช้จะต้องรองรับการสืบค้นผ่าน TCP โดยปกติแล้ว DNS เซิร์ฟเวอร์ที่ใช้กันทั่วไปมักจะรองรับการสืบค้นผ่าน TCP
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) พร็อกซีเซิร์ฟเวอร์ของคุณเองได้ในบทที่เกี่ยวข้องกับการปรับใช้บริการพร็อกซีในเอกสารนี้