目錄
Wireguard筆記(一) 節點安裝配置和參數說明
Wireguard筆記(二) 命令行操作
Wireguard筆記(三) lan-to-lan子網穿透和多網段並存
命令行操作
創建wg0網卡, 並設置wireguard參數
ip link add dev wg0 type wireguard
ip address add dev wg0 10.8.1.1/24
wg set wg0 listen-port 7777
wg set wg0 private-key /etc/wireguard/privatekey
wg set wg0 peer CbX0FSQ7W2LNMnozcMeTUrru6me+Q0tbbIfNlcBzPzs= allowed-ips 192.168.20.0/24,10.8.1.2/32 endpoint networkB.company.com:8888
ip link set up wg0
配置完基礎參數后, 先保存設置
touch /etc/wireguard/wg0.conf
wg-quick save wg0
然后用wg-quick就可以開啟/關閉wg0網卡了
wg-quick down wg0
wg-quick up wg0
使用這種方式, wg-quick把大部分操作細節都封裝好了, 通過簡單的命令可以創建網卡, 分配地址和修改系統路由表.
如果你需要將wireguard設置為服務, 讓它開機自動啟動wg0, 可以通過這個命令
systemctl enable wg-quick@wg0 --now
命令行操作(使用wireguard-go)
對於某些環境不適合用原生wireguard的, 可以使用wireguard-go代替, wireguard-go只是用於創建wg網卡, 其他的命令還是用wg來完成的. 以下是純命令行的操作.
wireguard-go創建網口, 配置IP
# 使用wireguard-go生成虛擬網卡
sudo ./wireguard-go wg0
# 查看創建的網卡
ip link
ip link show dev "wg0"
# 刪除創建的網卡
sudo ip link del wg0
# 給虛擬網卡添加地址
sudo ip address add dev wg0 10.253.0.4/24
sudo ip -4 address add dev "wg0" "10.253.0.4/24"
# 刪除地址
sudo ip addr del dev wg0 192.168.0.193/24
wg對wg0進行配置
# 生成服務端的公私鑰
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
# 設置監聽端口
sudo wg set wg0 listen-port 50001
# 設置節點私鑰
sudo wg set wg0 private-key /etc/wireguard/privatekey
# 查看wg狀態
sudo wg
# 或者
sudo wg show
# 查看wg配置 - 這個會輸出格式化的配置信息, 可以存為conf文件
sudo wg showconf wg0
# 從wg0.conf.bak載入配置到wg0, 會覆蓋當前配置, 且重置當前的連接
sudo wg setconf wg0 wg0.conf.bak
# 從wg0.conf.bak的配置添加到wg0
sudo wg addconf wg0 wg0.conf.additional
# 從wg0.conf.bak中讀取配置, 將變化部分應用到wg0, 不如setconf高效, 但是不會影響到當前存在的會話
sudo wg syncconf wg0 wg0.conf.additional
# 啟動虛擬網卡
sudo ip link set dev wg0 up
# 斷開網卡
sudo ip link set dev wg0 down
# 添加遠程節點 (此時遠程節點也要添加對應此節點的配置)
sudo wg set wg0 peer PasdfeghBb+kadem7JVtbjh1oRv75Ysc123451iSnM= allowed-ips 192.168.36.0/24,10.253.0.0/24 endpoint 114.104.11.76:50001 persistent-keepalive 30
# ping檢查(遠程節點IP), 遠程也ping此節點檢查
ping 10.253.0.1
# 刪除遠程節點
sudo wg set <interface> peer <key> remove
配置路由和iptables
# 增加本地路由至虛擬網卡
sudo ip -4 route add "192.168.36.0/24" dev "wg0" table "$TABLE"
sudo ip route add 192.168.36.0/24 dev wg0
# 刪除路由
sudo ip route del 192.168.36.0/24 dev wg0
# ping檢查
ping 192.168.36.109
# 增加iptables規則(如果需要從遠程訪問本地子網)
iptables -A FORWARD -i wg0 -j ACCEPT
iptables -A FORWARD -o wg0 -j ACCEPT
iptables -A -t nat POSTROUTING -o eth0 -j MASQUERADE
ip6tables -A FORWARD -i wg0 -j ACCEPT
ip6tables -A FORWARD -o wg0 -j ACCEPT
ip6tables -A -t nat POSTROUTING -o eth0 -j MASQUERADE
# 對應的刪除命令
iptables -D FORWARD -i wg0 -j ACCEPT
iptables -D FORWARD -o wg0 -j ACCEPT
iptables -D -t nat POSTROUTING -o eth0 -j MASQUERADE
ip6tables -D FORWARD -i wg0 -j ACCEPT
ip6tables -D FORWARD -o wg0 -j ACCEPT
ip6tables -D -t nat POSTROUTING -o eth0 -j MASQUERADE