|
1:網(wǎng)關(guān)開啟IPv4內(nèi)核轉(zhuǎn)發(fā),增加防火墻規(guī)則,將zt網(wǎng)段來的流量轉(zhuǎn)成本地網(wǎng)卡IP發(fā)出去的 2:增加路由規(guī)則,將一個(gè)CIRD地址指向一個(gè)網(wǎng)關(guān)地址,網(wǎng)關(guān)地址是zt網(wǎng)段的地址
1 2 3
| iptables -t nat -A POSTROUTING -o eth1 -s 10.242.0.0/16 -j SNAT --to-source 192.168.1.220 iptables -t filter -A FORWARD -i zt+ -s 10.242.0.0/16 -d 0.0.0.0/0 -j ACCEPT iptables -t filter -A FORWARD -i eth1 -s 0.0.0.0/0 -d 10.242.0.0/16 -j ACCEPT
|
刪除:
1 2 3
| iptables -t nat -D POSTROUTING -o eth1 -s 10.242.0.0/16 -j SNAT --to-source 192.168.1.220 iptables -t filter -D FORWARD -i zt+ -s 10.242.0.0/16 -d 0.0.0.0/0 -j ACCEPT iptables -t filter -D FORWARD -i eth1 -s 0.0.0.0/0 -d 10.242.0.0/16 -j ACCEPT
|
3:在終端機(jī)器上設(shè)置allowDefault,以便讓終端機(jī)器的流量能走到zt的網(wǎng)關(guān)
最后還是未成功,感覺是流量沒走到zt網(wǎng)卡,還是走了原來的”以太網(wǎng)“接口,所以還是可以訪問外網(wǎng),還是訪問不到內(nèi)網(wǎng) 但是手機(jī)上的情況不一樣,手機(jī)上啥也訪問不到,感覺就像是流量走到了zt網(wǎng)絡(luò)的網(wǎng)關(guān)地址,但是網(wǎng)關(guān)沒有轉(zhuǎn)發(fā)流量
另一臺網(wǎng)絡(luò)架構(gòu)較為簡單的windows虛擬機(jī)也重現(xiàn)了這個(gè)情況,也是zt網(wǎng)絡(luò)ok,沒有互聯(lián)網(wǎng)
后續(xù)看到一篇教程:https://www./getting-started-software-defined-networking-creating-vpn-zerotier-one
于是又嘗試了一次,這次在A網(wǎng)絡(luò)(192.168.100.0/24)下新建了一臺虛擬機(jī)(192.168.100.230)作為zt網(wǎng)絡(luò)網(wǎng)關(guān) 在B網(wǎng)絡(luò)(192.168.1.0/24)的一臺虛擬機(jī)作為客戶端
將兩個(gè)機(jī)器都安裝好zerotier和join到同一網(wǎng)絡(luò)后
先在A機(jī)器配置網(wǎng)關(guān)
- 打開IP轉(zhuǎn)發(fā)
vim /etc/sysctl.conf net.ipv4.ip_forward = 1 sysctl -p
- 查看本地網(wǎng)絡(luò)和zt網(wǎng)絡(luò)網(wǎng)卡名稱
ip link show,我的是 eth0 和 zt0
- 設(shè)置防火墻規(guī)則
1 2 3 4 5 6
| # 啟用網(wǎng)絡(luò)地址轉(zhuǎn)換和IP偽裝: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 允許流量轉(zhuǎn)發(fā)和跟蹤活動連接: iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # 允許從zt0到eth0流量轉(zhuǎn)發(fā)。 反向規(guī)則不是必需的,因?yàn)樵诒窘坛讨?,假設(shè)客戶端始終通過服務(wù)器調(diào)用,而不是其他方式: iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
|
- 保存防火墻規(guī)則
apt-get install iptables-persistent 詢問你是否保存當(dāng)前規(guī)則的時(shí)候,ipv4和ipv6都選是
在my.zerotier.com設(shè)置全局路由
在 Managed Routes 中添加一條 0.0.0.0/0 to B機(jī)器的zt網(wǎng)絡(luò)IP 的路由規(guī)則
在B機(jī)器配置客戶端 如果您的客戶端正在運(yùn)行Linux,則需要對其/etc/sysctl.conf文件進(jìn)行手動更改。 此配置更改需要更改內(nèi)核對您的客戶端流量的可接受返回路徑的看法。 由于配置了ZeroTier VPN,因此從您的服務(wù)器返回到您的客戶端的流量有時(shí)可能來自與它發(fā)送到的網(wǎng)絡(luò)地址不同的網(wǎng)絡(luò)地址。 默認(rèn)情況下,Linux內(nèi)核將這些視為無效并丟棄它們,因此有必要覆蓋該行為。
vim /etc/sysctl.conf net.ipv4.conf.all.rp_filter = 2 sysctl -p
- 啟用zt網(wǎng)絡(luò)作為默認(rèn)路由
zerotier-cli set NetworkID allowDefault=1
按照上面的步驟配置完成后,在B機(jī)器上就可以直接curl訪問到A網(wǎng)絡(luò)局域網(wǎng)內(nèi)的機(jī)器了,例如 curl 192.168.100.1 就可以訪問到A網(wǎng)絡(luò)的路由器
后來發(fā)現(xiàn)不用設(shè)置全局路由直接在路由規(guī)則處,添加 192.168.100.0/24 to A網(wǎng)關(guān)IP (注意一定要正確的CIDR IP格式) 如果添加成功了,會在1-3秒內(nèi)在所有客戶端執(zhí)行 ip route 看到剛才添加的規(guī)則
客戶端也不用設(shè)置DefaultRoute=1
就直接可以在B機(jī)器訪問到A網(wǎng)絡(luò)的路由器地址了
|