Shadowsocks là gì?
Ứng dụng proxy dựa trên mã nguồn mở SOCKS5, Shadowsocks là ứng dụng trung gian được thiết kế chủ yếu để vượt qua sự kiểm duyệt. Nó được phát hành lần đầu tiên vào năm 2012 bởi một lập trình viên người Trung Quốc với bút danh “clowwindy”.
Vào năm 2015, lập trình viên này thông báo rằng họ từ bỏ dự án do bị cảnh sát điều tra. Kể từ đó, Shadowsocks đã được phát triển và duy trì bởi nhiều cộng tác viên.
Shadowsocks khác với VPN như thế nào?
Có một điểm tương đồng chính giữa VPN và Shadowsocks, đó là khả năng kết nối bạn với các trang web thường bị giới hạn do kiểm duyệt của chính phủ, địa giới, hoặc bằng các cách khác.
Với mục đích ban đầu là vượt qua Great Firewall của Trung Quốc, Shadowsocks tập trung vào việc phá vỡ các hạn chế về lưu lượng truy cập. Shadowsocks sử dụng HTTP để ẩn lưu lượng truy cập và có thể vượt qua các biện pháp kiểm duyệt tại chỗ.
Không giống như VPN, Shadowsocks không được thiết kế để bảo mật và ẩn danh. Trong khi VPN mã hóa tất cả lưu lượng truy cập khi được kích hoạt, các gói dữ liệu trong Shadowsocks đều “trống” – có nghĩa là chúng không được mã hóa. Mục đích chính của việc này là làm cho dữ liệu của bạn trông giống như lưu lượng truy cập HTTP, để nó có thể được lan truyền mà không có bất kỳ hạn chế nào.
Do sử dụng proxy SOCKS5, Shadowsocks không gửi tất cả lưu lượng truy cập của bạn qua máy chủ, điều này hoàn toàn ngược lại so với VPN. Và trái ngược với các proxy ssh SOCKS5 truyền thống, Shadowsocks hoạt động với nhiều kết nối TCP. Do đó, tốc độ truy cập mạng sẽ nhanh hơn nhiều so với các lựa chọn khác.
Ưu điểm của Shadowsocks
Ưu điểm lớn nhất của Shadowsocks là việc dễ dàng được thiết lập. Công nghệ này là một proxy đơn giản và hữu ích mà không mất nhiều thời gian để thiết lập và là sự lựa chọn hoàn hảo cho việc truy cập vào các nội dung bị giới hạn.
Một lợi ích khác của Shadowsocks là việc ẩn lưu lượng truy cập có lựa chọn của nó. Bạn có thể chọn phần lưu lượng truy cập của bạn bị ảnh hưởng bởi Shadowsocks – điều này giúp bạn có thể truy cập các nội dung bị hạn chế cả bên trong và bên ngoài vị trí của mình.
Ví dụ: bạn đang ở Trung Quốc và bạn muốn truy cập vào Gmail. Bằng cách sử dụng Shadowsocks, bạn có thể chọn lưu lượng truy cập Gmail là “camouflaged”,để bỏ qua việc chặn của chính phủ Trung Quốc.
Tuy nhiên, bạn vẫn có thể truy cập các trang web chỉ có ở Trung Quốc. Ngược lại, VPN sẽ mã hóa tất cả lưu lượng truy cập đến máy chủ bạn đã chọn, do đó các trang web độc quyền của Trung Quốc không thể được truy cập trên cùng một thiết bị.
Điều cuối cùng nhưng không kém phần quan trọng, Shadowsocks rất khó – nếu không phải là không thể – để phát hiện và chặn. Việc ẩn lưu lượng truy cập để làm cho nó xuất hiện như HTTP là lý do chính cho điều đó.
Mặt khác, phương thức hoạt động và sự phổ biến của VPN đã giúp các chính phủ và các nền tảng dễ dàng ngăn chặn công nghệ hoặc buộc các công ty lớn loại bỏ VPN khỏi các cửa hàng của họ (ví dụ như gỡ bỏ ứng dụng VPN của Apple khỏi App Store của Trung Quốc).
Thật sự nếu bạn là người bình thường, sống ở Việt Nam thì chỉ hay nghe nhiều về proxy, socks, vpn, chứ có lẽ ít nghe về Shadowsocks, vâng và mình cũng thế :]] Mình không biết cái quái gì gọi là Shadowsocks cho tới khi google thông tin về cách biến con VPS thành proxy, khi tìm hiểu thêm thì mình thấy khá là hay ho, đơn giản là khi dùng nó, mình có thể chạy max speed đường truyền nhà mạng thông qua con VPS :]]
TCP BBR là gì
Các kĩ sư tại Google vừa giới thiệu thuật toán mới giúp tăng tốc TCP, đây là một giao thức truyền dữ liệu chủ yếu cho traffic Internet. Nó hoạt động dựa vào phương thức tối ưu hóa tốc độ gửi traffic, và từ đó giúp không gây nghẽn đường truyền.
Phương pháp này được gọi là khoảng thời gian truyền băng thông và đường đi nút thắt cổ chai (Bottleneck Bandwidth & Roundtrip – BBR). Nó giúp tìm ra cách nhanh nhất để gửi dữ liệu qua các đường truyền khác nhau, ngoài ra còn hỗ trợ xử lý traffic hiệu quả hơn khi dữ liệu bị nghẽn.
Google cũng sẵn sàng sử dụng BBR để tăng tốc traffic YouTube và cuối tháng, công ty cũng sẽ đưa BBR lên Google Cloud Platform. Google nói rằng áp dụng BBR sẽ tăng tốc traffic hiện đã được tối ưu hóa cao của YouTube thêm trung bình 4% và nhiếu nhất là 14% ở một số nước.
Nói chung là định nghĩa chung là thế, chứ thực tế mình cũng chẳng hiểu BBR nó hoạt động ra làm sao :]] chỉ biết Google làm ra và mình chạy thấy có hiệu quả thì mình cài vào thôi 😀 thực tế khi mình thử trên VPS Vultr chạy các hệ điều hành mới như Ubuntu 17.10 x64 đã thấy họ có cài sẵn BBR vào rồi 😀
OK, đầu tiên bạn hãy nhìn vào các bài Speedtest, ở mỗi bài test trước đó sẽ trình duyệt sẽ xóa cookies, tắt trình duyệt, bật lại 😀
Đầu tiên là test với đường truyền tại nhà, để chạy trực tiếp
Tiếp theo là thử khi sử dụng Vultr location Japan làm proxy, sử dụng Shadowsocks kết hợp với thuật toán điều khiển tắc nghẽn TCP, BBR từ Google
Kết quả là giờ ta có một cái đường truyền gần như max tốc độ nhà mạng, download tại khắp mọi nơi trên thế giới đều kịch kim, bù lại ta có 1 cái speed upload thấp cmnl :]]
Sử dụng Shadowsocks chọ ta một kết nối nhanh hơn và ổn định hơn khá nhiều so với sử dụng VPN, tuy thế nên nhớ Shadowsocks sinh ra không phải để giúp bạn an toàn hơn khi online 😀 đơn giản nó sinh ra là vì Trung Quốc yêu cầu các nhà mạng chặn FB, Google các kiểu tởm wá, chúng nó phải viết ra Shadowsocks nhằm mục đích vào được các trang đó mà thôi 😀
Thực tế mình test qua lại, không hiểu sao khi dùng VPS làm VPN tốc độ khá là thọt, chạy kiểu Shadowsocks thì khá hơn, dù tốc độ upload ở các bài test thấp tè, nhưng khi mình thử upload file lên Youtube vẫn thấy nó max speed, cũng không hiểu tại làm sao luôn
Sự thật thì mình cũng khá bất ngờ về tốc độ mà Shadowsocks và BBR mang lại, chưa khi nào mình thử VPN hay các proxy mà đạt được max speed khi kết nối tới các server ở Châu Âu cả 😀
Để dễ hình dung về Shadowsocks là bạn sẽ có cảm giác rõ ràng mình dùng proxy, nhưng tốc độ vẫn cứ max speed đường truyền nhà bạn 😛 Kết quả tạm thời là thế, mình sẽ bổ xung thêm các kết quả khác về speed, nếu cách này dùng ổn định 😀
Cài đặt
Nên dùng VPS location Singapore, Hong Kong hoặc Japan cho nhanh 😀
Chọn hệ điều hành thì tùy, sao cũng được, có điều ở bài này mình dùng Ubuntu 16.04, nếu dùng Vultr tạo xong có IP nên check thử xem hiện đúng location không, vì như con của mình location Japan, nhưng check toàn hiện là Hong Kong :]] nếu để sử dụng luôn thì nên cố để IP và location giống nhau, vì dùng Shadowsocks IP và location sai, Google dễ hiểu lầm, nó văng popup hỏi “Bạn có phải là người máy không” khá thường 😀
Bạn có thể check IP VPS qua Domaintools hoặc Whatismyipaddress
Ở bài này làm demo thì mình dùng VPS Vultr, location Japan, mình cũng thử chạy qua Amazon EC2 thì thấy cài đặt cũng bình thường, nhớ vào mở hết các port ra là được
Cài đặt Shadowsocks
Login vào root, đầu tiên chạy lệnh bên dưới để update hệ điều hành
sudo apt-get update && sudo apt-get upgrade -y
Tiếp theo chạy:
wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh chmod +x shadowsocks.sh ./shadowsocks.sh 2>&1 | tee shadowsocks.log
Chú ý là dòng 1 khá dài, nhớ kéo màn hình copy cho hết link 😛
Mặc định nó sẽ hỏi bạn password sau khi gõ lệnh cuối ở trên
############################################################# # One click Install Shadowsocks-Python server # # Intro: https://teddysun.com/342.html # # Author: Teddysun <i@teddysun.com> # # Github: https://github.com/shadowsocks/shadowsocks # ############################################################# Please enter password for shadowsocks-python (Default password: teddysun.com):
Password mặc định là “teddysun.com” hãy điền vào pass bạn thích, xong rồi ấn Enter 😀
Please enter a port for shadowsocks-python [1-65535] (Default port: 11387):
Port được tạo ngẫu nhiên, như của mình là 11387, điền port khác nếu thích, không thì cứ ấn Enter 😛
Please select stream cipher for shadowsocks-python: 1) aes-256-gcm 2) aes-192-gcm 3) aes-128-gcm 4) aes-256-ctr 5) aes-192-ctr 6) aes-128-ctr 7) aes-256-cfb 8) aes-192-cfb 9) aes-128-cfb 10) camellia-128-cfb 11) camellia-192-cfb 12) camellia-256-cfb 13) chacha20-ietf-poly1305 14) chacha20-ietf 15) chacha20 16) rc4-md5 Which cipher you'd select(Default: aes-256-gcm):
Chọn option thứ 13 là chacha20-ietf-poly1305 😀 (Họ hỗ trợ 16 cơ chế mã hóa, dùng thử thì mình thấy rc4-md5 thuần túy nhanh nhất )
Enter xong thì ngồi chờ nó chạy 1 rừng code các kiểu
Congratulations, Shadowsocks-python server install completed! Your Server IP : xxx.xxx.xxx.xxx Your Server Port : 11387 Your Password : bibica Your Encryption Method: chacha20-ietf-poly1305 Welcome to visit:https://teddysun.com/342.html Enjoy it!
Xong xuôi nó sẽ hiện ra các thông số để bạn nhìn, copy thoái mái 😛 của mình thì như thế
Ok, tiếp theo download file setup để chạy trên máy tính
Shadowsocks for Windows | Shadowsocks for Android | Shadowsocks for Mac |
Mình dùng bản Shadowsocks v4.0.9 cho Windows ở thời điểm viết bài này
Điền vào các thông số như ở trên, chạy thì phải chuột chọn Enable system proxy. Mode chọn Global, các thứ khác để mặc định, còn bạn nào thích tìm hiểu thêm các setting thì cứ tự nghịch
Mình dùng thì thấy mặc định trình duyệt từ nhận cả rồi, nếu cái nào không tự nhận thì bạn thêm vào phần proxy cho nó, localhost:1080 như setting trong Shadowsocks là được
Vậy là bạn đã có 1 con proxy chuẩn Shadowsocks để dùng rồi 😛
nano /etc/shadowsocks.json
Sửa xong restart lại để có hiệu quả
/etc/init.d/shadowsocks restart
Thử xem loại nào ổn, mình thử rc4-md5 là thấy ổn rồi
Trong trường hợp vì lý do nào đó, bạn không muốn dùng nữa, gỡ bỏ ra thì chạy lệnh:
./shadowsocks.sh uninstall
Mỗi cái tốc độ chưa max, được khoảng 80% tốc độ nhà mạng Việt Nam thôi, cần tối ưu thêm, về mặt lý thuyết các cụm location của Vultr có thể đạt tốc độ cao nhất lên tới ~50MB/s, là vào khoản 400 Mbps, tiếc là mình cũng chưa có cái mạng nào ở đây để thử xem tới được con số đó không
Cài đặt Google BBR và tối ưu hóa VPS
Bước này thì cứ copy, paste là được, chứ mình cũng ếu hiểu mấy cái dòng đó nghĩa là gì đâu :]]
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh chmod +x bbr.sh ./bbr.sh
Chạy xong 3 dòng code đó nó sẽ hỏi bạn có muốn reboot không, ấn “y” rồi Enter là được
Info: The system needs to reboot. Do you want to restart system? [y/n]
Login vào lại VPS với quyền root, chạy 2 dòng lệnh bên dưới
lsmod | grep bbr nano /etc/sysctl.conf
Thêm vào sau dòng “net.ipv4.tcp_congestion_control = bbr” đoạn code bên dưới
fs.file-max = 51200 net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 net.core.netdev_max_backlog = 250000 net.core.somaxconn = 4096 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.ip_local_port_range = 10000 65000 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_fastopen = 3 net.ipv4.tcp_mem = 25600 51200 102400 net.ipv4.tcp_rmem = 4096 87380 67108864 net.ipv4.tcp_wmem = 4096 65536 67108864 net.ipv4.tcp_mtu_probing = 1
Ctrl + O -> Enter -> Ctrl + X (để save lại file và thoát ra)
Chạy tiếp 2 dòng lệnh bên dưới
sysctl -p nano /etc/security/limits.conf
Kéo xuống cuối trang thêm vào đoạn code bên dưới
* soft nofile 51200 * hard nofile 51200
Ctrl + O -> Enter -> Ctrl + X (để save lại file và thoát ra)
Chạy tiếp dòng lệnh bên dưới:
nano /etc/pam.d/common-session
Kéo xuống cuối trang thêm vào đoạn code bên dưới
session required pam_limits.so
Ctrl + O -> Enter -> Ctrl + X (để save lại file và thoát ra)
Chạy tiếp dòng lệnh bên dưới:
nano /etc/profile
Kéo xuống cuối trang thêm vào đoạn code bên dưới
ulimit -n 51200
Ctrl + O -> Enter -> Ctrl + X (để save lại file và thoát ra)
Chạy tiếp dòng lệnh bên dưới:
/etc/init.d/shadowsocks restart
Kiểm tra lại tốc độ từ Speedtest 😀
Ta có những con số download max đường truyền nhà mạng Việt Nam 😀
Mình đã thử lại trên 3-4 con VPS, từ Vultr, Amazon …. thì chạy bình thường cả, duy chỉ có UpCloud không rõ họ config sẵn thế nào nhưng thường vào được tí là bị đá ra, chủ yếu do con UpCloud đang dùng làm web chính rồi nên mình cũng không coi kĩ thêm, đa phần vẫn test bên Vultr, VPS họ khỏe, nhanh, ổn định và giá rẻ nữa
Sử dụng cron cho Shadowsocks
Link chi tiết bài viết thì ở trên, nôm na, thi thoảng, vì lý do a,b,c nào đó, Shadowsocks bị lỗi, tự tắt dịch vụ, thế nên tác giả đã viết thêm một cron nhỏ shadowsocks-crond.sh, để khi xảy ra tình trạng thế nó tự khởi động lại dịch vụ
wget --no-check-certificate -O /opt/shadowsocks-crond.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-crond.sh chmod 755 /opt/shadowsocks-crond.sh (crontab -l ; echo "*/1 * * * * /opt/shadowsocks-crond.sh") | crontab -
Chạy lần lượt 3 đoạn code đó là được, dòng 1 là cài shadowsocks-crond.sh vào opt, dòng 2 là chmod file đó thành 755, dòng 3 là set nó vào cron của linux
Bạn có thể kiểm tra lại bằng
ps -ef | grep -v grep | grep cron
Thấy nó có hiện ra tiến trình là được
root 840 1 0 Mar18 ? 00:00:02 /usr/sbin/cron -f root 23108 23077 0 13:18 ? 00:00:00 crond
Kiểm tra tiếp trong crontab
crontab -e
Thấy nó có dòng bên dưới trong crontab là được
*/1 * * * * /opt/shadowsocks-crond.sh
Để kiểm tra file log các tiến trình của Shadowsocks thì bạn có thể chạy dòng bên dưới
cat /var/log/shadowsocks-crond.log
Nó sẽ hiện ra các thông số kiểu
2019-03-25 15:37:01 Shadowsocks is running with pid 1182 2019-03-25 15:38:01 Shadowsocks is running with pid 1182 2019-03-25 15:39:02 Shadowsocks is running with pid 1182 .........
Đoạn sau nói dài thôi, nói chung bạn chạy 3 đoạn code ở trên cùng là được rồi 😀
Tổng kết thì cũng phải dùng 1 thời gian xem thế nào, chủ yếu vì không rõ mạng nhà FPT mấy hôm nay ra làm sao, bình thường thì chạy vù vù, mà lâu lâu lại đơ đơ, đi thông qua proxy thì lại bình thường, thế nên mới search ra mấy bài này đó chứ :]] Bài gốc ở link đó, phần nhiều mình chỉ là lược dịch 😀
Update 25/03/2019: Bổ xung thêm cron cho Shadowsocks
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!