Lưu ý: (2016 / 02-22) Tôi đã nhận ra cấu hình này rò rỉ các truy vấn DNS đến trình theo dõi torrent thông qua mạng WAN thông thường, thay vì gửi nó qua VPN. Tôi đang điều tra cách khắc phục điều này. Tôi sẽ tiếp tục chạy cấu hình của mình, vì bản thân kết nối sử dụng VPN đúng cách.
Cập nhật: Tôi nhận thấy rằng khi tôi đặt Truyền tải xuống qua đêm trên Beaglebone, việc sử dụng CPU sẽ tăng lên 100% sau một thời gian. Nó dường như không xảy ra sau cùng một khoảng thời gian, đôi khi nó ổn cả đêm, những lần khác nó vật lộn sau 10 phút. Nó cũng có thể phục hồi bằng cách tạm dừng tất cả các torrent và chờ tải CPU trở lại bình thường, sau đó bắt đầu lại. Tôi vẫn đang điều tra. Một cách giải quyết có thể là tạm dừng và tiếp tục dòng chảy theo định kỳ, mặc dù đó không phải là cách giải quyết tốt.
Lưu ý vấn đề này chỉ áp dụng cho Beaglebone và có thể các thiết bị ARM khác. Tôi chưa bao giờ gặp vấn đề này trên CPU x86.
Giới thiệu
Tôi đã phát triển và thử nghiệm giải pháp này cho Ubuntu 14.04, chạy trên BeagleBone Black. Nhà cung cấp VPN mà tôi đang sử dụng được gọi là ibVPN . Nó sẽ hoạt động với mọi phần cứng được hỗ trợ (ví dụ: trên máy tính x86 "bình thường"), với bất kỳ nhà cung cấp VPN tương thích OpenVPN nào - và có thể sẽ hoạt động trong 14.10 trở lên. Tại một số điểm tôi tin rằng Ubuntu sẽ sử dụng SystemD để khởi động, điều đó có nghĩa là các tập lệnh Upstart được sử dụng ở đây sẽ cần phải được di chuyển. Cập nhật: Jonas Kalderstam có câu trả lời dưới đây cho việc sử dụng SystemD. Tôi cũng giả sử rằng ufw đang được sử dụng làm tường lửa, nếu bạn đang sử dụng một cái gì đó khác thì các lệnh ufw ở đây sẽ cần phải được thay đổi.
Tôi giả định rằng tất cả các công việc được thực hiện qua kết nối SSH tới hệ thống, mặc dù nó cũng hoạt động tốt nếu được nhập vào một thiết bị đầu cuối vật lý.
Đây là một hướng dẫn khá dài, xin vui lòng đọc tất cả trước và chắc chắn rằng bạn cảm thấy thoải mái với những gì bạn sẽ làm.
Tôi cũng nhận thấy rằng Truyền không liên kết chính xác với địa chỉ IP để gửi dữ liệu UPnP / NAT-PMP - tức là dữ liệu torrent đi chính xác qua VPN, nhưng nếu chuyển tiếp cổng UPnP được bật Truyền sẽ yêu cầu chuyển tiếp cổng từ bộ định tuyến cục bộ , không thông qua VPN từ máy chủ VPN. Do đó, tôi đã tạo tập lệnh Upstart vô hiệu hóa chuyển tiếp cổng, vì nó có thể xuất hiện như thể nó đã hoạt động, nhưng nó không hoạt động. Có thể sử dụng iptables và iproute để buộc tất cả lưu lượng truy cập từ người dùng truyền tải debian thông qua VPN, nhưng tôi vẫn đang xem xét điều này. Nó cũng hoạt động nếu tuyến mặc định được thay đổi để gửi tất cả dữ liệu Internet qua VPN, nhưng tôi không muốn làm điều đó vì tôi cũng sử dụng máy chủ này cho những thứ khác và điều này cũng sẽ khiến tất cả các cập nhật hệ thống đi qua VPN.Câu hỏi này có thêm thông tin nếu bạn thực sự muốn UPnP hoạt động trên VPN .
Cập nhật: falk0069 có một mẹo tuyệt vời dưới đây để giúp khuyến khích UPnP qua VPN.
Cài đặt và cấu hình OpenVPN
Tôi khuyên bạn nên thử kết nối VPN của mình để hoạt động bằng Ubuntu trước khi thử để nó hoạt động ở đây - tức là từ máy tính để bàn. Điều này sẽ xác nhận rằng bạn có cấu hình chính xác và giảm thời gian gỡ lỗi.
Đầu tiên, cài đặt các gói cần thiết
sudo apt-get install openvpn
Tiếp theo, tạo một thư mục để lưu trữ các tệp cấu hình. Tôi đang sử dụng / opt / ibVPN, vì đó là nhà cung cấp mà tôi đang sử dụng. Thay đổi nó thành bất cứ điều gì bạn thích.
sudo mkdir /opt/ibVPN
Điều đầu tiên cần làm trong thư mục mới này là tạo tệp cấu hình để chạy máy khách VPN. ibVPN cung cấp một tệp cấu hình cơ bản cho người dùng Linux, mà tôi hầu như chỉ sao chép và dán.
cd /opt/ibVPN
sudo vim config.ovpn
Sao chép và dán phiên bản đã chỉnh sửa của bạn vào vim, sử dụng cài đặt cho nhà cung cấp VPN của bạn. (FYI, dán vào thiết bị đầu cuối Ubuntu là Ctrl+Shift+V
) Bạn sẽ có thể nhận được điều này từ nhà cung cấp VPN của bạn.
remote 888.888.888.888 1194 udp #This address will be different for you
client
dev tap1
resolv-retry infinite
script-security 3 system
explicit-exit-notify 3
persist-key
mute-replay-warnings
ca ibvpn.com.crt
comp-lzo
verb 3
mute 20
ns-cert-type server
fragment 1300
route-delay 2
reneg-sec 0
max-routes 5000
link-mtu 1578
auth-user-pass pass
auth-nocache
persist-tun
route-noexec
lport 1195
lladdr 00:FF:11:AA:BB:CC
route-up "/opt/home/openvpn/route-up.sh"
down "/opt/home/openvpn/down.sh"
Đối với những người không quen thuộc với vim, nhấn Insert
để gõ hoặc dán văn bản, sau đó nhấn Escape
và gõ :wq
để lưu và thoát. Tất nhiên, bạn không phải sử dụng vim - bất kỳ trình soạn thảo văn bản nào cũng sẽ hoạt động.
Tôi sẽ nhanh chóng giải thích tệp cấu hình này: 18 dòng đầu tiên chỉ định cài đặt cụ thể sẽ sử dụng với máy chủ, chúng đến từ ibVPN - bạn có thể sẽ hơi khác nếu bạn có nhà cung cấp khác. Các dòng tiếp theo là các tùy chọn sửa đổi tôi đã chỉ định.
Nếu tệp cài đặt của bạn có bất kỳ dòng nào auth-user*
, hãy nhận xét chúng. Để thiết lập này hoạt động tự động, chúng tôi cần có một tệp có tên người dùng và mật khẩu trong đó - vì vậy hãy đảm bảo mật khẩu bạn chọn cho nhà cung cấp VPN mạnh, ngẫu nhiên và duy nhất.
Thông báo auth-user-pass pass
cho OpenVPN tìm kiếm một tệp được gọi pass
để đọc người dùng và mật khẩu từ đó.
auth-nocache
xóa mật khẩu khỏi bộ nhớ, điều này có thể làm tăng tính bảo mật một chút nếu bạn lo lắng về nó.
persist-tun
sẽ cố gắng giữ cùng một địa chỉ IP từ máy chủ nếu kết nối của bạn bị mất, điều đó có nghĩa là sẽ ít bắt đầu và dừng truyền-daemon hơn.
route-noexec
yêu cầu khách hàng OpenVPN không tự động sử dụng các tuyến do máy chủ cung cấp - việc này sẽ kéo tất cả lưu lượng truy cập mạng qua VPN. Chúng tôi chỉ muốn gửi lưu lượng torrent, vì vậy chúng tôi sẽ cần sử dụng các cài đặt định tuyến khác nhau.
lport 1195
nói với máy khách OpenVPN sử dụng cổng 1195 thay vì 1194 - trong trường hợp của tôi, tôi cũng muốn chạy máy chủ OpenVPN trên cùng một thiết bị và máy chủ sẽ cần sử dụng cổng 1194. Ngay cả khi bạn không chạy máy chủ OpenVPN, nó vẫn không chạy được máy chủ OpenVPN. không làm tổn thương để thay đổi này.
Tôi đã thay đổi dòng dev tap
thành dev tap1
, để buộc thiết bị ảo thành tap1 thay vì được OpenVPN gán lại, vì chạy một máy chủ OpenVPN riêng biệt. Ngay cả khi bạn không chạy máy chủ VPN, thay đổi này không thành vấn đề. Các tập lệnh tường lửa đã được viết để sử dụng tap1
, vì vậy nếu bạn muốn sử dụng một thiết bị khác thì hãy nhớ thay đổi các tập lệnh đó khi thích hợp.
lladdr 00:FF:11:AA:BB:CC
yêu cầu OpenVPN chỉ định giao diện nhấn để có địa chỉ MAC này, có thể hữu ích cho các quy tắc tường lửa iptables.
route-up
và down
chạy các kịch bản để bắt đầu và dừng Truyền-daemon theo yêu cầu - những thứ này cần thiết ở đây vì chúng chạy với các biến môi trường chứa thông tin về kết nối, cần thiết để liên kết chính xác Truyền đến đúng địa chỉ IP và cổng.
Trong trường hợp của tôi, tôi đã có chứng chỉ máy chủ từ nhà cung cấp VPN - cũng phải nằm trong cùng thư mục với tệp cấu hình.
sudo vim /opt/ibVPN/ibvpn.com.crt
Sao chép và dán tệp này hoặc di chuyển nó qua SCP hoặc SSHFS.
-----BEGIN CERTIFICATE-----
MIIDeDCCAuGgAwIBAgIJAMVKgpjMPUfxMA0GCSqGSIb3DQEBBQUAMIGFMQswCQYD
VQQGEwJVUzELMAkGA1UECBMCQ0ExFTATBgNVBAcTDFNhbkZyYW5jaXNjbzEVMBMG
A1UEChMMRm9ydC1GdW5zdG9uMRgwFgYDVQQDEw9Gb3J0LUZ1bnN0b24gQ0ExITAf
BgkqhkiG9w0BCQEWEm1lQG15aG9zdC5teWRvbWFpbjAeFw0xMDA3MjExOTU5MzVa
Fw0yMDA3MTgxOTU5MzVaMIGFMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFTAT
BgNVBAcTDFNhbkZyYW5jaXNjbzEVMBMGA1UEChMMRm9ydC1GdW5zdG9uMRgwFgYD
VQQDEw9Gb3J0LUZ1bnN0b24gQ0ExITAfBgkqhkiG9w0BCQEWEm1lQG15aG9zdC5t
eWRvbWFpbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAz23m3BXY5Asiw8Dx
T4F6feqsp+pIx6ivftTniyUCbSAxI1J1s1x75DzxmUpIwPu5xavzgPXgZr8FT81X
JGqF9km4AE95iddJawKx0wNgdTo7GximQq9rw0dsQIB5hZZQ9TJwHC3VOnmEic5A
OawKOCybMcRs8saLakZOgh7Xc+UCAwEAAaOB7TCB6jAdBgNVHQ4EFgQUeRhE2N4l
XwL4H1dbjkZ4ou6fj3AwgboGA1UdIwSBsjCBr4AUeRhE2N4lXwL4H1dbjkZ4ou6f
j3ChgYukgYgwgYUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEVMBMGA1UEBxMM
U2FuRnJhbmNpc2NvMRUwEwYDVQQKEwxGb3J0LUZ1bnN0b24xGDAWBgNVBAMTD0Zv
cnQtRnVuc3RvbiBDQTEhMB8GCSqGSIb3DQEJARYSbWVAbXlob3N0Lm15ZG9tYWlu
ggkAxUqCmMw9R/EwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQASt0pl
WzVseQLTNM8Mlgw4ZnGAv/x2xnijmMqrkE+F7pnaOicGpxgCfMKzjZuJu0TNJqF2
fibE7GhMdomD4dLFgIu8Wb5E7iQ1CSBEOGumRhK8qCsDzjr7WXUdhqA6Xvo+ylU6
DMzy0Wn3NNvfGC+qxOgybYCJwDnVPi0CEDSbzQ==
-----END CERTIFICATE-----
Rõ ràng nếu bạn không sử dụng tài khoản ibVPN, chứng chỉ của bạn sẽ khác.
Bây giờ chúng ta hãy tạo tập tin mật khẩu:
sudo vim /opt/ibVPN/pass
Dòng đầu tiên phải là tên người dùng đầy đủ, sau đó dòng thứ hai phải là mật khẩu. Đây phải là nội dung duy nhất của tập tin này.
you@address.com
myBIGstrongpassword1234567890
Chúng tôi cũng phải bảo mật các quyền trên tệp này hoặc OpenVPN sẽ không bắt đầu.
sudo chmod 400 pass
Điều này sẽ làm cho tệp chỉ đọc và chỉ dành cho chủ sở hữu (tức là không có người dùng nào khác có thể đọc nó)
Các lệnh này sẽ tạo các tệp để chạy khi khởi động và đặt chúng chỉ có thể được thực thi bằng root.
sudo touch route-up.sh
sudo touch down.sh
sudo chmod 700 route-up.sh
sudo chmod 700 down.sh
Tại thời điểm này, có lẽ nên kiểm tra xem kết nối VPN có thực sự hoạt động hay không. Bắt đầu kết nối với:
sudo openvpn --cd /opt/ibVPN --config config.ovpn
Bạn sẽ thấy các cảnh báo rằng các lệnh bên ngoài lên và xuống không thể chạy được, nhưng đừng lo lắng về điều đó. Nếu nó hoạt động, bạn sẽ thấy Initialization Sequence Completed
trên thiết bị đầu cuối. Nhấn Control+C
để kết thúc kết nối. Nếu nó không hoạt động, bạn sẽ phải điều tra tại sao không và sửa nó trước khi tiếp tục. Tôi thấy rằng đôi khi phải mất một vài lần để bắt đầu làm việc. Hãy chắc chắn rằng tập tin mật khẩu của bạn là chính xác. Có rất nhiều tài nguyên tuyệt vời trên Internet về OpenVPN, vì vậy hãy xem xung quanh.
Tại thời điểm này, có lẽ dễ dàng nhất để chuyển sang truyền và chạy. Khi bạn chắc chắn rằng cả VPN và Truyền có thể chạy riêng, chúng có thể được kết hợp.
Cài đặt và cấu hình Truyền
Cài đặt các gói cần thiết:
sudo apt-get install transmission-daemon
Theo mặc định, Transmission sẽ chạy tự động khi khởi động. Vì cuối cùng chúng tôi sẽ sử dụng OpenVPN để bắt đầu Truyền, chúng tôi muốn tắt tính năng này. Để làm như vậy, chỉnh sửa tệp cấu hình cho Transmission-daemon
sudo vim /etc/default/transmission-daemon
Và thay đổi dòng sau để đọc:
ENABLE_DAEMON=0
Bây giờ Transmission sẽ không bắt đầu khởi động.
Bây giờ chúng ta hãy tạo một thư mục cho các cài đặt Truyền tải cư trú và cho các torrent được tải xuống đi vào. Điều này giả định rằng bạn đã thiết lập một loại đĩa nào đó và nó được gắn tại / media / arm-đĩa /. Vì mục đích bảo mật, daemon sẽ được điều hành bởi chính người dùng của nó chứ không phải là root hoặc là "ubfox". Một người dùng mới được tạo bởi trình cài đặt cho truyền-daemon, "debian-Transmission". Người dùng này cần sở hữu thư mục mà chúng tôi tạo và có quyền truy cập đọc và ghi vào vị trí lưu trữ cho các torrent được tải xuống.
sudo mkdir /opt/transmission
sudo chown debian-transmission:debian-transmission /opt/transmission
sudo mkdir /media/arm-disk/torrents-complete
sudo chown debian-transmission:debian-transmission /media/arm-disk/torrents-complete
sudo mkdir /media/arm-disk/torrents-incomplete
sudo chown debian-transmission:debian-transmission /media/arm-disk/torrents-incomplete
Bây giờ chúng ta cần bắt đầu truyền, chỉ một thời gian ngắn, để nó tạo tệp cài đặt mà chúng ta cần:
sudo -u debian-transmission -g debian-transmission /usr/bin/transmission-daemon --config-dir /opt/transmission --foreground
Lệnh này bắt đầu truyền-daemon với tư cách là người dùng truyền debian, bảo nó sử dụng thư mục / opt / truyền cho các tệp cài đặt và bảo nó tiếp tục chạy ở nền trước. Khi nó đã chạy được vài giây, nhấn Control+C
để kết thúc nó. Bây giờ chúng ta có thể chỉnh sửa tập tin cài đặt.
sudo -u debian-transmission vim /opt/transmission/settings.json
Bây giờ chúng ta cần thay đổi thành các dòng sau từ mặc định của chúng để đọc:
"download-dir": "/media/arm-disk/torrents-complete",
"incomplete-dir": "/media/arm-disk/torrents-incomplete",
"incomplete-dir-enabled": true,
"rpc-whitelist": "127.0.0.1,192.168.1.*",
Lưu và thoát (Thoát, gõ: wq và nhấn Enter)
Hai chỉnh sửa ở giữa sẽ cho phép sử dụng thư mục "chưa hoàn thành", tách các torrent đã hoàn thành của bạn khỏi các thư mục chưa hoàn thành. Điều này không hoàn toàn cần thiết, nhưng cá nhân tôi thấy nó cực kỳ hữu ích. Chỉnh sửa cuối cùng cho phép GUI web được truy cập bởi bất kỳ máy tính nào trong mạng LAN (giả sử mạng con LAN của bạn là 192.168.1.0, hãy sửa đổi điều này nếu nó khác).
Bây giờ là một ý tưởng tốt để chạy lại Transmission, để xem nó có hoạt động không và thực sự có thể tải xuống một torrent. Chúng tôi sẽ sử dụng cửa sổ trình duyệt web để truy cập GUI và thêm torrent. Trước tiên, hãy cho phép truy cập vào GUI web thông qua tường lửa từ mạng LAN, sau đó chạy lại trình truyền tải.
sudo ufw allow in from 192.168.0.0/16 to any port 9091
sudo -u debian-transmission -g debian-transmission /usr/bin/transmission-daemon --config-dir /opt/transmission --foreground
Truy cập URL này trong Firefox (hoặc bất kỳ trình duyệt nào bạn thích): http://XXX.XXX.XXX.XXX:9091 , trong đó XXX được thay thế bằng địa chỉ máy chủ của bạn trên mạng LAN (ví dụ 192.168.1.10). Tìm một torrent để tải xuống, ví dụ Big Buck Bunny ở 1080p60hz. Đây là một bộ phim ngắn miễn phí, có sẵn để tải về miễn phí. Trong GUI truyền tải, nhấp vào nút "Mở torrent" và dán liên kết này (hoặc bất kỳ torrent nào bạn muốn) vào hộp đầu tiên. Sau đó nhấn "Tải lên". Nếu Transmission hoạt động chính xác, torrent sẽ bắt đầu tải xuống. Nếu không, thì bạn sẽ cần tìm hiểu tại sao trước khi tiếp tục. Có rất nhiều tài nguyên có sẵn trên Internet để sử dụng truyền-daemon. Nó cũng có thể là torrent bạn chọn không hoạt động, trước tiên hãy thử một vài cái khác.
Sau khi quá trình tải xuống hoàn tất, nhấn Control+C
trong cửa sổ terminal để dừng truyền-daemon.
Định cấu hình Truyền liên kết với giao diện VPN
Bây giờ, hãy tạo một kịch bản Upstart, sẽ được sử dụng để bắt đầu Truyền khi VPN đã sẵn sàng.
sudo mv /etc/init/transmission-daemon.conf /etc/init/transmission-daemon.conf.bak
Đừng lo lắng nếu điều này phàn nàn, đó chỉ là để tạo một bản sao lưu của tệp Upstart, nếu nó tồn tại - nó có thể không có. Hãy mở vim để chỉnh sửa cái mới:
sudo vim /etc/init/transmission-daemon.conf
Dán cái này vào trình chỉnh sửa:
description "transmission-daemon, attached to OpenVPN tunnel tap1"
start on transmission-daemon-start
stop on runlevel [!2345] or transmission-vpn-down
# This includes the information from OpenVPN into this environment
export LOCAL_IP
env PORT=51413
# give time to send info to trackers
kill timeout 30
# Run as unprivileged user
setuid debian-transmission
setgid debian-transmission
# Start transmission again if it stops for some reason
respawn
# If transmission stops 5 times in a minute, give up trying to respawn it
respawn limit 5 60
exec /usr/bin/nice -15 /usr/bin/transmission-daemon --config-dir /opt/transmission --bind-address-ipv4 $LOCAL_IP --peerport $PORT --no-portmap --foreground
Lưu và đóng vim. ( Escape
, sau đó gõ :wq
). Một lần nữa, mở vim:
sudo vim /etc/init/transmission-up.conf
Và dán cái này:
description "Script to create firewall and routing rules for transmission-daemon"
start on transmission-vpn-up
# This includes the information from OpenVPN into this environment
export VPN_GATEWAY
export LOCAL_IP
env PORT=51413
task
script
# Set up IP route, firewall rules
# It doesn't matter if they already exist, they will be skipped
/sbin/ip route add default via $VPN_GATEWAY dev tap1 table 200
/sbin/ip rule add from $LOCAL_IP table 200
/sbin/ip route flush cache
/usr/sbin/ufw insert 1 reject out on eth0 from any port $PORT
/usr/sbin/ufw insert 1 reject in on eth0 to any port $PORT
/usr/sbin/ufw insert 1 deny in on tap1 to any
/usr/sbin/ufw insert 1 allow in on tap1 to any port $PORT proto udp
# Start the actual transmission-daemon process, in a separate task so that unprivileged user/group can be set
/sbin/initctl emit transmission-daemon-start LOCAL_IP=$LOCAL_IP
end script
Một lần nữa, lưu và đóng vim. ( Escape
, sau đó gõ :wq
). Cuối cùng:
sudo vim /etc/init/transmission-down.conf
Dán cái này:
description "Script to remove firewall rules for transmission-daemon"
start on runlevel [!2345] or stopping openvpn-transmission
env PORT=51413
task
script
# Take down IP route, firewall rules
# It doesn't really matter if they don't get taken down, but this will be cleaner
/usr/sbin/ufw delete reject out on eth0 from any port $PORT
/usr/sbin/ufw delete reject in on eth0 to any port $PORT
/usr/sbin/ufw delete deny in on tap1 to any
/usr/sbin/ufw delete allow in on tap1 to any port $PORT proto udp
/sbin/ip route flush cache
end script
Các tập lệnh này báo cho Upstart lắng nghe tín hiệu "truyền-vpn-up". Sau đó, tập lệnh "Transmission-up.conf" sẽ thiết lập các quy tắc định tuyến cần thiết để gửi lưu lượng truy cập từ địa chỉ VPN cục bộ qua giao diện VPN và đặt tường lửa cho phép lưu lượng truy cập từ VPN đến cổng nghe cho Truyền. Lưu lượng truy cập đến cổng nghe của Transmission từ giao diện LAN bình thường bị chặn. Tập lệnh "Transmission-daemon.conf" sau đó bắt đầu truyền-daemon với các cài đặt cần thiết để liên kết nó với địa chỉ IP VPN. Lưu ý rằng lệnh này cũng sẽ đảm bảo UPnP / NAT-PMP bị vô hiệu hóa - xem ghi chú của tôi ở đầu về chuyển tiếp cổng. "Đẹp -15" đặt Truyền dẫn có mức ưu tiên thấp hơn, điều mà tôi thấy hữu ích khi sử dụng BeagleBone có thông số kỹ thuật thấp hơn - đôi khi Truyền có thể hog tài nguyên, làm chậm hệ thống Ít nhất với mức độ ưu tiên thấp, các tác vụ hệ thống quan trọng hơn vẫn có thể chạy. Kịch bản "truyền xuống.conf" sẽ loại bỏ các quy tắc tường lửa khi VPN bị dừng. Ba tập lệnh khác nhau được sử dụng để truyền daemon có thể được chạy như một người dùng không có đặc quyền, nhưng các quy tắc tường lửa có thể được chạy dưới quyền root.
Bây giờ, hãy quay lại cài đặt OpenVPN và chỉnh sửa tập lệnh "định tuyến" và "xuống" để kích hoạt bắt đầu và dừng tập lệnh Truyền của chúng tôi.
sudo vim /opt/ibVPN/route-up.sh
Dán cái này vào vim:
#! /bin/bash
/sbin/initctl emit transmission-vpn-up VPN_GATEWAY=$route_vpn_gateway LOCAL_IP=$ifconfig_local
Tất cả các kịch bản này được nói với Upstart rằng truyền-daemon sẽ bắt đầu và cung cấp cho nó thông tin cần thiết để đính kèm với kết nối VPN.
sudo vim /opt/ibVPN/down.sh
Một lần nữa, dán nhiều hơn:
#! /bin/bash
/sbin/initctl emit transmission-vpn-down
Kịch bản này thậm chí còn đơn giản hơn - nó báo hiệu cho việc truyền-daemon dừng lại.
Tại thời điểm này, có lẽ nên đảm bảo rằng chủ sở hữu của toàn bộ thư mục cấu hình VPN là người dùng root - vì các tập lệnh này chạy bằng root, bất kỳ ai có thể thay đổi chúng đều có thể chạy bất cứ thứ gì họ muốn với tư cách là người dùng root.
sudo chown root:root -R /opt/ibVPN
sudo chmod 700 -R /opt/ibVPN
sudo chmod 400 /opt/ibVPN/pass
Điều này bây giờ có nghĩa là chỉ người dùng root mới có thể sửa đổi hoặc xem cài đặt kết nối VPN.
OK, chúng ta sắp xong rồi! Hãy kiểm tra nếu thiết lập của chúng tôi hoạt động cho đến nay:
sudo openvpn --cd /opt/ibVPN --config config.ovpn
Kết nối lại với GUI web truyền tải và tiếp tục torrent hiện có hoặc thêm một torrent mới. Nó sẽ có thể tải xuống, có thể sau một vài phút chờ đợi cho các đồng nghiệp. Một cách tiện lợi mà tôi đã tìm thấy để kiểm tra xem nó có hoạt động hay không là nhìn vào iftop. Cài đặt iftop và chạy:
sudo apt-get install iftop
sudo iftop -i tap1
Màn hình này sẽ hiển thị tất cả các kết nối chạy qua VPN. Nếu torrent của bạn đang tải xuống và sử dụng VPN chính xác, sẽ có rất nhiều địa chỉ IP và tên máy chủ lưu trữ ở đây. Cũng xem iftop cho kết nối LAN:
sudo iftop -i eth0
Tại đây, bạn sẽ thấy một lượng lớn lưu lượng truy cập đến một địa chỉ IP duy nhất, là máy chủ VPN và sau đó chỉ lưu lượng tối thiểu đến các thiết bị LAN khác - giả sử rằng bạn không chạy các dịch vụ khác trên BeagleBone.
Bạn có thể xác nhận rằng VPN đang hoạt động bằng cách làm theo các hướng dẫn sau .
Trang web này cho phép bạn tải xuống một torrent để xem địa chỉ IP mà các đồng nghiệp khác sử dụng để kết nối với bạn - nếu mọi thứ đang hoạt động thì đây sẽ là địa chỉ IP VPN chứ không phải địa chỉ IP WAN của riêng bạn.
Nếu bạn gặp sự cố, bạn có thể xem nhật ký lỗi Khởi động bằng cách thực hiện:
sudo tail -f /var/log/upstart/transmission-daemon.log
Trong cửa sổ terminal / SSH riêng biệt, hãy thử chạy lệnh tail trong khi bắt đầu kết nối VPN như trên và tìm kiếm bất kỳ thông báo lỗi nào. Hy vọng rằng bạn có thể giải quyết vấn đề khi nhìn thấy các thông báo lỗi, nếu không tìm hiểu kỹ về Internet hoặc đăng bình luận.
Cấu hình tất cả để bắt đầu tự động
Nếu bạn hài lòng với việc ban hành lệnh thủ công để bắt đầu đường hầm OpenVPN hoặc bạn muốn thực hiện nó với tập lệnh của riêng bạn, thì bạn đã hoàn thành. Nhưng tôi muốn nó khởi động khi khởi động, vì vậy tôi đã tạo một kịch bản Upstart khác để khởi chạy OpenVPN.
sudo vim /etc/init/openvpn-transmission.conf
Đây là điều cuối cùng chúng ta phải dán!
description "OpenVPN client, with attached transmission-daemon"
start on started networking
stop on runlevel [!2345] or stopped networking
# Give time for Transmission to send info to trackers, wait for graceful close
kill timeout 45
# Start the OpenVPN tunnel again if it stops for some reason
respawn
# If it stops 5 times in a minute, give up trying to respawn it
respawn limit 5 60
exec openvpn --cd /opt/ibVPN --config config.ovpn
post-stop script
# Pause for a few seconds, before exiting
/bin/sleep 3s
end script
Tất cả điều này chỉ là chờ hệ thống báo hiệu rằng mạng đã sẵn sàng, và sau đó nó sẽ khởi động đường hầm OpenVPN - sẽ lần lượt bắt đầu Truyền. Khi hệ thống bị tắt hoặc nếu tắt mạng vì một số lý do, Upstart sẽ xóa các quy tắc tường lửa và đóng daemon truyền. Đơn giản! Điều này cũng sẽ tiếp tục hoạt động sau khi khởi động lại, vì vậy bây giờ bạn đã thiết lập xong.
Để tương tác với Truyền, sử dụng GUI web như chúng tôi đã làm trong giai đoạn thiết lập. Cũng có thể làm cho GUI có thể truy cập qua Internet, bằng cách thiết lập chuyển tiếp cổng. Có rất nhiều hướng dẫn về cách làm điều này, vì vậy tôi sẽ không lặp lại ở đây.
Đối với việc tải xuống hoàn thành từ BeagleBone, tôi đang sử dụng NFS. Tôi có thể nhận được tốc độ sao chép khoảng 8 MB / giây qua mạng LAN từ BeagleBone sang máy tính để bàn của mình - điều này khá tốt cho một thiết bị có công suất thấp như vậy. Ubuntu cung cấp một số thông tin hữu ích để thiết lập điều này.