การติดตั้งบริการ OpenVPN¶
อิมเมจนี้รับประกันเพียงฟังก์ชันพื้นฐานเท่านั้น หากคุณมีความสามารถในการกำหนดค่าด้วยตนเอง ขอแนะนำให้สร้างขึ้นเองหรืออ้างอิงวิธีการใช้งานของอิมเมจนี้เพื่อดำเนินการให้เสร็จสิ้น ก่อนใช้งาน คุณจำเป็นต้องมีความรู้พื้นฐานเกี่ยวกับ Linux และ Docker อิมเมจนี้ผ่านการทดสอบบน Debian 9 แล้ว ที่นี่จะอธิบายวิธีการใช้งานบน Debian 9 ซึ่งโดยปกติแล้วสามารถนำไปใช้กับระบบอื่น ๆ เช่น Ubuntu ได้ บริการนี้ใช้พอร์ตเริ่มต้นที่ 1190/UDP โปรดตรวจสอบให้แน่ใจว่าได้อนุญาตการเข้าถึงพอร์ตนี้ในไฟร์วอลล์ของคุณแล้ว
การเตรียมการ¶
คุณยังต้องทำการแก้ไขต่อไปนี้บนเซิร์ฟเวอร์ของคุณ โดยรันคำสั่ง
echo net.ipv4.ip_forward=1 >>/etc/sysctl.conf
sysctl -p
หากเซิร์ฟเวอร์ของคุณมีการติดตั้ง ufw คุณจะต้องเพิ่มเนื้อหาต่อไปนี้ที่บรรทัดแรกๆ ของไฟล์ /etc/ufw/before.rules โดยที่ eth0 และช่วงของเครือข่าย (network segment) จะต้องแก้ไขตามอินเทอร์เฟซและการตั้งค่าจริงของเซิร์ฟเวอร์ของคุณ โปรดทราบว่าต้องเพิ่มก่อนกฎ *filter (ถ้ามี)
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.27.27.0/24 -o eth0 -j MASQUERADE
COMMIT
แก้ไขการตั้งค่าต่อไปนี้ในไฟล์ /etc/default/ufw ให้เป็น ACCEPT
DEFAULT_FORWARD_POLICY="ACCEPT"
สุดท้าย รันคำสั่งต่อไปนี้เพื่อรีสตาร์ทบริการไฟร์วอลล์ ufw บนเซิร์ฟเวอร์
ufw reload
หากเซิร์ฟเวอร์ของคุณไม่ได้ติดตั้ง ufw โปรดตรวจสอบให้แน่ใจว่ากฎ FORWARD ของ iptables เป็น ACCEPT โดยรันคำสั่งต่อไปนี้
ข้อควรสนใจ
iptables -P FORWARD ACCEPT
การเริ่มต้นการตั้งค่า¶
ตอนนี้ เราจะสร้างไดเรกทอรีเพื่อบันทึกการตั้งค่าบริการ OpenVPN ของเรา
mkdir -p ~/lamda-openvpn-server
จากนั้น รันคำสั่งต่อไปนี้เพื่อเริ่มต้นการตั้งค่าบริการ OpenVPN
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-server-new
รอให้คำสั่งทำงานเสร็จสิ้น ตอนนี้คุณจะเห็นไฟล์การตั้งค่าของบริการในไดเรกทอรี ~/lamda-openvpn-server ไฟล์การตั้งค่าคือ config.ovpn คุณสามารถใช้เอดิเตอร์เพื่อเปิดไฟล์นี้ แนะนำให้แก้ไขเฉพาะฟิลด์ต่อไปนี้
# ช่วงของเครือข่ายและซับเน็ตมาสก์ของ VPN
server 172.27.27.0 255.255.255.0
# พอร์ตบริการ VPN
port 1190
# หรือหากคุณต้องการให้ไคลเอนต์ VPN สามารถเข้าถึงอินเทอร์เฟซเครือข่ายบางตัวบนเซิร์ฟเวอร์ได้
# คุณสามารถเพิ่มเส้นทาง (route) ได้ แต่โปรดทราบว่าในกรณีนี้คุณจะสามารถเข้าถึงได้เฉพาะ IP ของโฮสต์ปัจจุบันในเครือข่ายนี้เท่านั้น
# หากต้องการให้ไคลเอนต์เข้าถึงเครือข่ายนี้ได้อย่างสมบูรณ์ คุณจะต้องทำการตั้งค่าเพิ่มเติม
push "route 192.168.68.0 255.255.255.0"
# แก้ไข 114 เป็น DNS Server ที่คุณต้องการ
push "dhcp-option DNS 114.114.114.114"
การสร้างข้อมูลรับรองการเชื่อมต่อสำหรับไคลเอนต์¶
หลังจากแก้ไขเสร็จสิ้น ตอนนี้เราจะเริ่มสร้างไคลเอนต์ myname สามารถเปลี่ยนเป็นชื่ออื่นที่คุณต้องการได้ แต่ต้องไม่ซ้ำกัน
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-new myname
หลังจากสร้างเสร็จสิ้น ใช้คำสั่งต่อไปนี้เพื่อรับข้อมูลรับรองการเข้าสู่ระบบสำหรับไคลเอนต์นี้
# หมายเหตุ: IP ในการตั้งค่าจะถูกดึงมาจาก Public IP ปัจจุบันโดยอัตโนมัติ หากไม่ถูกต้อง โปรดแก้ไขด้วยตนเอง
#
# สร้างไฟล์ตั้งค่า ovpn และบันทึกไปยังไฟล์ myname.ovpn ไฟล์นี้สามารถใช้กับแอปพลิเคชันเช่น OpenVPN-Connect ได้
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-profile ovpn myname >myname.ovpn
# สร้าง OpenVPNProfile สำหรับใช้งานกับ lamda ซึ่งสามารถใช้ใน lamda ได้โดยตรง
# ภายในจะมีส่วนคอมเมนต์ properties.local ซึ่งคุณสามารถคัดลอกการตั้งค่า openvpn.*
# ไปยัง /data/usr/properties.local เพื่อให้สามารถเชื่อมต่อ VPN ได้โดยอัตโนมัติ
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-profile lamda myname
การเพิกถอนข้อมูลรับรองของไคลเอนต์¶
หากต้องการเพิกถอนข้อมูลรับรองของไคลเอนต์ใด ๆ โปรดรันคำสั่งต่อไปนี้ หลังจากเพิกถอนแล้ว อาจจำเป็นต้องรีสตาร์ทบริการ OpenVPN
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-revoke myname
การเริ่มบริการ OpenVPN¶
ตอนนี้คุณสามารถรันคำสั่งต่อไปนี้เพื่อเริ่มบริการ OpenVPN ในโหมด foreground ซึ่งคุณจะสามารถเห็นบันทึกการเชื่อมต่อของไคลเอนต์และแก้ไขข้อผิดพลาดได้โดยตรง
docker run -it --rm --name openvpn-server --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn run
เมื่อคุณตรวจสอบว่าทุกอย่างถูกต้องแล้ว แนะนำให้รันบริการในโหมด background โดยใช้คำสั่งนี้
docker run -d --rm --name openvpn-server --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn run
เอกสารอ้างอิง¶
เอกสารพื้นฐาน: https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/
การตั้งค่า Routing: https://community.openvpn.net/openvpn/wiki/BridgingAndRouting