# การติดตั้ง Socks5 Proxy

ในที่นี้เรามีวิธีการติดตั้ง socks5 สองวิธี เพื่อหลีกเลี่ยงปัญหา โปรดอ่านคำอธิบายที่เกี่ยวข้องอย่างละเอียด

## กรณีต้องการ Proxy สำหรับโปรโตคอล UDP

เนื่องจากคุณสมบัติของ socks5 UDP proxy อาจทำให้เกิดปัญหาและมีความซับซ้อนมากขึ้น หากคุณแน่ใจว่าต้องการใช้ UDP คุณต้องปฏิบัติตามกฎเหล่านี้: ข้อแรก ระบบปฏิบัติการของเครื่องโฮสต์ (host) ของคุณต้องเป็น Linux และไฟร์วอลล์ต้องอนุญาตการเชื่อมต่อผ่านพอร์ต UDP `50000-55000` ข้อสอง เครือข่ายของเซิร์ฟเวอร์ของคุณต้องไม่ใช่ NAT (FULL NAT ก็ไม่ได้เช่นกัน เซิร์ฟเวอร์คลาวด์ส่วนใหญ่ในปัจจุบันเป็นโหมด NAT)

```{tip}
ทำไมเครื่องโฮสต์ต้องเป็น Linux? เนื่องจากในระบบปฏิบัติการอื่น Docker อาจไม่สามารถ map พอร์ตจำนวนมากขนาดนี้ได้อย่างถูกต้อง และนอกจากนี้ โหมดเครือข่ายของ Docker ในระบบปฏิบัติการอื่นไม่สามารถตั้งค่าเป็นโหมด host ได้
```

หากคุณไม่แน่ใจว่าเครือข่ายเซิร์ฟเวอร์ของคุณเป็น NAT หรือไม่ โปรดใช้คำสั่งเช่น ifconfig เพื่อรับ IP address ของ network interface เริ่มต้น จากนั้นลอง ping ไปยัง IP address นี้จากตำแหน่งที่คุณต้องการใช้ proxy หากไม่สามารถ PING ได้ แสดงว่าเซิร์ฟเวอร์ของคุณอาจอยู่หลัง NAT อย่างไรก็ตาม หากเงื่อนไขไม่ตรงตามนี้ ก็ไม่ได้หมายความว่าจะไม่สามารถใช้ UDP ได้ คุณยังสามารถติดตั้ง gost ด้วยตนเองได้ ซึ่งจะอธิบายวิธีการติดตั้งในตอนท้ายของเอกสารนี้

```{attention}
เนื่องจากคุณสมบัติของ SOCKS5 UDP proxy หากคุณแน่ใจว่าต้องการใช้ UDP โปรดตั้งค่าไฟร์วอลล์ให้อนุญาตการสื่อสารผ่าน UDP ในทุกพอร์ต
```

## กรณีไม่ต้องการ Proxy สำหรับโปรโตคอล UDP

หากคุณไม่ต้องการให้โปรโตคอล UDP ถูก proxy ทุกอย่างก็จะง่ายขึ้นมาก คุณสามารถเริ่มต้นบริการ SOCKS ได้ด้วยคำสั่งต่อไปนี้

```bash
docker run -it --rm -p 1080:1080 --name socks -e LOGIN=username -e PASSWORD=passwd rev1si0n/socks5
```

## การระบุ Network Interface สำหรับการเชื่อมต่อขาออก

หากเซิร์ฟเวอร์หรือคอมพิวเตอร์ของคุณมี network interface ที่สามารถเชื่อมต่ออินเทอร์เน็ตได้หลายตัว ตัวอย่างเช่น คอมพิวเตอร์ที่บ้านของคุณเชื่อมต่อกับเครือข่ายสองเครือข่ายผ่านสาย LAN และ WIFI ตามลำดับ คอมพิวเตอร์ของคุณอาจมี network interface สองตัวคือ wlan0 , eth0 และคุณต้องการระบุเครือข่ายที่จะใช้สำหรับ proxy ขาออก หากคุณต้องการใช้ eth0 สำหรับการเชื่อมต่อขาออก ให้ใช้คำสั่งต่อไปนี้เพื่อเริ่มต้นบริการ SOCKS

```{attention}
คอมพิวเตอร์หรือเซิร์ฟเวอร์ของคุณต้องเป็นระบบปฏิบัติการ Linux เท่านั้น ระบบปฏิบัติการอื่นไม่รองรับการระบุ network interface
```

```bash
docker run -it --rm --net host --name socks -e LOGIN=username -e PASSWORD=passwd -e DEV=eth0 rev1si0n/socks5
```

หากคุณมีคุณสมบัติตรงตามเงื่อนไขเบื้องต้นทั้งหมดสำหรับการใช้ UDP แล้ว ให้ใช้คำสั่งต่อไปนี้

```bash
docker run -it --rm --net host --name socks -e LOGIN=username -e PASSWORD=passwd rev1si0n/socks5
```

## การใช้บริการ GOST

หากคุณต้องการใช้ UDP แต่ไม่สามารถปฏิบัติตามเงื่อนไขข้างต้นได้ หรือไม่จำเป็นต้องระบุ network interface ขาออก หรือไม่ต้องการติดตั้ง docker คุณสามารถลองใช้ gost ได้
ดาวน์โหลดไฟล์บีบอัดที่ปฏิบัติการได้ (executable) สำหรับระบบปฏิบัติการของคุณจาก [github.com/ginuerzh/gost/releases/](https://github.com/ginuerzh/gost/releases)

```bash
gost -L=socks5://username:passwd@:1080
```

```{hint}
หลังจากดำเนินการติดตั้งทั้งหมดเสร็จสิ้นแล้ว โปรดอ้างอิงถึงบทที่เกี่ยวกับการตั้งค่า proxy เพื่อเรียนรู้วิธีการตั้งค่า network proxy ของอุปกรณ์ของคุณ
```