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代理>

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

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

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多