分享一个基于官方代码编译的FullCone NAT的固件
本帖最后由 Saber 于 2022-12-31 21:46 编辑众所周知,FullCone NAT在P2P 游戏、BT种子应用中的重要性。当前AXT1800的官方固件不支持FullCone NAT功能,实属遗憾,大雕的AXT1800固件虽然支持FullCone,但是不支持AXT1800的风扇和无线驱动,论坛中也有兄弟问过这方面的问题,然而官方没有给出简单的解决方法。
本人在研究了Openwrt的防火墙特性后,编译了一个分享基于官方代码编译的支持FullCone NAT的固件,内核4.4,请各位有FullCone环境的兄弟帮忙测试一下功能。
后期如果用到的人多,我会分享一下自编译相关固件实现FullCone NAT的方法
使用方法,.img为Uboot刷入文件,.tar通过“系统→升级/备份→刷写新的固件” 刷入,然后在“网络→fullconenat”开启相关功能,目前仅测试了仅用“禁用”和全局FullCone,后续再测试IP功能
链接:https://pan.baidu.com/s/1uYGcCQjtt7V1XcpxFRBYMQ?pwd=d49y
提取码:d49y
感谢分享!顶上去 失效了失效了失效了 本帖最后由 Saber 于 2022-12-31 21:56 编辑
m0eak 发表于 2022-12-31 16:40
失效了失效了失效了
我更新了下固件,分享地址也更新了,测试一下后麻烦回我一下结果{:5_117:} Saber 发表于 2022-12-31 21:47
我更新了下固件,分享地址也更新了,测试一下后麻烦回我一下结果 ...
有官方界面吗 本帖最后由 Saber 于 2023-1-1 13:18 编辑
m0eak 发表于 2023-1-1 13:11
有官方界面吗
那个我暂时没有做,官方界面内容是固定死的,做出来也是得进openwrt界面才能调,你需要的话,可以加我一个V,tu1994ya,我给你做一个,另外,新年快乐啊! Saber 发表于 2023-1-1 13:16
那个我暂时没有做,官方界面内容是固定死的,做出来也是得进openwrt界面才能调,你需要的话,可以加我一个 ...
能分享一下方法吗 m0eak 发表于 2023-1-2 14:19
能分享一下方法吗
完全没问题,只不过不是装一个插件那么简单,需要编译固件,你有相关基础的话,我可以告诉你 Saber 发表于 2023-1-3 00:57
完全没问题,只不过不是装一个插件那么简单,需要编译固件,你有相关基础的话,我可以告诉你 ...
我会编译,大概怎么操作啊 m0eak 发表于 2023-1-28 14:23
我会编译,大概怎么操作啊
主要是三步:
第一步要给内核打补丁,把LGA1150佬的补丁https://github.com/LGA1150/openwrt-fullconenat放在feeds/package里面,注意更新一下feeds;第二步给防火墙的代码打上FullCone的补丁,你需要在package/network/config/patches建一个空的补丁,命名为0100-fullconenat.patch,AXT1800的官方代码和Openwrt的防火墙代码不太一样,所以得调一下官方的代码的位置,我这有个写好的,你可以直接用:
--- a/defaults.c
+++ b/defaults.c
@@ -48,7 +48,9 @@ const struct fw3_option fw3_flag_opts[] = {
FW3_OPT("synflood_protect", bool, defaults, syn_flood),
FW3_OPT("synflood_rate", limit, defaults, syn_flood_rate),
FW3_OPT("synflood_burst", int, defaults, syn_flood_rate.burst),
-
+
+ FW3_OPT("fullcone", bool, defaults, fullcone),
+
FW3_OPT("tcp_syncookies", bool, defaults, tcp_syncookies),
FW3_OPT("tcp_ecn", int, defaults, tcp_ecn),
FW3_OPT("tcp_window_scaling",bool, defaults, tcp_window_scaling),
--- a/options.h
+++ b/options.h
@@ -296,6 +296,7 @@ struct fw3_defaults
enum fw3_reject_code tcp_reject_code;
enum fw3_reject_code any_reject_code;
+ bool fullcone;
bool syn_flood;
struct fw3_limit syn_flood_rate;
--- a/zones.c
+++ b/zones.c
@@ -670,6 +670,7 @@ print_zone_rule(struct fw3_ipt_handle *h
struct fw3_address *msrc;
struct fw3_address *mdest;
struct fw3_ipt_rule *r;
+ struct fw3_defaults *defs = &state->defaults;
if (!fw3_is_family(zone, handle->family))
return;
@@ -755,8 +756,22 @@ print_zone_rule(struct fw3_ipt_handle *h
{
r = fw3_ipt_rule_new(handle);
fw3_ipt_rule_src_dest(r, msrc, mdest);
- fw3_ipt_rule_target(r, "MASQUERADE");
- fw3_ipt_rule_append(r, "zone_%s_postrouting", zone->name);
+ /*FIXME: Workaround for FULLCONE-NAT*/
+ if(defs->fullcone)
+ {
+ warn("%s will enable FULLCONE-NAT", zone->name);
+ fw3_ipt_rule_target(r, "FULLCONENAT");
+ fw3_ipt_rule_append(r, "zone_%s_postrouting", zone->name);
+ r = fw3_ipt_rule_new(handle);
+ fw3_ipt_rule_src_dest(r, msrc, mdest);
+ fw3_ipt_rule_target(r, "FULLCONENAT");
+ fw3_ipt_rule_append(r, "zone_%s_prerouting", zone->name);
+ }
+ else
+ {
+ fw3_ipt_rule_target(r, "MASQUERADE");
+ fw3_ipt_rule_append(r, "zone_%s_postrouting", zone->name);
+ }
}
}
}
第三步,加入一个启动FullCone NAT的luci界面,https://github.com/peter-tank/luci-app-fullconenat,编译的时候勾上,它会自动勾上第一步的模块
m0eak 发表于 2023-1-28 14:23
我会编译,大概怎么操作啊
我觉得这个对于官方来说就是一个举手之劳,前面也有些人提过这个功能请求,我不太理解为啥他们不愿意做进去 Saber 发表于 2023-2-1 20:02
主要是三步:
第一步要给内核打补丁,把LGA1150佬的补丁https://github.com/LGA1150/openwrt-fullconenat ...
好的谢谢,我去试一下 m0eak 发表于 2023-2-4 20:48
好的谢谢,我去试一下
成功了告诉我一下 Saber 发表于 2023-2-4 21:20
成功了告诉我一下
编译成功了,但还没刷进去,编译的包里看到了luci-app-fullconenat_1.3_all.ipk,和iptables-mod-fullconenat_2018-12-15-d4daedd0-1_arm_cortex-a7.ipk,那个修改的patch网上有教程吗,我想看看 刷上了,并且能够运行,我把他尝试弄进云编译里:lol m0eak 发表于 2023-2-5 14:40
刷上了,并且能够运行,我把他尝试弄进云编译里
看看你那边能FullCone NAT吗{:5_117:} Saber 发表于 2023-2-6 11:14
看看你那边能FullCone NAT吗
麻了,我发现他过一会自己就会not running了 m0eak 发表于 2023-2-7 13:25
麻了,我发现他过一会自己就会not running了
这个需要你手动点一下all enable那个,或者你写个开机自启,添加一些fullcone防火墙规则。这个好像会和NAT6有冲突,要注意
页:
[1]