美文网首页路由联盟
Padavan编译指南(斐讯K2;tproxy;napt66)

Padavan编译指南(斐讯K2;tproxy;napt66)

作者: libgcc | 来源:发表于2017-05-17 01:22 被阅读2502次

目录

  • 编译步骤
  • 斐讯K2(PSG1218)适配修改
  • iptables的tproxy支持和napt66(北邮学生开发的一种ipv6下的nat方案)
  • 相关文件下载

编译步骤

linux环境下,在ubuntu和fedora已测试通过

su
#centos系:
yum install ncurses-* flex byacc bison zlib-* texinfo gmp-* mpfr-* gettext libtool* libmpc-* gettext-* python-docutils nano
yum groupinstall "Development Tools"

#debian系:
apt-get install build-essential gawk pkg-config gettext automake autoconf libtool bison flex zlib1g-dev libgmp3-dev libmpfr-dev libmpc-dev texinfo python-docutils autopoint nano libncurses*

cd /opt
git clone https://bitbucket.org/padavan/rt-n56u.git

#备份默认的.config文件
mv /opt/rt-n56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config /opt/rt-n56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config.backup

#复制K2适配文件和napt66修改文件 (相关文件以及详细说明见后文)

#启用所有iptables扩展模块(详细说明见后文)
cp -rf /opt/rt-n56u/trunk/user/iptables/iptables-1.4.16.3/extensions/disabled/*.* /opt/rt-n56u/trunk/user/iptables/iptables-1.4.16.3/extensions/

######################
#下面四步仅是需要修改内核编译配置的才需要做,如调整RAM大小,变更wifi驱动版本等
cp /opt/rt-n56u/trunk/configs/boards/RT-AC54U/256M.nousb.kernel-3.4.x.config /opt/rt-n56u/trunk/linux-3.4.x/.config
cd /opt/rt-n56u/trunk/linux-3.4.x/
make menuconfig 
#menuconfig的配置方法见后文,默认已经开启netfliter的tproxy支持,wifi驱动版本为3.0
# 修改完成,移动回原目录
mv /opt/rt-n56u/trunk/linux-3.4.x/.config /opt/rt-n56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config
######################

#如果不需要修改内核编译配置,则直接将64M.nousb.kernel-3.4.x.config或
#将其他.config文件命名为kernel-3.4.x.config
cp /opt/rt-n56u/trunk/configs/boards/RT-AC54U/64M.nousb.kernel-3.4.x.config /opt/rt-n56u/trunk/configs/boards/RT-AC54U/kernel-3.4.x.config

#备份,复制,修改机型的.config配置文件,K2对应的是AC54U(详细说明见后文K2适配部分)
mv /opt/rt-n56u/trunk/.config /opt/rt-n56u/trunk/backup.config
cp  /opt/rt-n56u/trunk/nousb.config /opt/rt-n56u/trunk/.config
# nano /opt/rt-n56u/trunk/.config

#编译工具链
cd /opt/rt-n56u/toolchain-mipsel/
./clean_sources
./build_toolchain

#以后每次编译只需要执行以下三步
#编译固件
cd /opt/rt-n56u/trunk/
./clear_tree
#./build_firmware
#原作者的build_firmware其实是简单粗暴地替换kernel-3.4.x.config内的文本,有时会出问题。
#我注释掉一些内容,新脚本为build_firmware_usb和build_firmware_nousb,适用于有/无USB支持的固件
./build_firmware_nousb
#./build_firmware_usb

menuconfig的配置

以修改netfilter扩展支持和修改RAM大小为例

在执行make menuconfig之后,弹出图形化配置页面,这里可以配置与内核有关的编译选项

menuconfig Screenshot_20170516_213014.png

选择Machine selection --->DRAM Size 可配置RAM大小。
在menuconfig中,[*]表示编译进内核中,[M]表示编译成模块(.ko文件),< >表示既可以编译为模块或集成于内核内,[ ]表示不包含。两次按下ESC回退到上一级菜单,按下 / 键可以搜索,例如 输入 tproxy搜索得到以下结果


Screenshot_20170516_221738.png
Screenshot_20170516_213049.png

搜索结果包含了搜索对象的所在位置和依赖关系,例如tproxy的第一个结果,Depends on中包含EXPERIMENTAL [=y],表明需要先开启EXPERIMENTAL选项才能开启此项支持。

Symbol: NETFILTER_XT_TARGET_TPROXY [=m]
Type : tristate
Prompt: "TPROXY" target support (EXPERIMENTAL)
Defined at net/netfilter/Kconfig:655
Depends on: NET [=y] && INET [=y] && NETFILTER [=y] && EXPERIMENTAL [=y] && NETFILTER_TPROXY [=m] && NETFILTER_XTABLES [=y] && NETFILTER_ADVANCED [=y]
Location:
-> Networking support (NET [=y])
-> Networking options
-> Network packet filtering framework (Netfilter) (NETFILTER [=y])
-> Core Netfilter Configuration
-> Netfilter Xtables support (required for ip_tables) (NETFILTER_XTABLES [=y])
Selects: NF_DEFRAG_IPV4 [=y] && NF_DEFRAG_IPV6 [=y]

Symbol: NETFILTER_TPROXY [=m]
Type : tristate
Prompt: Transparent proxying support (EXPERIMENTAL)
Defined at net/netfilter/Kconfig:364
Depends on: NET [=y] && INET [=y] && NETFILTER [=y] && **EXPERIMENTAL [=y] **&& IP_NF_MANGLE [=m] && NETFILTER_ADVANCED [=y]
Location:
-> Networking support (NET [=y])
-> Networking options
-> Network packet filtering framework (Netfilter) (NETFILTER [=y])
-> Core Netfilter Configuration

照此方法,可以调整wifi驱动版本以及其他内核驱动,如USB串口驱动等。
改完以后,反复按esc回退到主菜单,选择exit并确认保存。


斐讯K2(PSG1218)适配修改

K2采用MT7620+64M RAM+8M ROM,无USB口。padavan需要在optware/entware环境下外挂U盘才能安装ipk,也就是需要引出USB的D+和D-引脚。胆大之人可以尝试刮U大法,胆小之人可以寄给专业改机商帮忙硬改。
K2的相关适配主要有如下几方面:

  • 汉化文件
  • wifi驱动和开启外置PA/LNA
  • LED灯GPIO口定义(trunk/configs/boards/RT-AC54U/board.h)
  • WAN/LAN口定义
  • 中文SSID
  • 其他:设置一些默认参数,例如NTP服务器,LAN地址,SSID,ssh等

我使用的适配文件来源于恩山论坛,不过其中中文SSID修改的文件太多,而且我并没有这个需求,因此就没有使用相关文件,其余的适配文件都打包好了,下载地址见本文最后。
汉化文件来源:http://www.right.com.cn/forum/thread-193826-1-1.html
拷贝适配文件相应目录覆盖即可。

适配文件中含有:
  • trunk/user/shared/defaults.h
    默认网关:192.168.1.1;用户名:admin;密码:admin;NTP服务器:hk.pool.ntp.org, 2001:470:0:50::2 ;wifi密码:1234567890
  • 64M / 256M RAM和有/无USB的.config文件
  • NAPT66支持(见下文)

机型的.config文件(usb.config ; nousb.config),包含padavan中的一些第三方软件配置例如aria2,minidlna,Transmission以及一些内核相关参数的配置,可以自行修改,需要开启的功能设置成 =y 并且删除前面的 # 注释即可,修改完成后命名为.config

Screenshot_20170516_231536.png

iptables的tproxy支持与napt66(ipv6 nat)

ss的udp转发需要iptables的tproxy支持,在openwrt中可以直接安装kmod-ipt-tproxy,在padavan中则需要从源码入手。
首先在内核中开启tproxy的支持,这个在menuconfig中配置,详见上文;
接着是开启iptables自己的支持,只需要将/opt/rt-n56u/trunk/user/iptables/iptables-1.4.16.3/extensions/disabled/中的文件全部复制到 extensions/中即可。
刷好固件后,手动在开机脚本中加一行(自定义设置-脚本-启动后)

modprobe xt_TPROXY

Padavan的内核原生不支持ipv6 NAT,所以需要第三方的NAPT66(北邮学生开发的在ipv6下的NAT方案)
参考NAPT66文档,在编译内核时,只需修改trunk/linux-3.4.x/net/ipv6/ip6_output.c即可。

Screenshot_20170516_234043.png
更多关于NAPT66的信息请参考:
http://www.jianshu.com/p/eb07eaac6167
https://github.com/mzweilin/napt66

相关文件下载

K2适配文件以及适用于Padavan (内核版本3.4)的napt66.ko
链接:https://pan.baidu.com/s/1qYCuQ3U 密码:pyja

相关文章

网友评论

  • ad55a801bf53:楼主,求加入5K-W20路由器内置天线的支持

本文标题:Padavan编译指南(斐讯K2;tproxy;napt66)

本文链接:https://www.haomeiwen.com/subject/amfrxxtx.html