對于WireGuard及用途,您需要設置和配置服務器防火墻規則。需要配置NAT(網絡地址轉換),以允許WireGuard客戶端訪問互聯網。在Linux中,我們使用一個術語叫做IP偽裝。它的意思是一對多的NAT(1:Many)。我們還需要一個forWARD鏈規則。本文介紹了如何在Linux中為WireGuard設置NAT和forWARD防火墻規則。
步驟1:設定NAT防火墻規則
語法如下:
# iptables -t nat -I POSTROUTING 1 -s {sub/net} -o {interface} -j MASQUERADE
確保所有出站數據包通過VPN編譯:
# iptables -t nat -I POSTROUTING 1 -s 10.8.1.0/24 -o eth0 -j MASQUERADE
其中
-t nat :為WireGuard設置nat表。
-I POSTROUTING 1 :在位置1插入規則,用于改變即將發出POSTROUTING鏈的數據包。
-s 10.8.1.0/24 :只有當源地址由WireGuard wg0接口創建時才進行NAT。
-o eth0:接口名稱,通過該接口將發送數據包。在這種情況下,eth0連接到Internet。
-j MASQUERADE: 告訴(跳轉)如果數據包根據給定的條件匹配,該怎么做。MASQUERADE目標只在nat表中有效,在POSTROUTING鏈中。該規則負責為所有WireGuard客戶端路由到互聯網的流量。
步驟2:接受wg0接口創建的所有流量
允許wg0接口上的所有流量: 上面的規則允許目的地為wg0的數據包。
# iptables -I INPUT 1 -i {interface} -j ACCEPT
# iptables -I INPUT 1 -i wg0 -j ACCEPT
步驟3:配置forWARD規則
我們必須通過設置forWARD規則允許數據包通過WireGuard服務器路由。語法為:
# iptables -I forWARD 1 -i eth0 -o wg0 -j ACCEPT
# iptables -I forWARD 1 -i wg0 -o eth0 -j ACCEPT
步驟4:打開WireGuard UDP端口#51194
最后,如下打開UDP端口號51194:
# iptables -I INPUT 1 -i eth0 -p udp –dport 51194 -j ACCEPT
步驟5:刪除WireGuard iptables規則的命令
我們可以通過刪除所有添加的iptabes規則來撤消所有命令,如下所示:
# iptables -t nat -D POSTROUTING -s 10.8.1.0/24 -o eth0 -j MASQUERADE
# iptables -D INPUT -i wg0 -j ACCEPT
# iptables -D forWARD -i eth0 -o wg0 -j ACCEPT
# iptables -D forWARD -i wg0 -o eth0 -j ACCEPT
# iptables -D INPUT -i eth0 -p udp –dport 51194 -j ACCEPT
步驟6:在Linux上啟用IP轉發
對于IPv4,我們將以下Linux內核變量設置為在wg0上接受傳入的網絡數據包,然后傳遞到另一個網絡接口(例如eth0),然后進行相應的轉發:
# sysctl -w net.ipv4.ip_forward=1
對于IPv6,請嘗試以下sysctl命令:
# sysctl -w net.ipv6.conf.all.forwarding=1
步驟7:更新Wireguard配置文件以獲得防火墻和路由支持
我們需要告訴WireGuard命令和腳本片段,這些命令和腳本片段將通過以下兩個指令執行:
# Turn on NAT when wg0 comes up #
PostUp = /path/to/add-nat-routing.sh
# Turn of NAT when wg0 goes down #
PostDown = /path/to/remove-nat-routing.sh
放在一起:WireGuard的防火墻規則
如下更新您的/etc/wireguard/wg0.conf文件:
# vim /etc/wireguard/wg0.conf
附加在[Interface]部分:
PostUp = /etc/wireguard/helper/add-nat-routing.sh
PostDown = /etc/wireguard/helper/remove-nat-routing.sh
如下圖所示:
使用mkdir命令創建一個新目錄:
# mkdir -v /etc/wireguard/helper/
包含使用cat命令顯示的add-nat-routing.sh :
# cat /etc/wireguard/helper/add-nat-routing.sh
和:
# cat /etc/wireguard/helper/remove-nat-routing.sh
確保也使用文本編輯器創建以下文件:
# vim /etc/sysctl.d/10-wireguard.conf
添加以下文本:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
重新加載所有更改并打開NAT路由:
# sysctl -p /etc/sysctl.d/10-wireguard.conf
# chmod -v +x /etc/wireguard/helper/*.sh
# systemctl restart wg-quick@wg0.service
驗證
從客戶端測試您的配置。查看是否可以使用ping命令,dig命令 / host命令和Web瀏覽器訪問Internet 。
總結
在本文中,我們向您展示了如何在Linux中為WireGuard VPN客戶端啟用IP轉發和NAT規則,以為內部客戶端提供Internet訪問。