linux-router

linux-router

Linux系统一键配置路由和WiFi热点工具

Linux-router是一个开源工具,用于将Linux系统快速配置为路由器或WiFi热点。它支持互联网连接共享、子网创建、DHCP和DNS服务、IPv6以及透明代理等功能。用户通过单个命令即可完成设置,也可轻松还原配置。该工具适用于虚拟机/容器路由、创建隔离网络等场景,通过封装iptables和dnsmasq等底层组件简化了复杂的网络配置过程。

Linux路由网络配置WiFi热点透明代理iptablesGithub开源项目

Linux 路由器

一条命令将 Linux 设置为路由器。能够提供互联网连接或创建 WiFi 热点。支持透明代理(redsocks)。同时也适用于虚拟机/容器的路由。

它封装了 iptablesdnsmasq 等工具。一条命令使用,一条命令还原或通过 control-c 恢复(甚至关闭终端窗口即可恢复)。

Linux-Router 新闻 & 开发者笔记 📰 | 更多工具和项目 🛠️ | 🍻 请我喝杯咖啡 ❤️

功能

基本功能:

  • 创建一个 NAT 子网
  • 提供互联网连接
  • DHCP 服务器(和 RA)
    • 指定 DHCP 服务器分配给客户端的 DNS
  • DNS 服务器
    • 指定上游 DNS (类似简单的 DNS 代理)
  • IPv6 (在 NAT 局域网后,类似 IPv4)
  • 创建 WiFi 热点:
    • 选择信道
    • 选择加密方式: WPA2/WPA、WPA2、WPA、无加密
    • 在获取互联网的同一接口上创建 AP (通常需要相同信道)
  • 透明代理 (redsocks)
  • 透明 DNS 代理 (劫持 53 端口数据包)
  • 检测 NetworkManager 并确保不会干扰 (处理接口(非)托管状态)
  • 检测 firewalld 并确保不会干扰 (通过使用 trusted 区域)
  • 可以运行多个实例,创建多个不同的网络。具有实例管理功能。

更多功能请参见下方命令行用法

适用场景

互联网----(eth0/wlan0)-Linux-(wlanX)AP
                                       |--客户端
                                       |--客户端
                                    互联网
WiFi AP(无DHCP)                         |
    |----(wlan1)-Linux-(eth0/wlan0)------
    |           (DHCP)
    |--客户端
    |--客户端
                                    互联网
 交换机                                 |
    |---(eth1)-Linux-(eth0/wlan0)--------
    |--客户端
    |--客户端
互联网----(eth0/wlan0)-Linux-(eth1)------另一台PC
互联网----(eth0/wlan0)-Linux-(虚拟接口)-----虚拟机/容器

安装

单文件脚本。在 GitHub 上的 Linux-router 仓库发布。只需下载并运行 bash 脚本(满足依赖)。这种情况下无需安装即可使用。

我目前没有为任何发行版打包。如果你打包了,欢迎提交 PR 并在此处添加链接(可以带版本徽章)

Linux 发行版
任意下载单文件脚本并无需安装即可运行

依赖

  • bash
  • procps 或 procps-ng
  • iproute2
  • dnsmasq
  • iptables (或带 iptables-nft 转换链接的 nftables)
  • WiFi 热点依赖
    • hostapd
    • iw
    • iwconfig (仅当 'iw' 无法识别你的适配器时需要)
    • haveged (可选)

用法

为一个接口提供互联网

sudo lnxrouter -i eth1

无论你从哪个接口(除了 eth1)获取互联网。

创建 WiFi 热点

sudo lnxrouter --ap wlan0 MyAccessPoint -p MyPassPhrase

无论你从哪个接口获取互联网(即使是 wlan0)。将为热点创建虚拟接口 x0wlan0

将一个接口的互联网提供给另一个接口

客户端只通过 isp5 访问互联网

<details>
sudo lnxrouter -i eth1 -o isp5 --no-dns --dhcp-dns 1.1.1.1 -6 --dhcp-dns6 [2606:4700:4700::1111]

在这种用法下,建议:

  1. 停止提供本地 DNS
  2. 告诉客户端使用哪个 DNS (ISP5 的 DNS。或者,安全的公共 DNS,如上例所示)
</details>

创建局域网而不提供互联网

<details>
sudo lnxrouter -n -i eth1
sudo lnxrouter -n --ap wlan0 MyAccessPoint -p MyPassPhrase
</details>

为 LXC 提供互联网

<details>

创建一个桥接

sudo brctl addbr lxcbr5

在 LXC 容器的 config

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxcbr5
lxc.network.hwaddr = xx:xx:xx:xx:xx:xx
sudo lnxrouter -i lxcbr5
</details>

透明代理

所有客户端的互联网流量都通过,例如,Tor(注意此例并非匿名用途)

<details>
sudo lnxrouter -i eth1 --tp 9040 --dns 9053 -g 192.168.55.1 -6 --p6 fd00:5:6:7::

torrc

TransPort 192.168.55.1:9040 
DNSPort 192.168.55.1:9053
TransPort [fd00:5:6:7::1]:9040 
DNSPort [fd00:5:6:7::1]:9053

警告: Tor 的匿名性依赖于专门设计的浏览器。像这样使用 Tor(将 Tor 网络共享给局域网客户端)不能确保匿名性。

尽管我们在这里使用 Tor 作为示例,但 Linux-router 并不确保也不以匿名性为目标。

</details>

客户端沙盒网络

不向客户端提供我们的信息。客户端仍可访问互联网。

<details>
sudo lnxrouter -i eth1 \ --tp 9040 --dns 9053 \ --random-mac \ --ban-priv \ --catch-dns --log-dns # 可选
</details>

Linux-router 不提供任何保证。使用风险自负

用作 LXD 的透明代理

<details>

创建一个桥接

sudo brctl addbr lxdbr5

创建并添加一个新的 LXD 配置文件来覆盖容器的 eth0

lxc profile create profile5 lxc profile edit profile5 ### 配置文件内容 ### config: {} description: "" devices: eth0: name: eth0 nictype: bridged parent: lxdbr5 type: nic name: profile5 lxc profile add <容器名> profile5
sudo lnxrouter -i lxdbr5 --tp 9040 --dns 9053

从容器中移除新配置文件

lxc profile remove <容器名> profile5

不使用配置文件

向容器添加新的 eth0,覆盖默认的 eth0

lxc config device add <容器名> eth0 nic name=eth0 nictype=bridged parent=lxdbr5

移除自定义的 eth0 以恢复默认的 eth0

lxc config device remove <容器名> eth0

用作 VirtualBox 的透明代理

在 VirtualBox 的全局设置中,创建一个禁用 DHCP 的仅主机网络 vboxnet5

sudo lnxrouter -i vboxnet5 --tp 9040 --dns 9053

用作 firejail 的透明代理

创建一个网桥

sudo brctl addbr firejail5
sudo lnxrouter -i firejail5 -g 192.168.55.1 --tp 9040 --dns 9053 firejail --net=firejail5 --dns=192.168.55.1 --blacklist=/var/run/nscd

Firejail 的 /etc/resolv.conf 不会从 DHCP 获取 DNS,所以我们需要手动分配。

nscd 是域名缓存服务,在这里不应该从 jail 内访问。

命令行用法和其他功能

用法: lnxrouter <选项>

选项:
    -h, --help              显示此帮助信息
    --version               打印版本号

    -i <接口>               指定用于创建 NAT 子网并提供互联网的接口
                            (创建 WiFi 热点请使用 '--ap' 选项)
    -o <接口>               指定提供互联网的接口
                            (注意:使用此选项和默认 DNS 选项可能会将查询泄露到其他接口)
    -n                      不提供互联网
    --ban-priv              禁止客户端访问我的私有网络
    
    -g <ip>                 此主机在子网中的 IPv4 地址(子网掩码为 /24)
                            (例如: '192.168.5.1' 或简写为 '5')
    -6                      启用 IPv6 (NAT)
    --no4                   禁用 IPv4 互联网(不转发 IPv4)
                            通常与 '-6' 一起使用
                            
    --p6 <前缀>             设置 IPv6 LAN 地址前缀(长度为 64)
                            (例如: 'fd00:0:0:5::' 或简写为 '5') 
                            使用此选项会启用 '-6'
                            
    --dns <ip>|<端口>|<ip:端口>
                            DNS 服务器的上游 DNS
                            使用 ',' 分隔多个服务器
                            (默认: 使用 /etc/resolv.conf)
                            (注意 IPv6 地址需要用 '[]' 括起来)
    --no-dns                不提供 DNS 服务
    --no-dnsmasq            禁用 dnsmasq 服务器 (DHCP, DNS, RA)
    --catch-dns             透明 DNS 代理,将目标端口为 53 的数据包(TCP/UDP)
                            重定向到此主机
    --log-dns               显示 DNS 查询日志 (dnsmasq)
    --dhcp-dns <IP1[,IP2]>|no
                            设置 DHCP 提供的 IPv4 DNS(默认:此主机)
    --dhcp-dns6 <IP1[,IP2]>|no
                            设置 DHCP (RA) 提供的 IPv6 DNS
                            (默认: 此主机)
                            (注意 IPv6 地址需要用 '[]' 括起来)
                            同时使用以上两个选项将启用 '--no-dns' 
    --hostname <名称>       DNS 服务器将此名称与此主机关联
                            使用 '-' 从 /etc/hostname 读取名称
    -d                      DNS 服务器将考虑 /etc/hosts 文件
    -e <hosts 文件>         DNS 服务器将考虑额外的 hosts 文件
    --dns-nocache           DNS 服务器不使用缓存
    
    --mac <MAC>             设置 MAC 地址
    --random-mac            使用随机 MAC 地址
 
    --tp <端口>             透明代理,
                            将非 LAN 的 TCP 和 UDP(未经测试)流量重定向到
                            指定端口(通常与 '--dns' 一起使用)
    
  WiFi 热点选项:
    --ap <WiFi 接口> <SSID>
                            创建 WiFi 接入点
    -p, --password <密码>   
                            WiFi 密码
    --qr                    在终端显示 WiFi 二维码(需要 qrencode)
    
    --hidden                隐藏接入点(不广播 SSID)
    --no-virt               不创建虚拟接口
                            使用此选项后,无法同时使用同一个 wlan 接口
                            提供互联网和创建 AP
    --virt-name <名称>      设置虚拟接口的名称
    -c <信道>               指定信道(默认:使用当前信道,或 1 / 36)
    --country <代码>        设置两字母国家代码以符合规定
                            (例如: US)
    --freq-band <GHz>       设置频段: 2.4 或 5 (默认: 2.4)
    --driver                选择 WiFi 适配器驱动程序(默认: nl80211)
    -w <WPA 版本>           '2' 表示 WPA2,'1' 表示 WPA,'1+2' 表示两者都支持
                            (默认: 2)
    --psk                   使用 64 位十六进制预共享密钥,而不是密码短语
    --mac-filter            启用 WiFi 热点 MAC 地址过滤
    --mac-filter-accept     WiFi 热点 MAC 地址过滤列表的位置
                            (默认为 /etc/hostapd/hostapd.accept)
    --hostapd-debug <级别>  1 或 2。传递 -d 或 -dd 给 hostapd
    --isolate-clients       禁用客户端之间的 WiFi 通信
    --no-haveged            在需要时不自动运行 haveged
    --hs20                  启用 Hotspot 2.0

    WiFi 4 (802.11n) 配置:
    --wifi4                 启用 IEEE 802.11n (HT)
    --req-ht                要求站点 HT(高吞吐量)模式
    --ht-capab <HT 能力>    HT 能力(默认: [HT40+])

WiFi 5 (802.11ac) 配置: --wifi5 启用 IEEE 802.11ac (VHT) --req-vht 要求站点使用 VHT (Very High Throughput) 模式 --vht-capab <VHT 能力> VHT 能力

--vht-ch-width <索引>   VHT 信道宽度索引:
                            0 表示 20MHz 或 40MHz (默认)
                            1 表示 80MHz
                            2 表示 160MHz
                            3 表示 80+80MHz (非连续 160MHz)    
--vht-seg0-ch <信道>    主要段 VHT 中心频率的信道索引。
                        与 '--vht-ch-width' 一起使用
--vht-seg1-ch <信道>    次要段(第二个 80MHz)VHT 中心频率的信道索引。
                        与 '--vht-ch-width 3' 一起使用

实例管理: --daemon 在后台运行 -l, --list-running 显示正在运行的实例 --lc, --list-clients <id|接口>
列出一个实例的客户端。或列出一个接口的邻居, 即使该接口不由我们处理(被动模式) --stop <id> 停止一个正在运行的实例 <id> 可以使用 PID 或子网接口名称。 可以通过 '--list-running' 获取它们

示例: lnxrouter -i eth1 lnxrouter --ap wlan0 MyAccessPoint -p MyPassPhrase lnxrouter -i eth1 --tp <透明代理> --dns <DNS代理>

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多