Kết nối mạng mọi nơi với OpenVPN và Tomato

  • 7.552

Quản Trị Mang - Ở bài viết trước chúng tôi đã hướng dẫn các bạn cách cài đặt và những thủ thuật sử dụng Tomato, một firmware mã nguồn mở dành cho router trên chiếc Linksys WRT54GL. Hôm nay chúng tôi sẽ tiếp tục khai thác tính năng của firmware này qua việc cài đặt OpenVPN cùng Tomato, sau đó thiết lập để có thể truy cập mạng tại bất cứ nơi nào trên thế giới.

>>> Tăng cường bảo mật OpenVPN với One Time Password trên Ubuntu

Kết nối mạng mọi nơi với OpenVPN và Tomato

OpenVPN là gì?

Kết nối mạng mọi nơi với OpenVPN và Tomato

Về cơ bản, VPN là một mạng riêng sử dụng hệ thống mạng công cộng (thường là Internet) để kết nối các địa điểm hoặc người sử dụng từ xa với một mạng LAN ở trụ sở trung tâm. Thay vì dùng kết nối thật khá phức tạp như đường dây thuê bao số, VPN tạo ra các liên kết ảo được truyền qua Internet giữa mạng riêng của một tổ chức với địa điểm hoặc người sử dụng ở xa.

Mạng riêng ảo (Virtual Private Network - VPN) là một kết nối rất an toàn, đáng tin cậy giữa mạng cục bộ (LAN) và một hệ thống khác. Bạn có thể hình dung router của mình là chiếc cầu nối để các mạng kết nối vào. Máy tính của bạn và máy chủ OpenVPN (trong trường hợp này chính là router) sẽ “bắt tay” với nhau bằng cách sử dụng chứng chỉ xác nhận lẫn nhau. Sau khi xác nhận, cả máy khách và máy chủ sẽ đồng ý “tin tưởng” nhau và cho phép truy cập vào mạng của server.

Thông thường, triển khai phần mềm VPN và phần cứng tốn nhiều thời gian và chi phí, do đó OpenVPN là một giải pháp mã nguồn mở VPN hoàn toàn miễn phí. Tomato cùng với OpenVPN hiện nay được xem là giải pháp hoàn hảo nhất cho những ai muốn có một kết nối bảo mật giữa hai mạng mà không cần thêm chi phí nào. Tuy nhiên, mặc định OpenVNP không hoạt động hiệu quả như mong muốn. Vì vậy chúng ta cần tinh chỉnh và cấu hình lại một chút. Sau đây là các bước cần thực hiện:

Yêu cầu

Để thực hiện bài hướng dẫn này chúng ta cần một máy tính chạy Windows 7 với tài khoản quản trị admin. Nếu bạn đang dùng Mac hay Linux, hướng dẫn này cũng sẽ giúp bạn hiểu được sự hoạt động của nó, tuy nhiên bạn cần nghiên cứu thêm để có hiệu quả nhất cho mình.

Chúng ta sẽ cài đặt một phiên bản đặc biệt của Tomato có tên TomatoUSB VPN trên router Linksys WRT54GL phiên bản 1.1. Để kiểm tra xem router của bạn có tương thích với TomatoUSB hãy không, có thể vào trang Build của TomatoUSB để xem.

Trước khi bắt đầu chúng ta cần cài đặt firmware gốc trên router hoặc firmware Tomato mà chúng tôi đã mô tả trong bài viết trước.

Cài đặt TomatoUSB

Trong bài hướng dẫn trước chúng ta đã cài đặt firmware Tomato v1.28 từ website của PolarCloud. Tuy nhiên phiên bản này không hỗ trợ sẵn OpenVPN nên chúng ta cần cài đặt một phiên bản mới khác có tên TomatoUSB VPN.

Đầu tiên bạn vào trang chủ của TomatoUSB và kích vào liên kết Download Tomato USB để tải về.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Cuộn xuống dưới trang, tại mục Kernel 2.4 (stable) bạn kích vào liên kết VPN để tải về máy của mình tập tin có dạng .rar.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Sau đó bạn dùng chương trình giải nén (như WinRAR) để extract tập tin vừa tải về. Bạn sẽ nhận được hai file là CHANGELOGtomato-NDUSB-1.28.8754-vpn3.6.trx.

Kết nối mạng mọi nơi với OpenVPN và Tomato

1. Trường hợp router đang chạy firmware Linksys

Mở trình duyệt của bạn và nhập vào địa chỉ IP (mặc định là 192.168.1.1). Nhập vào “admin” cho cả hai trường "username" "password" khi được yêu cầu.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Đăng nhập thành công bạn kích chọn menu Administration > Firmware Upgrade.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Kích vào nút Browse rồi điều hướng đến tập tin TomatoUSB vừa giải nén, chọn file tomato-NDUSB-1.28.8754-vpn3.6.trx, sau đó nhấn nút Upgrade trên giao diện trình duyệt.

Router của bạn sẽ bắt đầu cài đặt TomatoUSB VPN, quá trình này cần vài phút để hoàn thành. Sau khi quá trình cập nhật kết thúc, mở hộp thoại command prompt và nhập vào ipconfig –release để xác định lại địa chỉ IP mới cho router, tiếp theo gõ ipconfig –renew để cấp địa chỉ mới cho nó. Những con số bên cạnh dòng Default Gateway sẽ là địa chỉ IP mới của router.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Lưu ý: sau khi cài đặt Tomato bạn vào Administration > Configuration và chọn “Erase all NVRAM…”.


2. Trường hợp router đang chạy firmware Tomato

Mở trình duyệt của bạn và nhập vào đó địa chỉ IP rồi tiến hành đăng nhập như trên.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Mặc dù không thật cần thiết nhưng bạn cũng có thể sao lưu lại cấu hình Tomato trước khi tiến hành nâng cấp lên TomatoUSB VPN. Để lưu lại các cấu hình, chuyển tới Administration > Configuration và kích chọn Backup. Điều này sẽ yêu cầu bạn lưu lại một tập tin có dạng .cfg trên máy tính.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Bây giờ là lúc bạn bắt đầu nâng cấp Tomato lên TomatoUSB VPN. Dưới menu Administration kích chọn Upgrade, sau đó nhấn nút Choose File, điều hướng tới thư mục vừa giải nén chọn tomato-NDUSB-1.28.8754-vpn3.6.trx. Ấn Upgrade.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Hộp thoại yêu cầu xác nhận upgrade, ấn OK.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Chờ trong ít phút để router cập nhật xong và tự khởi động lại.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Sau khi khởi động lại, có thể bạn sẽ nhận được một địa chỉ IP khác. Trong trường hợp này của chúng tôi thì địa chỉ IP vẫn được giữ nguyên. Để xác định địa chỉ IP, mở command prompt gõ ipconfig –release, sau đó là ipconfig –renew và xem tại dòng Default Gateway.

Nếu cấu hình của bạn bị quay trở lại như mặc định, vào trang Configuration (Administration > Configuration) và kích nút Choose File bên dưới Restore Configuration. Tìm đến file .cfg mà bạn vừa lưu lại ở bước trên và ấn Restore.

Cấu hình OpenVPN

Sau khi nâng cấp lên TomatoUSB VPN, tại giao diện Tomato sẽ có thêm menu mới là Web Usage, USB and NAS, và VPN Tunneling. Ở ví dụ này chúng ta chỉ quan tâm đến menu VPN Tunneling, kích vào đó và giữ cho trình duyệt luôn được mở và thực hiện bước tiếp theo.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Bước tiếp theo chúng ta sẽ vào trang chủ của OpenVPN và tải về OpenVPN Windows Installer phiên bản OpenVPN 2.1.4. Lưu ý rằng tuy bản mới nhất là 2.2.0 nhưng xuất hiện một lỗi khiến quá trình này trở nên phức tạp hơn rất nhiều. Chương trình OpenVPN mà chúng ta tải về sẽ cho phép kết nối tới mạng VPN, vì vậy hãy cài đặt nó trên bất kỳ máy tính nào bạn muốn nó trở thành máy client. Lưu lại openvpn-2.1.4-install.exe trên máy tính của bạn.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Điều hướng tới file OpenVPN vừa tải về và kích đúp chuột vào nó, quá trình cài đặt sẽ bắt đầu. Việc cài đặt rất đơn giản, chỉ cần giữ nguyên các lựa chọn mặc định và nhấn Next. Trong khi cài, một hộp thoại nhỏ dạng pop-up sẽ xuất hiện và hỏi bạn có muốn cài một adapter mạng riêng ảo mới có tên TAP-Win32, kích Install.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Sau khi cài đặt xong, bạn bắt đầu tạo các Certificates và Key để xác thực cho thiết bị.


Tạo các Certificates và Key

Vào menu Start, chọn Accessories. Kích chuột phải vào Command Prompt chọn Run as administrator.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Tại giao diện command prompt, gõ cd c:\Program Files (x86)\OpenVPN\easy-rsa nếu bạn chạy Windows 7 64-bit như hình bên dưới. (Nếu sử dụng Windows 7 32-bit, gõ cd c:\Program Files\OpenVPN\easy-rsa). Ân Enter.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Bây giờ gõ tiếp init-config, ấn Enter để copy hai file có tên vars.batopenssl.cnf vào thư mục easy-rsa. Giữ nguyên cửa sổ command prompt luôn mở và chuyển sang bước kế tiếp.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Mở thư mục C:\Program Files (x86)\OpenVPN\easy-rsa (hoặc C:\Program Files\OpenVPN\easy-rsa với Windows 7 32-bit) kích chuột phải vào tập tin vars.bat > chọn Edit để mở nó trong Notepad. Tuy nhiên chúng tôi khuyến cáo bạn sử dụng Notepad++ là một trình soạn thảo văn bản trong tập tin tốt hơn rất nhiều. Có thể tải về Notepad++ tại đây.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Chúng ta sẽ quan tâm nhất đến phần cuối của tập tin này. Bắt đầu từ dòng 31, thay đổi giá trị Key_COUNTRY, Key_PROVINCE... thành thông tin của bạn. Chẳng hạn như minh họa dưới đây:

Kết nối mạng mọi nơi với OpenVPN và Tomato

Trở lại cửa sổ command prompt, gõ vars rồi ấn Enter, sau đó gõ tiếp clean-all, ấn Enter. Cuối cùng gõ build-ca > Enter.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Sau khi thực thi lệnh build-ca, bạn sẽ nhận được yêu cầu nhập vào các thông tin như Country, State, hay Locality... nhưng do chúng ta đã thiết lập trong tập tin vars.bat ở trên nên chỉ cần ấn Enter để bỏ qua. Nhưng trước đó hãy nhớ là phải nhập thông tin vào phần Common Name như tên của bạn chẳng hạn. Lệnh này sẽ xuất ra hai tập tin (Root CA CertificateRoot CA Key) trong thư mục easy-rsa/Keys.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Bây giờ chúng ta sẽ xây dựng một Key trên máy client. Trong command prompt đang mở gõ build-Key client1. Bạn có thể thay đổi client1 thành bất kỳ tên nào mình muốn, chỉ cần đảm bảo rằng tên này trùng với Common Name khi được yêu cầu. Các thông số khác để mặc định, sau đó gõ “y” rồi ấn Enter.

Nếu gặp phải lỗi “unable to write ‘random state’” bạn cũng không cần lo lắng bởi các chứng chỉ của bạn vẫn được thực hiện bình thường. Lệnh này sẽ xuất ra hai tập tin (Client1 KeyClient1 Certificate) trong thư mục easy-rsa/Keys. Nếu bạn muốn tạo Key khác cho client nào đó, lặp lại các bước trên và chỉ cần lưu ý thay đổi Common Name.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Chứng chỉ cuối cùng chính là Key server. Trong command prompt, gõ build-Key-server server. Bạn có thể thay thế “server” ở cuối lệnh bằng tên mà bạn muốn (VD: QTM-Server) với điều kiện tên này phải trùng với thông tin ghi tại Common Name. Cuối cùng là ấn “y” để kết thúc. Lệnh này sẽ tạo ra hai file (Server KeyServer Certificate) trong thư mục easy-rsa/Keys.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Tiếp theo chúng ta phải tạo các thông số Diffie Hellman. Giao thức Diffie Hellman cho phép hai người dùng trao đổi một khóa bí mật nào đó trên một môi trường không an toàn. Bạn có thể tìm hiểu thêm về Diffie Hellman tại trang web của RSA.

Trong command prompt bạn gõ build-dh. Dòng lệnh này sẽ xuất ra file dh1024.pem trong thư mục easy-rsa/Keys.

Kết nối mạng mọi nơi với OpenVPN và Tomato


Khởi tạo và cấu hình tập tin cho Client

Trước khi chúng ta chỉnh sửa bấy kỳ tập tin nào, việc thiết lập dịch vụ DNS động là điều nên làm. Dịch vụ này sẽ được sử dụng nếu ISP của bạn thường cung cấp địa chỉ IP động, nếu bạn có IP tĩnh có thể bỏ qua bước này và chuyển sang bước tiếp theo.

Ở đây chúng tôi sử dụng DynDNS.com, một dịch vụ cho phép trỏ một hostname tới địa chỉ IP động. Điều quan trọng nhất là phải để OpenVPN luôn biết được địa chỉ IP public của bạn, và DynDNS sẽ giúp OpenVPN làm được điều này. Đăng ký một hostname miễn phí và trỏ tới địa chỉ IP public. Sau khi đăng ký xong, hãy thiết lập auto-update trong Tomato tại Basic > DDNS.

Quay trở lại cấu hình OpenVPN. Trong Windows Explorer, di chuyển tới C:\Program Files (x86)\OpenVPN\sample-config (với Windows 7 64-bit) hoặc C:\Program Files\OpenVPN\sample-config (với Windows 7 32-bit). Trong thư mục này bạn sẽ thấy có 3 tập tin, nhưng chúng ta chỉ cần quan tâm tới client.ovpn.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Kích chuột phải vào nó và mở ra bằng Notepad hoặc Notepad++ bạn sẽ thấy nội dung như hình dưới:

Kết nối mạng mọi nơi với OpenVPN và Tomato

Tuy nhiên chúng ta muốn file client.ovpn xuất ra sẽ tương tự như hình dưới đây. Hãy đảm bảo rằng bạn đã thay đổi DynDNS hostname trong dòng 4 (hoặc thay đổi địa chỉ IP nếu là tĩnh). Giữ nguyên cổng 1194 bởi đây là cổng chuẩn của OpenVPN. Tiếp theo là thay đổi dòng 11 12 bởi tên của file Certificate Key bạn đã tạo cho client. Lưu lại file này thành file .ovpn mới trong thư mục OpenVPN/config.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Cấu hình VPN Tunneling cho Tomato

Bây giờ chúng ta sẽ copy các Certificates và Key từ máy chủ và paste chúng vào menu của Tomato VPN. Sau đó chúng ta sẽ kiểm tra một vài thiết lập trong Tomato, thử nghiệm kết nối VPN.

Mở trình duyệt lên và điều hướng tới router. Kích chọn menu VPN Tunneling. Hãy đảm bảo rằng Server1 Basic đều được chọn. Thiết lập chính xác theo những gì sau đây rồi kích Save.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Chuyển sang tab Advanced bên cạnh tab Basic. Thiết lập giống hình bên dưới và nhấn Save.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Cuối cùng là paste các Key và Certificates mà chúng ta đã tạo ban đầu. Chuyển sang tab Keys bên cạnh Advanced. Trong Windows Explorer, chuyển tới C:\Program Files (x86)\OpenVPN\easy-rsa\Keys (Windows 7 64-bit) hoặc C:\Program Files\OpenVPN\easy-rsa\Keys trên Windows 7 32-bit. Mở từng file tương ứng bên dưới (ca.crt, server.crt, server.key,dh1024.pem) bằng tiện ích Notepad hoặc Notepad++ và copy nội dung bên trong. Paste nội dung này vào các box tương ứng. Lưu ý rằng bạn chỉ cần paste những thứ bên dưới --BEGIN CERTIFICATE-- trong server.crt. OpenVPN vẫn sẽ làm việc đúng cách nếu bạn paste toàn bộ nội dung, nhưng tốt nhất hãy chỉ paste những thông tin “sạch” vào đó. Kích Save và kích tiếp Start Now.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Trước khi chúng ta thử nghiệm kết nối VPN, còn một vấn đề nữa cần kiểm tra trong Tomato. Vào menu Basic > Time. Tại đây cần chắc chắn rằng thời gian hiển thị trong Router Time Time Zone chính xác với múi giờ (time zone) hiện tại của bạn. Thiết lập phần NTP Time Server theo quốc gia bạn đang sống.

Kết nối mạng mọi nơi với OpenVPN và Tomato


Thiết lập OpenVPN Client

Trong ví dụ này chúng tôi sử dụng laptop chạy Windows 7 như là máy client. Đầu tiên bạn cũng cài đặt OpenVPN cho máy client như các bước ở trên trong phần cấu hình OpenVPN. Sau đó mở C:\Program Files\OpenVPN\config, đây là nơi sẽ paste các file.

Bây giờ quay trở lại máy tính đầu tiên để copy tổng cộng 4 file lên máy laptop client. Điều hướng tới C:\Program Files (x86)\OpenVPN\easy-rsa\Keys và copy các file ca.crt, client1.crt, và client1.key sau đó paste vào thư mục config của client.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Cuối cùng chúng ta cần copy một file nữa. Điều hướng đến C:\Program Files (x86)\OpenVPN\config và copy tập tin client.ovpn đã tạo trước đây, sau đó paste vào thư mục config.

Thử nghiệm OpenVPN Client

Trên laptop client, kích nút Windows Start > All Programs > OpenVPN. Chuột phải vào file OpenVPN GUI > chọn Run as administrator. Lưu ý rằng bạn luôn phải chạy OpenVPN với quyền administrator để nó hoạt động chính xác nhất. Muốn vậy bạn hãy thiết lập cho nó vĩnh viễn chạy như administrator bằng cách kích chuột phải vào file đó, chọn Properties, dưới tab Compatibility đánh dấu tích vào mục “Run this program as an administrator”.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Biểu tượng OpenVPN GUI sẽ xuất hiện bên cạnh đồng hồ hệ thống của thanh taskbar. Kích chuột phải vào biểu tượng này và chọn Connect.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Một hộp thoại dạng pop-up sẽ hiển thị các bản ghi kết nối.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Một khi đã kết nối được tới VPN, biểu tượng OpenVPN trong thanh tác vụ sẽ chuyển sang màu xanh và hiển thị địa chỉ IP ảo của bạn.

Kết nối mạng mọi nơi với OpenVPN và Tomato

Vậy là bạn đã thành công. Bây giờ bạn đã có một kết nối bảo mật giữa máy chủ và máy client bằng cách sử dụng OpenVPN và TomatoUSB. Để tiếp tục kiểm tra kết nối, thử mở một trình duyệt trên máy client và điều hướng tới router Tomato trên mạng của máy chủ.

Cập nhật: 06/10/2011 Đ.Hải (Nguồn HowtoForge )
  • 7.552