一种 Debian 做旁路网关的思路

之前使用 OpenWRT 做主路由 + 物理 AP 的形式搭建家庭网络,这个方案耦合度太高了,容易崩。

经过一阵子研究,换成了 iKuai 做主路由,在 Proxmox 中使用 LXC 部署的 Debian + ShellCrash 做旁路网关的方案,iKuai 中局域网 DHCP 服务的 DNS 和网关地址默认指向 Debian 的静态 IP,不需要的设备设置网关和 DNS 地址指向 iKuai 的 IP 。

ShellCrash 配置为 TUN + FakeIP 模式,内置 DNS 指向自建的 AdguardHome 地址。稳定运行一周了。 :robot:

关键点:Proxmox 中 LXC 部署的 Debian 需要在“硬件”设置中添加网络设备 /dev/net/tun

终于可以方便设置哪些设备出国,哪些设备不出国了。 :rofl:

57 个赞

感谢佬的分享~~~~~~

1 个赞

我一直都是n1+armbian+shellCrash+AdguardHome做的旁路由,主要是玩不来OpenWrt​:joy:

shellCrash 跑在 docker 里,用 macvlan 单独分配一个 ip 做的旁路由

1 个赞

其实直接起一个lxc运行mihomo内核就好了

3 个赞

目测最简洁的做法

12 个赞

一直是all in one ,ikui主+op副 (unraid系统)基本稳定365天。只有一次,特然断电1s,掉了ikui的网卡,整个家庭网络瘫痪 :sob:。试过几次长时间断电无问题

1 个赞

我就是这样搞得,但是遇到一个问题,时不时的就上不去网了, 然后改成http代理,通过端口好的话就正常,.直接把网关指向这个shellCrash机器的时候,就又上不去了. 无从下手,不知道该从哪里开始排查,很尴尬.

把 ipv6 关掉

打卡收藏支持,有空试一下

维护艰难,主路由简单最好。不断网就是赢。

之前是n1openwrt旁路由用的还行

我把系统换成了ubuntu22就好了,之前用的是debian. :joy: 没能力去研究问题出在哪里了.

一直使用debian安装mihomo做旁路由,这样不用每个设备都安装软件,有的比如电视还不方便安装

1 个赞

有完整教程吗?

为什么不用open当旁路由 能安装各种扶墙插件

ikuai主,需要科学的设备设置网关指向旁路由,不需要的默认即可

1 个赞

主要3步,创建 docker network,创建 macvlan 桥和路由表,创建容器。可以参考我这个脚本

# # macvlan 需要开启网卡混杂模式
# ip link set dev eth0 promisc on
                                                                                                                                                                                                                   
# # 创建 docker macvlan 网络
# docker network create -d macvlan \
#   --subnet=192.168.50.0/24 \
#   --gateway=192.168.50.1 \
#   -o parent=eth0 macvlan_network
                                                                                                                                                                                                                   
# # 宿主机添加一个 macvlan 桥用于宿主和容器通信
# # 以下操作都在宿主机上运行,新增一个叫mynet(不要和容器的macvlan重名)的macvlan接口
# ip link add macvlan-bridge link eth0 type macvlan mode bridge
# ip link set macvlan-bridge up
# # 修改路由表,使宿主机到192.168.0.100的通信全部经由mynet进行
# ip route add 192.168.50.4 dev macvlan-bridge
                                                                                                                                                                                                                   
# export http_proxy=http://192.168.50.4:7890 https_proxy=http://192.168.50.4:7890 all_proxy=socks://192.168.50.4:7890
                                                                                                                                                                                                                   
docker run -d --name crash \
  --cap-add=NET_ADMIN \
  --cap-add=NET_RAW \
  --net macvlan_network \
  --ip 192.168.50.4 \
  --restart=on-failure:5 \
  crash \
  crond -f
                                                                                                                                                                                                                   
# 然后进 docker 去安装 crash(大致两步,1. 安装 iptables/nfttable,2. 安装 crash),具体安装步骤继续参考官方文档

2 个赞

多谢!不过这部分为啥是注释掉的?不是必需步骤吗

是必须的要执行一次,注释掉的执行过重启了一直有效,所以注释了。

我刚安装成功了,第一次启动一切正常,重启盒子和容器后,容器内就无法上网了。唯一能看到的错误信息是:

shellcrash 里重启服务的时候会报

sed: can't move '/etc/resolv.confoiiLeL' to '/etc/resolv.conf': Resource busy
服务已启动!

你的家庭网络 IP 是什么网段?我创建 docker macvlan 用的是同一个子网