Pfsense for client-to-site vpn
Setup Pfsense as openvpn server for windows XP - Client to site


ติดตั้ง openvpn client
Gen key สำหรับ server และ client
Client config. file
Setup Pfsense
ทำ bridging ระหว่าง WAN และ Lan ของ Pfsense
1. ติดตั้ง openvpn client

ดาวน์โหลด openvpn client จาก http://wwwvpn.net สำหรับ windows รองรับ xp, vista, 7 จะมี 2 แบบคือ

OpenVPN Access Server Windows Client Download
OpenVPN Community Software Windows Client Download <--ใช้อันนี้
แล้วติดตั้งที่เครื่อง client

2. Gen Key สำหรับ server(pfsense) และ client

เรียก command-pomp โดยต้องมีสิทธิ admin เข้าไปที่ path c:program filesopenvpneasy-rsa แล้วใช้คำสั่ง

>init-config.bat
แก้ไขไฟร์ vars.bat ด้วย text editor แก้ตัวแปร attribute เป็นตามต้องการ เช่น country, province, city, org, email
>vars.bat
>clean-all.bat
>build-ca.bat <-- สร้าง file ca ตัวแปรที่สำคัญตอนสร้างคือ "Common Name"
>build-key-server.bat server <-- สร้าง key, crt ของ server ตัวแปรสำคัญคือ "common name" ให้กำหนดเป็น "server" หรือตามชอบ
>build-dh.bat <-- ไฟร์ในการเข้ารหัส
>build-key.bat ovpn-client <-- สร้าง crt, key สำหรับ client โดย ovpn-client แทนด้วยชื่อที่เราต้องการ จะสร้างกี่ client ก็ได้ แต่ชื่อต้องไม่ซ้ำกัน
3. Client config file

client ที่จะ connect ใช้ 4 file โดยเอาไปไว้ที่ "c:program filesopenvpnconfig" คือ

ca.crt <-- ได้จากการสร้าง build-ca.bat อยู่ใน c:program filesovpneasy-rsakeys

client.crt, client.key <-- ได้จากการสร้าง client key อยู่ path เดียวกับ ca โดยชื่อจะเป็นตามที่เรากำหนดเวลาสร้าง

connect_client.ovpn <-- file config สำหรับเชื่อมต่อ สร้างขึ้นเองจาก text editor

ตัวอย่าง config file

client

dev tun <-- ลักษณะการเชื่อมต่อ tap, tun

proto udp <-- protocal tcp, udp

remote xxx.xxx.xxx.xxx 1194 <-- ip ของ pfsense ovpn server และ port

ping 10

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt <-- file ca ชื่อตามที่เรา gen ขึ้นมา

cert client.crt <-- file cert ชื่อตาม client ที่เรา gen

key client.key <-- file key ชื่อตาม client ที่เรา gen

ns-cert-type server <-- ชื่อ server ตามที่ gen

comp-lzo <-- การส่งข้อมูลของ tunnal บีบอัดแบบ lzo

pull

verb 3

4. Setup pfsense

เข้าที่ pfsense vpn->openvpn->server tab ปรับตัวเลือกสอดคล้องกับ client file

protocal : udp

local port : 1194

address pool : xxx.xxx.xxx.0/24 <-- ช่วง ip ที่ไม่ถูกใช้ เพราะถ้าเราเลือกแบบ ไม่ fix ip แล้ว ip ของ client ที่ connect เข้ามา จะได้อยู่ในช่วงของ address pool

Local Network : xxx.xxx.xxx.0/24 <-- ip range ของ lan อิงตามขา lan ของ pfsense

Remote Network : blank

Cryptography : BF-CBC(128 bit) <-- หรือตามต้องการ

Authentication Method : PKI <-- ใช้เป็น Public key

เลือก DHCP-Opt: Disable NetBIOS

เลือก LZO Compression

จากนั้น copy เนื้อหาของ file, key, dh, ca ลงตามช่องของ pfsense

ca.crt ใน "CA certificate"

server.crt ใน "Server certificate"

server.key ใน "Server key"

dh1024.pem ใน "DH parameters"

เปิด rule ของ firewall ให้ openvpn

ตอนนี้ client ควรจะ connect และได้ ip จาก address pool แล้ว แต่ก็ยัง ping เข้าหา เครื่องที่อยู่ใน lan ของ server ไม่ได้ เพราะยังไม่มีการเชื่อมต่อกัน ระหว่างส่วนที่เป็น wan ที่ client connect เข้ามา กับส่วนที่เป็น lan ภายใน โดยต้องทำ Bridging ก่อน

5. OpenVPN Client Bridging

เข้าไปที่ pfsense -> openvpn -> server tab เลือก edit

เลือก "Use static IPs" <-- pfsense จะจ่าย ip ให้ ovpn client โดยอิงกับ dhcp ภายในเอง หรือ รเาจะ fix iip ไปเลยก็ได้
Cuntomer Option เพิ่มเป็น
dev tapx <-- x เป็นตัวเลข 0, 1, ... ขึ้นกับใช้ tap ไหน

server-bridge 192.1.1.1 255.255.255.0 192.1.1.20 192.1.1.30 <-- อยู่ในรูป (Lan IP)(Lan netmask)(openvpn client range start)(openvpn client range end)

3. เข้าไป shell ของ pfsense แก้ /conf/config.xml เพิ่มโค๊ดนี้ ในส่วนของ system

ifconfig bridge0 create

ifconfig bridge0 addm em2 up <-- em2 คือ lan interface เปลี่ยนตามความถูกต้อง

ifconfig bridge0 addm tap0 <-- เป็น tap หรือ tun ตาม client ที่ connect เข้ามา

ifconfig bridge0 ถ้าทำได้ถูกต้อง เมื่อไปที่ pfsense -> status -> interfaces จะเป็น Lan ในส่วน bridge status จะเป็น Learning


ผิดถูกอย่างไรแนะนำด้วยครับ



Create Date : 27 ตุลาคม 2553
Last Update : 27 ตุลาคม 2553 11:02:26 น.
Counter : 592 Pageviews.

0 comment

เรือลำน้อย
Location :
กรุงเทพฯ  Thailand

[ดู Profile ทั้งหมด]
ให้ทิปเจ้าของ Blog [?]
 ฝากข้อความหลังไมค์
 Rss Feed
 Smember
 ผู้ติดตามบล็อก : 1 คน [?]