Hướng dẫn tạo Server OpenVPN trên Raspberry PI 2

Giới thiệu

Như các bạn đã biết, raspberry pi có những khả năng kỳ diệu như: đóng vai trò là 1 vi xử lý, khả năng làm đầu HD Player,....rất tốt. tuy nhiên khẳ năng của Raspberry Pi  không chỉ dừng lại ở đó , Raspberry PI 2 còn làm được rất nhiều việc ví dụ như làm một mini server. Trong bài viết này mình sẽ hướng dẫn các bạn tạo một server OpenVNP ngay trên Raspberry PI 2.

Tiến hành

Vì Raspberry PI chạy rất tiết kiệm điện , chỉ khoảng 3w và có khả năng chạy liên tục không cần tắt từ tháng này qua tháng khác do vậy để ứng dụng Raspberry PI vào làm một máy chủ VPN là rất khả quan . Bạn có thể tạo một openvpn cho riêng mình sử dụng hoặc chia sẻ cho người nhà và những bạn bè thân thiết .

Bài viết sẽ hướng dẫn cài đặt openvpn trên hệ điều hành Raspbian . Đây là hệ điều hành chính thức của Raspberry PI , tuy nhiên nếu bạn không thích Raspbian có thể cài ubuntu thì hướng dẫn cũng tương tự như bài viết này . chi tiết làm thế nào để cài đặt hệ điều hành vui lòng đọc trên trang chủ của Raspberry PI . 1 . Đăng nhập ssh vào raspberry pi chạy các lệnh sau .

sudo su
apt-get update
apt-get install openvpn openssl
cd /etc/openvpn
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa
apt-get install nano
nano easy-rsa/vars

Trình chỉnh sửa nano hiện nên và tìm đến dòng

Mã:
export EASY_RSA="`pwd`"

Thay thế bằng

export EASY_RSA="/etc/openvpn/easy-rsa"

Nhấn Ctrl + x để lưu lại . Tiếp theo chạy các lệnh sau , khi gặp các câu hỏi cứ nhấn enter 

./easy-rsa/vars
./easy-rsa/clean-all
cd easy-rsa
ln -s openssl-1.0.0.cnf openssl.cnf
cd ..

Tiếp theo chạy các lệnh sau , khi gặp các câu hỏi cứ nhấn enter 

./easy-rsa/build-ca OpenVPN
./easy-rsa/build-key-server server
./easy-rsa/build-key client1
Build-dh command takes a few minutes. So just wait
./easy-rsa/build-dh
Tiếp theo tạo một file config 
nano openvpn.conf
copy và paster nội dung bên dưới
dev tun
proto udp
port 1194
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
user nobody
group nogroup
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
client-to-client
push "redirect-gateway def1"
#set the dns servers
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
log-append /var/log/openvpn
comp-lzo

Nhấn Ctrl +x để lưu lại . Tiếp theo chạy lệnh

echo 1 > /proc/sys/net/ipv4/ip_forward

Chạy tiếp các lệnh sau

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to [ipadres rpi]
cd ..

[ipadres rpi] thay thế bằng địa chỉ IP trên raspberry pi của bạn . chỉnh sửa file sysctl.conf xóa bỏ dấu # ở dòng #net.ipv4.ip_forward=1 đi

nano /etc/sysctl.conf

Ctrl + x để lưu lại

exit

để thoát root .

cd

Khởi động openvpn 

sudo /etc/init.d/openvpn start

Tạo một file config openvpn để sử dụng

nano newvpn.ovpn

Nội dung như sau .

dev tun
client
proto udp
remote YOUR.RASPBERRYPI.IPADRESS 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3

Ctrl + x để lưu lại . Thêm vào file /etc/rc.local nội dung như sau , thêm vào bên trên dòng "exit 0"

sudo nano /etc/rc.local
iptables -t nat -A INPUT -i eth0 -p udp -m udp --dport 1194 -j ACCEPT

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source RASPBERRY.PI.IP.ADRESS

Ctrl + x để lưu lại . Copy toàn bộ các file key vào thư mục home của pi để sửa dụng

sudo cp -rf /etc/openvpn/easy-rsa/keys /home/pi/

Ta cần quan tâm các file sau ca.crt, client1.crt, client1.key trong /home/pi/keys/ và file /home/pi/newvpn.ovpn Tạm thời Đã tạm xong , để sử dụng openvpn trên điện thoại hãy chỉnh sửa file  /home/pi/newvpn.ovpn như sau .

dev tun
client
proto udp
remote ip-của-raspberry-pi 1194
resolv-retry infinite
nobind
persist-key
persist-tun
<ca>
copy tất cả nội dung của file ca.crt vào đây
</ca>

<cert>
copy tất cả nội dung của file client1.crt vào đây
</cert>

<key>
copy tất cả nội dung của file client1.key vào đây
</key>

comp-lzo
verb 3

sau khi lưu lại thì copy file newvpn.ovpn đó vào bộ nhớ điện thoại . Trên android để sử dụng hãy dùng phần mềm openvpn trên chplay . và chọn đến file newvpn.ovpn để kết nối .  Thành công sẽ như sau .

Tuy đã kết nối thành công tuy nhiên đến đây thì chúng ta có thể nhận thấy là mình đang dùng wifi trên điện thoại có kết nối chung mạng với raspberry pi 2 . còn nếu tôi đang dùng 3G hoặc đi đâu đó ra ngoài hoặc muốn chia sẻ openvpn cho ai đó thì không thể kết nối được với OpenVPN trên raspberry pi 2 . để làm được việc đó bắt buộc chúng ta phải mở cổng cho modem và cấu hình Dynamic DNS để có thể sử dụng với mạng IP động . 

Xem cách NAT PORT tại đây

III. Kết luận

Chúc các bạn thành công nhé!!!!

lên
10 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

ST7565 và ESP8266 - Màn hình LCD bự chà bá chưa đến 100k cho thế giới IoT

Mình rất thích LCD ST7565 này, và đã đặt liền 4 con mà mỗi con quá rẻ có 20k. Nhưng khổ một điều, điện áp hoạt động và IO của LCD ST7565 có 3.3V. Bản thân mình lại không thích việc chơi điện trở để chơi LCD này với Arduino. Lý do đơn giản là phải hàn quá nhiều, mình lại lười crying. Hổm nay, mình đang làm loạt bài về ESP8266 và cũng phải gặp vấn đề điện trở để làm cầu phân áp khi giao tiếp giữa ESP8266 và Arduino.

lên
17 thành viên đã đánh giá bài viết này hữu ích.

Thư viện ST7565 trên Arduino Create - Thử nghiệm đầu tiên: Hoàn hảo!

Mình rất tự hào và hãnh diện, khi thư viện made in Việt Nam đầu tiên của Thái Sơn (Nick Chung) được mình tải lên tại Arduino Create với mục đích thử nghiệm việc biên dịch code online trên Arduino Create đã hoàn thành công việc của nó ngay trong lần thử đầu tiên. Qua bài viết này, mình xin hướng dẫn các bạn lập trình Arduino với Arduino Create thông qua việc làm một ví dụ mẫu về việc cài thư viện và sử dụng nó trên Arduino Create.

lên
7 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Khởi đầu những dự án IoT bằng Raspberry Pi

Raspberry Pi không chỉ là một nền tảng phần cứng thú vị để ứng dụng cho các dự án IoT mà còn là công cụ giúp các nhà phát triển học hỏi và hoàn thiện kĩ năng Internet kết nối vạn vật. Internet of Things được cho là chủ đề nóng nhất trong lĩnh vực CNTT hiện nay. Mọi tổ chức muốn tham gia vào xu hướng IoT thì luôn đòi hỏi các chuyên gia CNTT phải được trang bị các kỹ năng, kinh nghiệm cho các dự án của mình. Có rất nhiều tùy chọn cho việc học về IoT, nhưng không có gì tốt hơn ngoài những kinh nghiệm thực tế.

lên
20 thành viên đã đánh giá bài viết này hữu ích.

Nạp code cho Arduino Promini thông qua mạch nạp của Arduino UNO

Arduino Promini là một board mạch siêu nhỏ, và rẻ tiền....Lý do là Promini không có mạch nguồn chuyển đổi 5V, 3.3V và đặc biệt là không có mạch nạp. Vì thế bạn cần phải mua thêm một mạch nạp, để nạp code cho Arduno Promini...Nếu bạn không có mạch nạp, vậy phải làm thế nào để nạp code cho Promini?? Bạn có thể dễ dàng sử dụng board Arduino Uno R3 sẵn có của mình để nạp code cho Arduino Pro Mini khi không có mạch nạp, hay bạn muốn tiết kiệm con chip ATmega16U2 laugh

lên
24 thành viên đã đánh giá bài viết này hữu ích.