Linux & Open Source

حرفه‌ای شدن در شبکه‌های لینوکس: از مبانی TCP/IP تا عیب‌یابی پیشرفته

شبکه‌های لینوکس ستون فقرات مدیریت مدرن سیستم‌ها و توسعه نرم‌افزار است. چه در حال استقرار میکروسرویس‌ها باشید، چه مدیریت سرورهای سازمانی را بر عهده داشته باشید یا در حال عیب‌یابی مشکلات اتصال، درک عمیق پروتکل‌ها و ابزارهای زیربنایی ضروری است. این راهنما اجزای حیاتی شبکه لینوکس را پوشش می‌دهد و نمونه‌های عملی و تکنیک‌های تشخیصی را برای توسعه‌دهندگان متوسط تا پیشرفته ارائه می‌کند.

درک TCP/IP و برنامه‌نویسی سوکت

ست پروتکل‌های کنترل انتقال/پروتکل اینترنت (TCP/IP) ستون فقرات ارتباطات اینترنتی است. در لینوکس، کرنل این پروتکل‌ها را به طور کارآمد مدیریت می‌کند، اما توسعه‌دهندگان باید دستشک سه‌مرحله‌ای (SYN, SYN-ACK, ACK) را برای انتقال داده‌های قابل اعتماد درک کنند. برای TCP/IP، قابلیت اطمینان کلیدی است، در حالی که UDP سرعت را برای برنامه‌های استریمینگ و بازی ارائه می‌دهد.

import socket

# Example of a simple TCP server in Python running on Linux
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 5000))
server_socket.listen(5)

print("Server listening on port 5000...")
while True:
    client_socket, address = server_socket.accept()
    print(f"Accepted connection from {address}")
    client_socket.send("Hello, Linux!".encode())
    client_socket.close()

SSH و دسترسی امن از راه دور

Shell امن (SSH) روش اصلی برای مدیریت از راه دور است. پیکربندی صحیح SSH برای امنیت حیاتی است. همیشه ورود روت و احراز هویت با رمز عبور را غیرفعال کنید و به جای آن از کلیدهای SSH استفاده کنید.

# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222

برای اتصال امن از ssh -i ~/.ssh/id_rsa user@host استفاده کنید. اطمینان حاصل کنید که کلید خصوصی شما دارای مجوزهای صحیح است: chmod 600 ~/.ssh/id_rsa.

حل DNS و عیب‌یابی

سیستم نام دامنه (DNS) نام‌های دامنه قابل خواندن توسط انسان را به آدرس‌های IP تبدیل می‌کند. لینوکس از resolv.conf برای پیکربندی استفاده می‌کند. اگر سایت‌ها بارگذاری می‌شوند اما DNS شکست می‌خورد، سرورهای نام خود را بررسی کنید.

# Check DNS resolution
dig example.com

# Verify local resolver configuration
cat /etc/resolv.conf

فایروال‌ها و امنیت: nftables و iptables

توزیع‌های مدرن لینوکس از nftables برای فیلتر کردن بسته‌ها استفاده می‌کنند. این ابزار جایگزینی انعطاف‌پذیرتر و قدرتمندتر برای iptables قدیمی ارائه می‌دهد. قوانین پایه‌ای می‌توانند ترافیک ورودی را در پورت‌های خاص مسدود کنند.

# Flush existing rules
sudo nft flush ruleset

# Create a table and chain
sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }

# Allow loopback and established connections
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input ct state established,related accept

# Allow SSH on custom port
sudo nft add rule inet filter input tcp dport 2222 accept

مسیریابی و رابط‌های شبکه

مسیریابی تعیین می‌کند که بسته‌ها چگونه در شبکه‌ها حرکت می‌کنند. مجموعه دستورات ip استاندارد مدرن برای مدیریت رابط‌ها و مسیرها است.

# View all network interfaces
ip addr show

# View the routing table
ip route show

# Add a static route
sudo ip route add 192.168.1.0/24 via 10.0.0.1

شبکه‌های خصوصی مجازی (VPN): WireGuard و OpenVPN

شبکه‌های خصوصی مجازی (VPNs) ترافیک را روی شبکه‌های عمومی رمزگذاری می‌کنند. WireGuard به دلیل سادگی و عملکرد خود، به طور فزاینده‌ای ترجیح داده می‌شود، در حالی که OpenVPN همچنان یک گزینه قدیمی اما محکم است.

# Install and start WireGuard (Debian/Ubuntu example)
sudo apt install wireguard
sudo wg quick up wg0

ابزارهای تشخیص و عیب‌یابی

وقتی شبکه‌ها شکست می‌خورند، از ابزار مناسب استفاده کنید. ping اتصال پایه را آزمایش می‌کند. traceroute مسیری را که بسته‌ها طی می‌کنند نشان می‌دهد. برای بازرسی عمیق بسته‌ها، tcpdump بی‌نظیر است.

# Capture all traffic on eth0 and filter for port 80
sudo tcpdump -i eth0 port 80 -nn

# Trace the path to a remote server
traceroute google.com

نتیجه‌گیری

شبکه‌های لینوکس انعطاف‌پذیری و قدرت بی‌نظیری ارائه می‌دهند. با تسلط بر TCP/IP، ایمن‌سازی دسترسی SSH، پیکربندی فایروال‌ها با nftables و بهره‌گیری از ابزارهای تشخیصی مانند tcpdump، می‌توانید زیرساخت شبکه‌ای محکم، امن و با عملکرد بالا بسازید. یادگیری مداوم و درک این اجزای اصلی برای هر توسعه‌دهنده یا مدیر سیستمی که در اکوسیستم لینوکس کار می‌کند، ضروری است.

Share: