mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-02-14 12:21:53 +00:00
Add Full Cone NAT support
This commit is contained in:
parent
e3c42cf474
commit
b46478b0ba
3 changed files with 63 additions and 0 deletions
10
build.sh
10
build.sh
|
@ -228,6 +228,16 @@ echo "Update feeds index"
|
|||
cp .config .config.keep
|
||||
scripts/feeds clean
|
||||
scripts/feeds update -a
|
||||
|
||||
cd -
|
||||
echo "Checking if fullconenat-luci patch is set or not"
|
||||
if ! patch -Rf -N -p1 -s --dry-run < patches/fullconenat-luci.patch; then
|
||||
echo "apply..."
|
||||
patch -N -p1 -s < patches/fullconenat-luci.patch
|
||||
fi
|
||||
echo "Done"
|
||||
cd "$OMR_TARGET/source"
|
||||
|
||||
if [ "$OMR_ALL_PACKAGES" = "yes" ]; then
|
||||
scripts/feeds install -a -p packages
|
||||
scripts/feeds install -a -p luci
|
||||
|
|
13
patches/fullconenat-luci.patch
Normal file
13
patches/fullconenat-luci.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
--- a/feeds/luci/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js
|
||||
+++ b/feeds/luci/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js
|
||||
@@ -131,6 +131,10 @@ return L.view.extend({
|
||||
o = s.taboption('general', form.Flag, 'masq', _('Masquerading'));
|
||||
o.editable = true;
|
||||
|
||||
+ o = s.taboption('general', form.Flag, 'fullcone', _('Full Cone'));
|
||||
+ o.editable = true;
|
||||
+ o.depends('masq', '1');
|
||||
+
|
||||
o = s.taboption('general', form.Flag, 'mtu_fix', _('MSS clamping'));
|
||||
o.modalonly = true;
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
--- a/options.h
|
||||
+++ b/options.h
|
||||
@@ -341,6 +341,8 @@ struct fw3_zone
|
||||
struct list_head masq_src;
|
||||
struct list_head masq_dest;
|
||||
|
||||
+ bool fullcone;
|
||||
+
|
||||
bool mtu_fix;
|
||||
|
||||
struct list_head cthelpers;
|
||||
--- a/zones.c
|
||||
+++ b/zones.c
|
||||
@@ -77,6 +77,8 @@ const struct fw3_option fw3_zone_opts[]
|
||||
FW3_LIST("masq_src", network, zone, masq_src),
|
||||
FW3_LIST("masq_dest", network, zone, masq_dest),
|
||||
|
||||
+ FW3_OPT("fullcone", bool, zone, fullcone),
|
||||
+
|
||||
FW3_OPT("extra", string, zone, extra_src),
|
||||
FW3_OPT("extra_src", string, zone, extra_src),
|
||||
FW3_OPT("extra_dest", string, zone, extra_dest),
|
||||
@@ -709,7 +711,16 @@ print_zone_rule(struct fw3_ipt_handle *h
|
||||
(mdest = next_addr(mdest, &zone->masq_dest,
|
||||
handle->family, false)) || first_dest;
|
||||
first_dest = false)
|
||||
- {
|
||||
+ if (zone->fullcone && (access("/usr/lib/iptables/libipt_FULLCONENAT.so", 0) == 0)) {
|
||||
+ 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_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 {
|
||||
r = fw3_ipt_rule_new(handle);
|
||||
fw3_ipt_rule_src_dest(r, msrc, mdest);
|
||||
fw3_ipt_rule_target(r, "MASQUERADE");
|
Loading…
Reference in a new issue