OpenWRT 配置 IPv6,在网上有许多教程,但大部分都说的不清不楚。 所以我从 OpenWRT 配置文件的角度,给出一个肯定能用的配置。 相关配置原理不详述,可自行上网查找。
# /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。 ...
# /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'
# /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'
$ curl 6.ipw.cn
版本 | 说明 |
---|---|
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 | 引导程序 |
kernel | Linux内核 |
rootfs | openwrt根系统 |
建议使用纯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
国内用户请准备好梯子
git clone https://github.com/coolsnowwolf/lede
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
Hyper-V平台配置,可参考
本文记录OpenWrt设置透明代理的步骤及原理。
透明代理的运行原理主要由DNS访问流程
、IP访问流程
两部分组成组成
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;
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;
服务器管理
-编辑服务器
-插件参数
:一定要加上"loglevel=none",如果不加v2ray-plugin插件几分钟就会被系统杀死访问控制
-被忽略IP列表
:/etc/chinadns_chnroute.txt由于使用了v2ray-plugin 插件,导致Shadowsocks不再支持UDP包,所以使用TCP的方式查询DNS
网络
-DHCP/DNS
-常规设置
-DNS转发
:/openwrt.lan/192.168.xxx.xxx网络
-DHCP/DNS
-常规设置
-重绑定保护
:不勾选/etc/config/uhttpd
-option redirect_https
:‘1’ 不强制跳转https# opkg install kmod-nf-nathelper-extra
# opkg install kmod-nf-ipvs-ftp
# nano /etc/sysctl.d/11-nf-conntrack.conf
增加"net.netfilter.nf_conntrack_helper=1"
在使用FTP的主动模式时,要注意关闭网关上的ALG功能(如Windows ALG服务),同时使用可能引起失败
参考文档