無法將 WireGuard 配置為使用輔助 IP 地址而不是伺服器的主 IP 地址
設置
我的伺服器的主要乙太網介面是
enp8s0
,有一個公共 IP 地址( -伺服器116.202.221.254
的主 IP 地址),下面是它的設置方式。# ip addr show enp8s0 2: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether a8:a1:59:06:e6:6c brd ff:ff:ff:ff:ff:ff inet 116.202.221.254/26 brd 116.202.221.255 scope global enp8s0 valid_lft forever preferred_lft forever inet6 2a01:4f8:241:55c1::2/64 scope global valid_lft forever preferred_lft forever inet6 fe80::aaa1:59ff:fe06:e66c/64 scope link valid_lft forever preferred_lft forever
路線:
# ip route show default via 116.202.221.193 dev enp8s0 onlink 10.103.213.2 dev wg0 scope link 116.202.221.192/26 via 116.202.221.193 dev enp8s0 116.202.221.192/26 dev enp8s0 proto kernel scope link src 116.202.221.254
文件內容:
/etc/network/interfaces
auto lo iface lo inet loopback iface lo inet6 loopback auto enp8s0 iface enp8s0 inet static address 116.202.221.254 netmask 255.255.255.192 gateway 116.202.221.193 # route 116.202.221.192/26 via 116.202.221.193 up route add -net 116.202.221.192 netmask 255.255.255.192 gw 116.202.221.193 dev enp8s0 iface enp8s0 inet6 static address 2a01:4f8:241:55c1::2 netmask 64 gateway fe80::1
然後我為我的伺服器請求了一個額外的公共 IP 地址 (
116.202.221.202
),這就是我的配置方式。將附加 IP 地址添加到主介面/設備
enp8s0
:# ip address add 116.202.221.202/32 dev enp8s0
enp8s0
在 in的配置下添加這些行/etc/network/interfaces
:up ip address add 116.202.221.202/32 dev enp8s0 down ip address del 116.202.221.202/32 dev enp8s0
立即應用更改:
# ip address flush enp8s0 && systemctl restart networking
問題
從伺服器傳出的所有網際網路流量似乎都通過主 IP 地址傳出
116.202.221.254
。例如,如果我通過伺服器瀏覽網際網路,我的 IP 地址將被視為116.202.221.254
.因此,即使我將我的工具配置為使用附加/輔助 IP 地址
116.202.221.202
,它們似乎是從116.202.221.254
.如何配置我的伺服器,以便單獨處理兩個 IP 地址(不像現在那樣連結)並具有單獨的路由?
語境
我在伺服器上有一個使用主 IP 地址的網站
116.202.221.254
。我正在嘗試在伺服器上設置WireGuard VPN(以保護我的身份並克服審查)以使用輔助 IP 地址
116.202.221.202
,但一旦配置和設置後,我仍然以116.202.221.254
.如何配置我的伺服器以便使用我的 VPN
116.202.221.202
?我的 WireGuard VPN 配置
(有關更多上下文。我遵循了本教程:https ://www.linode.com/docs/networking/vpn/set-up-wireguard-vpn-on-debian/ )
WireGuard 伺服器配置:
/etc/wireguard/wg0.conf
[Interface] PrivateKey = SERVER_PRIVATE_KEY Address = 10.103.213.1/32 ListenPort = 51208 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp8s0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp8s0 -j MASQUERADE SaveConfig = false # Macbook Pro [Peer] PublicKey = CLIENT_PUBLIC_KEY AllowedIPs = 10.103.213.2/32
WireGuard 客戶端配置:
/etc/wireguard/wg0.conf
[Interface] PrivateKey = CLIENT_PRIVATE_KEY Address = 10.103.213.2/32 ListenPort = 51208 DNS = 8.8.8.8, 8.8.4.4, 1.1.1.1 [Peer] PublicKey = SERVER_PUBLIC_KEY Endpoint = 116.202.221.202:51208 AllowedIPs = 0.0.0.0/0
我錯過了什麼?我該如何解決?
我盡我所能理解每一步,但仍然很多,我知道我缺少與
iptables
路線或規則相關的東西。但是鑑於我目前的知識,網際網路上的相關資訊很難解析,儘管為此工作了 2 天,我還是無法找到解決方案。*任何幫助表示讚賞。請盡量詳細。*謝謝!
除非應用程序本身向系統指定其傳出流量應通過哪個 IP 地址,否則伺服器將使用預設(主)IP 地址——至少這是我的理解。
而且由於 WireGuard 中似乎沒有設置來告訴它使用特定的公共 IP 地址,我們需要依賴
iptables
orip route
。IRC 頻道上的一個
#wireguard
好心人幫助我解決了伺服器配置中的PostUp
和PostDown
值,wg0.conf
這將完成我所需要的。PostUp = iptables -t nat -A POSTROUTING -m mark --mark 0xCA6C/0xFFFFFFFF -j SNAT --to-source 116.202.221.202; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202 Post Down = iptables -t nat -D POSTROUTING -m mark --mark 0xCA6C/0xFFFFFFFF -j SNAT --to-source 116.202.221.202; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202
這也有效,但不是理想的,我被告知(
--mark
上面的命令能夠針對特定於 WG 的流量,而這些是特定於源 IP 的——至少我是這麼理解的):PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202; iptables -A FORWARD -o wg0 -j ACCEPT PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202; iptables -D FORWARD -o wg0 -j ACCEPT