إعداد WireGuard VPN داخل LXC مع NAT وحماية متقدمة
في هذا الدليل، سنشرح إعداد WireGuard VPN على حاوية LXC في بيئة Proxmox VE متصلة بشبكتين:
- شبكة LAN:
192.168.100.0/24 - شبكة عامة:
203.0.113.105/26(آيبي مفترض)
1. إعداد شبكة LXC
net0: name=eth0,bridge=vmbr1,ip=192.168.100.199/24,type=veth
net1: name=eth1,bridge=vmbr0,ip=203.0.113.105/26,gw=203.0.113.65,type=veth
2. إعداد الشبكة داخل الكونتينر
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.100.199/24
gateway 192.168.100.1
post-up ip addr add 203.0.113.105/26 dev eth0
post-down ip addr del 203.0.113.105/26 dev eth0
auto eth1
iface eth1 inet static
address 203.0.113.105/26
gateway 203.0.113.65
3. تكوين WireGuard
[Interface]
PrivateKey = <private-key>
Address = 10.11.11.1/24
ListenPort = 51820
MTU = 1420
[Peer]
PublicKey = <peer-public-key>
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21
4. تفعيل NAT والتوجيه
iptables -t nat -A PREROUTING -d 203.0.113.105 -p udp --dport 51820 -j DNAT --to-destination 192.168.100.199:51820
iptables -t nat -A POSTROUTING -s 192.168.100.199 -o vmbr0 -j MASQUERADE
apt install iptables-persistent -y
netfilter-persistent save
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
5. حماية الكونتينر
لغلق كل المنافذ ما عدا WireGuard:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p udp --dport 51820 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
لحماية من الهجمات والاستغلالات:
iptables -A INPUT -p udp --dport 51820 -m recent --update --seconds 60 --hitcount 10 --name WGABUSE -j DROP
iptables -A INPUT -p udp --dport 51820 -m recent --set --name WGABUSE -j ACCEPT
iptables -A INPUT -p udp --dport 51820 -m limit --limit 15/minute --limit-burst 30 -j ACCEPT
netfilter-persistent save
6. إعداد الأجهزة الداخلية
ip route add 10.11.11.0/24 via 192.168.100.199 dev eth1
echo "net.ipv4.conf.eth1.send_redirects=0" >> /etc/sysctl.conf
sysctl -p
7. الختبار
ping 203.0.113.105
nc -zv 203.0.113.105 51820
ping 10.11.11.1
8. ربط شبكتين داخليتين
من خلال Peer جديد:
[Peer]
PublicKey = <branch-B-key>
AllowedIPs = 192.168.200.0/24
Endpoint = branch-B.example.com:51820
PersistentKeepalive = 21
ومع توجيه في كل فرع:
ip route add 192.168.200.0/24 via 10.11.11.X dev wg0
الخلاصة
بنجاح هذا الإعداد، يمكنك تشغيل WireGuard في كونتينر يدعم:
- تواصل LAN + Internet
- العمل كجسر VPN مع نظام NAT
- غلق جميع المنافذ ما عدا 51820/UDP
- ربط فروع وشبكات متعددة بأمان