Avatar

Organizations

6 results for OpenWRT
  • OpenWRT 配置 IPv6,在网上有许多教程,但大部分都说的不清不楚。 所以我从 OpenWRT 配置文件的角度,给出一个肯定能用的配置。 相关配置原理不详述,可自行上网查找。

    系统环境

    • 北京联通 300M 家宽 (客服说100元/月,可提供公网IPv4/IPv6地址,其实IPv6是免费给的)
    • OpenWRT(PVE虚机,非直通网卡)
      • 目标平台:x86/64
      • 固件版本:OpenWrt 21.02.0 r16279-5cc0535800 / LuCI openwrt-21.02 branch git-23.093.57360-e98243e
      • 内核版本:5.4.143
      • DHCPv6 客户端 (odhcp6c)
      • RA & DHCPv6 服务器 (odhcpd)
      • IPv6 防火墙 (ip6tables)
      • Luci网页配置 (luci-proto-ipv6)

    配置流程

    1. 光猫桥接(电话联通,远程搞定)
    2. OpenWRT WAN IPv6 配置
    # /etc/config/network
    ...
    config interface 'lan'
            option proto 'static'
            option ipaddr '192.168.10.10'
            option netmask '255.255.255.0'
            option device 'eth0'
            option ip6assign '64' # IPv6分配长度。要与 wan 口一致。
    
    config interface 'wan'
            option proto 'pppoe'
            option username '***********'
            option password '***********'
            option device 'eth1'
            option ipv6 'auto' # 自动获取IPv6地址,使用这个选项后,会自动创建一个虚拟动态接口(WAN_6),不用配置。
            option ip6assign '64' # IPv6分配长度。参考 WAN_6 接口 IPv6-PD 的掩码长度,一般为“60”,比它大即可,系统默认为64。
    ...
    
    1. OpenWRT 防火墙配置
    # /etc/config/firewall
    ...
    config zone
            option name 'lan'
            list network 'lan'
            option input 'ACCEPT'
            option output 'ACCEPT'
            option forward 'ACCEPT'
    
    config zone
            option name 'wan'
            list network 'wan'
            option input 'DROP' # 关闭 wan 口输入流量
            option output 'ACCEPT' # 只出不进
            option forward 'REJECT'
            option masq '1' # 打开 NAT 功能
            option mtu_fix '1' # 路由器直接拨号时使用
    ...
    # 转发规划很重要
    config forwarding
            option src 'lan'
            option dest 'wan'
    ...
    # 允许外网IPv6协议下,任意地址的547端口的UDP包通过wan口,访问本机546端口
    config rule
            option name 'Allow-DHCPv6'
            option proto 'udp'
            option src 'wan'
            option src_port '547'
            option dest_port '546'
            option target 'ACCEPT'
            option family 'ipv6'
    
    1. OpenWRT DHCP 配置
    # /etc/config/dhcp
    ...
    config dhcp 'lan'
            option interface 'lan'
            option start '100'
            option dhcpv4 'server'
            option limit '200'
            option force '1'
            option leasetime '2h'
            option ra 'server' # RA服务 服务器模式
            option dhcpv6 'server' # DHCPv6服务 服务器模式
            list ra_flags 'none' # RA标记 无
    
    config dhcp 'wan'
            option interface 'wan'
            option ignore '1'
            list ra_flags 'none'
    
    config odhcpd 'odhcpd'
            option maindhcp '0'
            option leasefile '/tmp/hosts/odhcpd'
            option leasetrigger '/usr/sbin/odhcpd-update'
            option loglevel '4'
    
    1. 重启OpenWRT
    2. 查看 Luci -> 网络 -> 接口 -> LAN,已拿到的IPv6地址
    3. 测试本机外网IPv6地址,与 LAN 的 IPv6地址一致即可
    $ curl 6.ipw.cn
    

    参考文档

    firewall network ipv6 openwrt Created Wed, 04 Oct 2023 19:48:18 +0800
  • x86

    版本说明
    64用于现代PC硬件(大约在2007年以后的产品),它是为具有64位功能的计算机而构建的,并支持现代CPU功能。除非有充分的理由,否则请选择此选项。
    Generic仅适用于32位硬件(旧硬件或某些Atom处理器),应为i586 Linux体系结构,将在Pentium 4及更高版本上运行。仅当您的硬件无法运行64位版本时才使用此功能。
    Legacy用于奔腾4之前的非常旧的PC硬件,在Linux体系结构支持中称为i386。它会错过许多现代硬件上想要/需要的功能,例如多核支持以及对超过1GB RAM的支持,但实际上会在较旧的硬件上运行,而其他版本则不会。
    Geode是为Geode SoC定制的自定义旧版目标,Geode SoC仍在许多(老化的)网络设备中使用,例如PCEngines的较旧Alix板。
    文件名说明
    Combined组合的,包括bootloader、kernel、rootfs
    squashfs该磁盘映像使用传统的OpenWrt布局,一个squashfs只读根文件系统和一个读写分区,在其中存储您安装的设置和软件包。由于此映像的组装方式,您只有230 兆MB的空间来存储其他程序包和配置,而Extroot不起作用。squashfs适用于直接编译带有软件包的openwrt系统,方便重置路由器,不必从安装包重新刷机。
    ext4此磁盘映像使用单个读写ext4分区,没有只读squashfs根文件系统,因此可以扩大分区。故障安全模式或出厂重置等功能将不可用,因为它们需要只读的squashfs分区才能起作用。选择64的情况下,ext4适合我们扩容,并安装软件包。
    efi指的是UEFI,可以使用GPT分区列表,是较新的技术,性能和可扩展性上更好,不带efi的则是使用Legacy。
    bootloader引导程序
    kernelLinux内核
    rootfsopenwrt根系统

    参考文档

    version OpenWRT Created Wed, 04 Oct 2023 14:10:17 +0800
  • 1、准备环境

    建议使用纯linux系统进行编译,如 Ubuntu 20.04 LTS,这样环境比较简单,兼容问题也少。

    用WSL环境编译,可参考

    为提高编译的成功率,采用国内大神Lean的版本。

    官方版本因编译过程中,下载、兼容等等太多问题,建议不要使用。

    sudo apt-get update
    sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync
    

    2、下载代码

    国内用户请准备好梯子

    git clone https://github.com/coolsnowwolf/lede
    cd lede
    ./scripts/feeds update -a
    ./scripts/feeds install -a
    

    3、配置组件

    make menuconfig
    

    Hyper-V平台配置,可参考

    make OpenWRT Created Tue, 08 Feb 2022 10:05:20 +0800
  • 本文记录OpenWrt设置透明代理的步骤及原理。

    1. 系统环境

    • 硬件环境:Windows 10 Hyper-V虚拟机,单核处理器,256M内存
    • 固件版本:OpenWrt 19.07.6 r11278-8055e38794 / LuCI openwrt-19.07 branch git-21.101.59933-c56d9f2
    • shadowsocks-libev:3.3.5
    • luci-app-shadowsocks:2.0.2
    • v2ray-plugin:4.37.3-20210413
    • ChinaDNS:1.3.3
    • luci-app-chinadns:1.6.2
    • https-dns-proxy:2021-01-17-5
    • luci-app-https-dns-proxy:git-21.062.76689-a607f9c-1
    • luci-i18n-https-dns-proxy-zh-cn:git-21.062.76689-a607f9c-1

    2. 运行流程

    透明代理的运行原理主要由DNS访问流程IP访问流程两部分组成组成

    2.1 DNS访问流程

    flowchart LR
        lh((localhost));
        dm(Dnsmasq);
        cd(ChinaDNS);
        hdp(https-dns-proxy);
        ss(Shadowsocks);
        fd(国外DNS);
        dd(国内DNS);
    
        lh -- 1 udp:53 --> dm;
        dm -- 2 udp:5555 --> cd;
        cd -- 3.1 udp:5353--> hdp;
        cd -- 3.2 udp --> dd;
        hdp -- 4 tcp --> ss;
        ss -- 5 tcp --> fd;
    
        fd -. 6 .-> ss;
        ss -. 7 .-> hdp;
        hdp -. 8.1 .-> cd;
        dd -. 8.2 .-> cd;
        cd -. 9 缓存 .-> dm;
        dm -. 10 IP地址 .-> lh;
    

    2.2 IP访问流程

    flowchart LR
        fs(国外服务器);
        ds(国内服务器);
        lh((localhost));
        route{chinadns_chnroute.txt};
        ss(Shadowsocks);
    
        lh -- 1 --> route;
        route -- 2.1 国内IP --> ds;
        route -- 2.2 国外IP --> ss;
        ss -- 3 加密访问 --> fs;
    
        fs -. 4 返回加密数据 .-> ss;
        ds -. 5.1 返回数据 .-> lh;
        ss -. 5.2 返回解密数据 .-> lh;
    

    3. 配置

    3.1 Shadowsocks-libev + v2ray-plugin

    • 服务器管理-编辑服务器-插件参数:一定要加上"loglevel=none",如果不加v2ray-plugin插件几分钟就会被系统杀死
    • 访问控制-被忽略IP列表:/etc/chinadns_chnroute.txt

    3.2 https-dns-proxy

    由于使用了v2ray-plugin 插件,导致Shadowsocks不再支持UDP包,所以使用TCP的方式查询DNS

    v2ray proxy ShadowSocks OpenWRT Created Mon, 07 Feb 2022 13:37:19 +0800
  • 1. 使用自定义域名访问WEB管理界面

    • 网络-DHCP/DNS-常规设置-DNS转发:/openwrt.lan/192.168.xxx.xxx
    • 网络-DHCP/DNS-常规设置-重绑定保护:不勾选
    • /etc/config/uhttpd-option redirect_https:‘1’ 不强制跳转https
    DNS OpenWRT Created Mon, 07 Feb 2022 13:17:39 +0800
  • 1. 安装软件包

    # opkg install kmod-nf-nathelper-extra
    # opkg install kmod-nf-ipvs-ftp
    

    2. 添加配置

    # nano /etc/sysctl.d/11-nf-conntrack.conf
    

    增加"net.netfilter.nf_conntrack_helper=1"

    在使用FTP的主动模式时,要注意关闭网关上的ALG功能(如Windows ALG服务),同时使用可能引起失败

    参考文档

    FTP ALG OpenWRT Created Mon, 07 Feb 2022 10:08:02 +0800