iT邦幫忙

0

[Solved] 兩台主機同時對外廣播 IPv6/44 路由,透過打wireguard tunnel來共同處理內部路由

  • 分享至 

  • xImage

各位大大早安
小弟我最近剛申請到 ASN 並且在做一些練習

目前在 JP 以及 EU 都各有一台 VPS
並且對外廣播同一段 IPv6 /44 的路由 (ex. 2a0f:607:1500::/44

接著利用 wireguard 將兩台 VPS tunnel 起來
在 wg 中分別給
JP 2a0f:607:1500::3/48
EU 2a0f:607:1500::1/48
兩台透過 wg 互 ping 是正常的

那由於台灣都走 JP 那邊過去的關係
我目前只能 ping 到 ::3
但不知道為什麼卻無法透過 JP 這台機器的 tunnel ping 到位於 EU 的 ::1

我現在卡住的點是 wg 給的 ip 如果透過外網可以直接 ping 的到
為什麼位於 wg 另一頭的 ip 卻 ping 不到了呢?
是不是我除了 wg 以外還需要設定什麼?
還煩請大家不吝解答了 <(_ _)>


2021/08/14 12:56 更新

以下是 wg config

  • JP
[Interface]
Address = 2a0f:607:1500::3/48
ListenPort = 51821
PrivateKey = <privkey>

[Peer]
PublicKey = <pubkey>
AllowedIPs = 2a0f:607:1500::/48
Endpoint = 193.148.249.81:51821
  • EU
[Interface]
Address = 2a0f:607:1500::1/48
ListenPort = 51821
PrivateKey = <privkey>

[Peer]
PublicKey = <pubkey>
AllowedIPs = 2a0f:607:1500::/48
Endpoint = 108.61.163.115:51821

目前抓到的 tcpdump 資料是 ping 過去的流量的確有到達 ::1
但回覆至 ::3 時會卡在 wg if 裡走不到 對外的那張 if

我現在有個想法是
如果在 ::1 時就將 ping reply 的封包直接走對外的那張 if,而不走回 ::3
不知道這樣的想法是否正確?

但目前卡在不知道如何將 wg if 內的流量強迫往另一張 if 轉...


2021/08/14 12:56 更新

因為原本我在 wg 的 AllowedIPs 中給了 ::/0
這樣會將整台機器的流量都透過 wg 傳出去導致 BGP 爛掉
所以後來將兩台的設定都刪除 AllowedIPs::/0

但是這樣就出現一個問題
假設我今天從家裡 ping 過去 EU 那台 會先走到 JP
我從 JP 的 tcpdump 抓 wg if 是可以正常看到 <中華電信IP> --> 2a0f:607:1500::1 從 ens3 forward 到 wg0
但因為 EU 那邊的 AllowedIPs 只剩 2a0f:607:1500::/48
導致除了 range 內的來源以外都過不到 EU 那邊 (tcpdump 在任何網卡都抓不到 JP forward 過來資料,因為 source 不在 wg subnet 內...)

所以接著這步驟才開始使用 NAT 來轉發流量 就成功達成我預期的效果!
感謝下面兩位大神的協助!!!

obarisk iT邦研究生 2 級 ‧ 2021-08-14 06:25:24 檢舉
你指的是

JP 這個 wg 的 用戶 (client) 要透過 JP 這個 wg 的通道走到 EU ?

那還需要在 JP 的 wg 加上一個 PostUp 把 nat 的 iptables 或是 nftables 加上去
Chess iT邦新手 4 級 ‧ 2021-08-14 15:27:50 檢舉
@obarisk
大大您好 謝謝您的回覆 NAT 成功可以work了
也達成我預期的效果XD 感謝您~~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
Ray
iT邦大神 1 級 ‧ 2021-08-14 00:35:25

請貼你兩端的 wg0.conf 出來看看...(Key 可以遮掉)

看更多先前的回應...收起先前的回應...
Chess iT邦新手 4 級 ‧ 2021-08-14 01:04:12 檢舉

大大您好
相關 config 以及我後來觀測到的一些事已更新在文章下方~還請過目

Ray iT邦大神 1 級 ‧ 2021-08-14 08:21:49 檢舉

VPS 上面的 ip forwarding 有開嗎?

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.eth0.proxy_ndp=1
net.ipv6.conf.all.accept_ra=2

你可能還需要 PostUp 做 MASQUERADE:

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE;  ip6tables -D FORWARD -i wg0 -j ACCEPT

(上面的 ens3 要改成你實際的 interface name)

Chess iT邦新手 4 級 ‧ 2021-08-14 15:26:03 檢舉

大大您好
今天首先嘗試了 NAT 但似乎沒有作用
forwarding 我都有開

接著還發現 wg AllowedIPs = ::/0 會造成的問題
所以我有更動一下設定
一樣將詳述更新在文章底部

麻煩大大了<(_ _)>

Chess iT邦新手 4 級 ‧ 2021-08-14 15:43:32 檢舉

抱歉大大 看來是我設定錯了
NAT可以生效XD
感謝您!!!

我要發表回答

立即登入回答