请求配置YAML文件实现10.20.30.0/24网络通过192.168.1.1访问互联网
请求配置YAML文件实现10.20.30.0/24网络通过192.168.1.1访问互联网
嘿,我完全懂你折腾USB网卡那两个晚上的崩溃感——别慌,咱们一步步来搞定这个集群上网的配置。核心是把那个带USB网卡的树莓派做成NAT网关,让10.20.30.0/24网段的流量通过它转发到192.168.1.0/24的主网络,最终连上网。
首先,先确认几个前提:
- 那个带USB网卡的Pi,在集群网络(10.20.30.0/24)里的IP得固定,假设是
10.20.30.1(你可以根据实际调整) - 先通过
ip link show命令查出它的两个网卡名称:比如USB网卡可能是enxabcdef123456,集群内置网卡是eth0
接下来是关键的netplan YAML配置(树莓派现在默认用netplan管理网络):
- 创建/编辑netplan配置文件:
sudo nano /etc/netplan/99-cluster-gateway.yaml
- 把下面的内容粘贴进去,记得替换
<usb-interface>和<cluster-interface>为你实际的网卡名,调整IP地址到你的实际值:
network: version: 2 ethernets: <usb-interface>: # 替换为你的USB以太网适配器名称,比如enxabcdef123456 addresses: [192.168.1.1/24] gateway4: 192.168.1.254 # 主网络的路由器IP nameservers: addresses: [192.168.1.254, 8.8.8.8] <cluster-interface>: # 替换为连接集群的内置网卡名称,比如eth0 addresses: [10.20.30.1/24] # 这里不需要网关,因为它本身就是集群的网关 routes: - to: 0.0.0.0/0 via: 192.168.1.254 table: 100 routing-policy: - from: 10.20.30.0/24 table: 100
- 应用配置并生效:
sudo netplan generate && sudo netplan apply
然后需要开启IP转发和配置NAT规则:
- 开启IPv4转发:编辑
/etc/sysctl.conf,找到net.ipv4.ip_forward=1这一行,去掉前面的注释(#),然后执行:
sudo sysctl -p
- 设置NAT伪装(让集群机器的流量看起来是从USB网卡的IP发出的):
sudo iptables -t nat -A POSTROUTING -o <usb-interface> -s 10.20.30.0/24 -j MASQUERADE
- 保存iptables规则,避免重启后丢失:
sudo apt install -y iptables-persistent # 如果没装的话先安装 sudo iptables-save | sudo tee /etc/iptables/rules.v4
最后一步,配置集群里的其他树莓派:
- 把它们的默认网关设置为
10.20.30.1(也就是那个网关Pi的集群IP) - DNS服务器可以设为
192.168.1.254(主路由器)或者公共DNS比如8.8.8.8
配置完后,你可以从集群里的任意一台Pi测试:
ping 192.168.1.254 # 先测能不能通主路由器 ping 8.8.8.8 # 再测能不能通外网
如果有不通的地方,先检查网卡名称、IP地址是否正确,再确认iptables规则和IP转发是否开启。
备注:内容来源于stack exchange,提问作者Brayn
相关产品推荐
相关产品推荐

