new post
This commit is contained in:
		
							parent
							
								
									ede3361fff
								
							
						
					
					
						commit
						715d04efc1
					
				
							
								
								
									
										94
									
								
								content/post/77af4e22a9e44f7f8c2803edc33ab33b/index.zh-cn.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								content/post/77af4e22a9e44f7f8c2803edc33ab33b/index.zh-cn.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,94 @@ | ||||
| +++ | ||||
| author = "FlintyLemming" | ||||
| title = "Netbird 子网路由设置 (处理不便安装的设备)" | ||||
| slug = "77af4e22a9e44f7f8c2803edc33ab33b" | ||||
| date = "2024-03-11" | ||||
| description = "" | ||||
| categories = ["HomeLab", "Network"] | ||||
| tags = ["异地组网", "Tailscale", "Netbird"] | ||||
| image = "https://img.mitsea.com/blog/posts/2024/03/martin-katler-eVk59Ks4k2U-unsplash.jpg?x-oss-process=style/ImageCompress" | ||||
| +++ | ||||
| 
 | ||||
| 上一期简单介绍了 Netbird 的子网路由的配置,相比与 Tailscale 真的是简单很多。但是还遗留一个问题,就是如果设备不方便或者不想安装 Netbird 应该怎么办。其实不影响的,两个内网只要分别在一台设备上安装 Netbird,这两个内网的所有设备其实都可以互访。比如在下图中,让设备 A1 直接访问 B1(红色箭头)。当然,也可以直接访问 Netbird 内网中的其他设备(橙色箭头)。 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 这样在内网其他设备上即便不安装任何组网工具,也可以无缝访问多个内网 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| ## 准备工作 | ||||
| 
 | ||||
| 在两个内网中分别选取一个设备安装 Netbird 并配置为路由,让两个设备分别可以访问对方内网所有设备。在新版中 Netbird 可以选取 Windows 设备作为路由,不过我感觉 Windows 的网络栈比较灵车,所以我还是建议使用一台 Linux 设备。 | ||||
| 
 | ||||
| 这次配置以 Ubuntu 系统为例,配置区域 A 的内网设备可以访问区域 B 的内网设备,反向同理。 | ||||
| 
 | ||||
| ## 配置 Netbird 路由 | ||||
| 
 | ||||
| 配置方法在上一集已经说过了,这里简单提一下,最近 Netbird UI 改了一次。 | ||||
| 
 | ||||
| 1 处填写目标区域内网 IP 地址段 | ||||
| 
 | ||||
| 2 处填写目标区域内网安装 Netbird 的设备 | ||||
| 
 | ||||
| 3 处填写来源区域内网安装 Netbird 的设备所在的 Group | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 这样的话,以开头的图为例,设备 A2 就可以访问区域 B 的所有内网设备了 | ||||
| 
 | ||||
| ## 配置静态路由 | ||||
| 
 | ||||
| 设置区域 A 的路由器,添加静态路由。目的是让这个内网设备访问区域 B 的内网网段时,不会被路由器丢弃,而是发送到 Netbird 设备上。具体配置如下: | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 目的地址和子网掩码:填写区域 B 的内网网段,可以再加一条,填写 Netbird 的内网网段 | ||||
| 
 | ||||
| 下一跳:填写当前内网里安装 Netbird 设备的 IP 地址 | ||||
| 
 | ||||
| 出接口:LAN | ||||
| 
 | ||||
| ## 配置 Netbird 设备 | ||||
| 
 | ||||
| 浏览器添加静态路由后,访问区域 B 的内网请求就被转发到了 Netbird 设备上。但是这个设备还要进行一些配置才能正确通过 Netbird 虚拟局域网转发流量。具体配置如下: | ||||
| 
 | ||||
| 1. 确认 Netbird 创建的 TUN 所使用的 Interface 名称(一般是 wt0)以及默认联网网卡的 Interface 名称。你可以使用`ip addr show` 来确认 | ||||
|      | ||||
|      | ||||
|      | ||||
|     我这边就是 wt0 和 eth0,这两个 Interface 名称要记住,后面配置 iptables 要用。 | ||||
|      | ||||
| 2. 开启 ipv4 转发 | ||||
|      | ||||
|     在 `/etc/sysctl.conf` 文件中添加或修改以下行: | ||||
|      | ||||
|     ``` | ||||
|     net.ipv4.ip_forward = 1 | ||||
|     ``` | ||||
|      | ||||
|     然后运行 `sudo sysctl -p` 来应用更改 | ||||
|      | ||||
| 3. 配置 NAT 规则 | ||||
|      | ||||
|     ```bash | ||||
|     sudo iptables -I FORWARD -i eth0 -j ACCEPT | ||||
|     sudo iptables -I FORWARD -o eth0 -j ACCEPT | ||||
|     sudo iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE | ||||
|     sudo iptables -I FORWARD -i wt0 -j ACCEPT | ||||
|     sudo iptables -I FORWARD -o wt0 -j ACCEPT | ||||
|     sudo iptables -t nat -I POSTROUTING -o wt0 -j MASQUERADE | ||||
|     ``` | ||||
|      | ||||
|     这个规则设置主要干了两件事: | ||||
|      | ||||
|     1. 使用 MASQUERADE 隐藏了从 eth0 出去的流量,让所有经过设备A的包看起来都是由本机发出的(wt0 同理) | ||||
|     2. 允许 eth0 和 wt0 的流量转发 | ||||
|      | ||||
|     若对安全性有要求,可以细化规则 | ||||
|      | ||||
| 
 | ||||
| 至此设置完毕 | ||||
| 
 | ||||
| > Photo by [Martin Katler](https://unsplash.com/@martinkatler?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash) on [Unsplash](https://unsplash.com/photos/a-close-up-of-a-blue-and-purple-object-eVk59Ks4k2U?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash) | ||||
|    | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user