راهنمای کامل و عملی برای راه‌اندازی وب پروکسی روی اوبونتو 24.04
با این راهنما به‌راحتی وب پروکسی خود را بر روی سرور اوبونتو 24.04 نصب و پیکربندی کنید.

راهنمای کامل و عملی برای راه‌اندازی وب پروکسی روی اوبونتو 24.04

در این مقاله، نحوه نصب و پیکربندی یک وب پروکسی بر روی سرور اوبونتو 24.04 با استفاده از Squid، Dante و Nginx به‌صورت گام به گام توضیح داده شده است. با خواندن این مقاله، خواهید آموخت که چگونه وب پروکسی خود را ایمن و بهینه سازید.
0 اشتراک گذاری
0
0
0
0

چطور یک وب پروکسی امن و کارا روی Ubuntu 24.04 راه‌اندازی کنیم؟

در این راهنمای عملیاتی، به‌صورت گام‌به‌گام نصب، پیکربندی و ایمن‌سازی وب پروکسی روی سرور Ubuntu 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 authenticated

ACL و محدودسازی دسترسی

نمونه‌های متداول:

  • محدود کردن بر اساس 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 پوشش داده شد.

سؤالات متداول

شاید دوست داشته باشید