- چطور یک وب پروکسی امن و کارا روی Ubuntu 24.04 راهاندازی کنیم؟
- چرا از وب پروکسی استفاده کنیم؟
- انواع پروکسی و کاربردها
- نیازمندیها و آمادهسازی سرور
- نصب و پیکربندی Squid (HTTP/HTTPS forward proxy)
- لاگینگ و مدیریت لاگ
- راهاندازی SOCKS5 با Dante
- تنظیم Nginx بهعنوان reverse proxy و TLS termination
- فایروال، امنیت و مانیتورینگ
- نکات عملی برای کاربریهای خاص (ترید، گیم، AI، رندرینگ)
- عملیات عملیاتی و نگهداری
- چرا از زیرساخت ابری با لوکیشنهای متعدد استفاده کنیم؟
- توصیههای امنیتی نهایی
- Заключение
- Часто задаваемые вопросы
چطور یک وب پروکسی امن و کارا روی Ubuntu 24.04 راهاندازی کنیم؟
در این راهنمای عملیاتی، بهصورت گامبهگام نصب، پیکربندی و ایمنسازی وب پروکسی روی سرور Убунту 24.04 توضیح داده شده است. مثالها مبتنی بر Squid (HTTP/HTTPS forward proxy)، Dante (SOCKS5) و Nginx (reverse proxy و TLS termination) هستند و شامل پیکربندی فایروال، احراز هویت، لاگینگ و بهینهسازی عملکرد میشوند.
چرا از وب پروکسی استفاده کنیم؟
وب پروکسی مزایایی مثل کنترل دسترسی, کش کردن محتوا برای کاهش پهنای باند، پنهانسازی IP سرویسگیرنده، و توزیع ترافیک را فراهم میکند. برای کاربردهای حساس مانند ترید یا گیم، قرار دادن پروکسی نزدیک به مقصد میتواند تاخیر (پینگ) را کاهش دهد.
انواع پروکسی و کاربردها
معمولترین انواع پروکسی شامل موارد زیر هستند:
- Forward Proxy (مثلاً Squid): برای کلاینتها تا به اینترنت دسترسی یابند؛ مناسب کنترل، کش و مانیتورینگ.
- Reverse Proxy (مثلاً Nginx): جلوی سرورهای وب قرار میگیرد تا TLS، بارگذاری متوازن و کش انجام دهد.
- SOCKS5 (Dante یا SSH -D): لایه پایینتر، مناسب برنامههای متنوع و ترافیک TCP/UDP.
- Transparent Proxy: برای intercept ترافیک شبکه (نیاز به تغییرات NAT/fwd).
نیازمندیها و آمادهسازی سرور
ابتدا سیستم را بهروز کنید و بستههای پایه را نصب کنید. بستهها براساس نیاز انتخاب شوند؛ برای SOCKS5 از dante-server و برای TLS از certbot استفاده میکنیم.
sudo apt update && sudo apt upgrade -y
sudo apt install squid apache2-utils dante-server nginx certbot nftables fail2ban -yنصب و پیکربندی Squid (HTTP/HTTPS forward proxy)
در این بخش پیکربندی پایه، فعالسازی HTTPS (CONNECT)، احراز هویت، ACL و caching توضیح داده میشود.
پیکربندی پایه
برای نصب Squid:
sudo apt install squid -yقبل از تغییر فایل کانفیگ، نسخه پشتیبان بگیرید:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bakنمونه فایل پیکربندی پایه (/etc/squid/squid.conf):
http_port 3128
# limit logging size
access_log /var/log/squid/access.log squid
# ACLs
acl localhost src 127.0.0.1/32
acl localnet src 10.0.0.0/8 # internal network
acl allowed_ips src 203.0.113.0/24 # example allowed client range
# permissions
http_access allow localhost
http_access allow allowed_ips
http_access deny all
# caching
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
cache_dir ufs /var/spool/squid 10000 16 256
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern . 0 20% 4320
# DNS
dns_v4_first onبعد از ذخیره کانفیگ:
sudo systemctl restart squid
sudo systemctl enable squidفعالسازی HTTPS (CONNECT) و TLS
برای تونلسازی HTTPS، Squid از CONNECT استفاده میکند. مثال ACL برای اجازه به CONNECT:
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
http_access allow SSL_portsاحراز هویت (Basic/LDAP)
برای Basic auth با استفاده از htpasswd:
sudo apt install apache2-utils -y
sudo htpasswd -c /etc/squid/passwords usernameدر squid.conf اضافه کنید:
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticatedACL و محدودسازی دسترسی
نمونههای متداول:
- محدود کردن بر اساس IP: acl allowed_ips src x.x.x.x/xx
- محدود کردن دامنهها: acl blocked_sites dstdomain .example.com
- محدود کردن زمان: acl office_hours time M-F 08:00-18:00
مثال رد کردن سایتها:
acl blocked_sites dstdomain .youtube.com .facebook.com
http_access deny blocked_sitesکشینگ و بهینهسازی عملکرد
تنظیمات مهم برای کش:
- cache_mem: حافظه رم برای کش اجسام کوچک.
- cache_dir: محل دیسک برای کش محتوای بزرگ.
- maximum_object_size: حداکثر سایز آبجکت قابل ذخیره.
- refresh_pattern: کنترل اعتبار کش.
مثال برای ترافیک بالاتر:
cache_mem 512 MB
maximum_object_size 20 MB
cache_dir ufs /var/spool/squid 50000 16 256برای ترافیک بالا از دیسکهای NVMe و IOPS بالا یا LVM استفاده کنید.
لاگینگ و مدیریت لاگ
لاگهای Squid در /var/log/squid/ قرار دارند. نمونه تنظیم logrotate:
sudo nano /etc/logrotate.d/squid
/var/log/squid/*.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
create 640 proxy proxy
sharedscripts
postrotate
systemctl reload squid >/dev/null 2>&1 || true
endscript
}برای تحلیل لاگ از ابزارهایی مثل ELK یا Grafana+Prometheus استفاده کنید.
راهاندازی SOCKS5 با Dante
برای برنامههایی که SOCKS لازم دارند، Dante گزینه مناسبی است.
نصب و راهاندازی:
sudo apt install dante-server -yنمونه /etc/danted.conf:
logoutput: syslog
internal: 0.0.0.0 port = 1080
external: eth0
method: username none
user.privileged: proxy
user.notprivileged: nobody
client pass {
from: 203.0.113.0/24 to: 0.0.0.0/0
log: connect disconnect error
}
pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
protocol: tcp udp
log: connect disconnect error
}sudo systemctl restart danted
sudo systemctl enable dantedنمونه تست با curl:
curl --socks5-hostname 127.0.0.1:1080 https://checkip.amazonaws.comتنظیم Nginx بهعنوان reverse proxy و TLS termination
Nginx میتواند برای میزبانی صفحه مدیریت پروکسی یا TLS termination برای برنامههای پشت پروکسی استفاده شود.
نمونه server block:
server {
listen 80;
server_name proxy.example.com;
location / {
proxy_pass http://127.0.0.1:3128;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}برای دریافت گواهی TLS با Certbot:
sudo certbot --nginx -d proxy.example.comفایروال، امنیت و مانیتورینگ
برای امنیت از nftables یا ufw، fail2ban، و لاگینگ و مانیتورینگ استفاده کنید.
نمونه قوانین پایه nftables:
sudo nft add table inet filter
sudo nft 'add chain inet filter input { type filter hook input priority 0 ; policy drop; }'
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input tcp dport 22 accept
sudo nft add rule inet filter input tcp dport 3128 accept # squid
sudo nft add rule inet filter input tcp dport 1080 accept # dante
sudo nft add rule inet filter input icmp type echo-request acceptمانیتورینگ عملکرد و تشخیص حملات را با ابزارهای مناسب پیادهسازی کنید.
نکات عملی برای کاربریهای خاص (ترید، گیم، AI، رندرینگ)
برای تریدرها: سرور با لوکیشن نزدیک به سرور بروکر انتخاب کنید؛ از IP خروجی ثابت برای whitelisting استفاده کنید و در صورت حیاتی بودن اتصال، Anti-DDoS فعال کنید.
برای گیمرها: VPS با شبکه سریع و لوکیشن نزدیک به سرور بازی انتخاب کنید و BBR را فعال کنید:
sudo sysctl -w net.core.default_qdisc=fq
sudo sysctl -w net.ipv4.tcp_congestion_control=bbrبرای پابرجا شدن تنظیمات، مقادیر را به /etc/sysctl.conf Добавлять.
برای هوش مصنوعی و رندرینگ: از cache بزرگتر و دیسک NVMe برای دانلود دیتاستها استفاده کنید و برای inference توزیعشده از GPU cloud بهره ببرید.
عملیات عملیاتی و نگهداری
نکات کلیدی نگهداری:
- بروزرسانی منظم بستهها: sudo apt update && sudo apt upgrade -y
- پچ امنیتی، بررسی لاگها و بکاپ کانفیگها.
- استفاده از ابزارهای اتوماسیون مثل Ansible برای کانفیگ و بازگردانی سریع.
- تست دورهای سرویس با curl/wget و تنظیم مانیتورینگ Uptime.
چرا از زیرساخت ابری با لوکیشنهای متعدد استفاده کنیم؟
استقرار پروکسی نزدیک به کاربران یا سرورهای مقصد باعث کاهش پینگ و کنترل جغرافیایی بهتر میشود. استفاده از CDN، BGP و Anti-DDoS میتواند عملکرد و امنیت را بهبود دهد.
توصیههای امنیتی نهایی
نکات مهم امنیتی:
- هرگز پروکسی عمومی بدون احراز هویت را باز نگذارید.
- محدودسازی بر اساس IP و زمان را اعمال کنید.
- مانیتورینگ و هشداردهی برای تشخیص سوءاستفاده ضروری است.
- برای کاربردهای حساس از Anti-DDoS و شبکه خصوصی استفاده کنید.
Заключение
در این راهنما نصب و پیکربندی Squid برای HTTP/HTTPS، راهاندازی Dante برای SOCKS5 و تنظیم Nginx برای reverse proxy و TLS بررسی شد. همچنین موضوعات فایروال، لاگ و نکات عملی برای ترید، گیم و AI پوشش داده شد.









