From d88541cddc316679799afeb7fb222cc7e9afd6b7 Mon Sep 17 00:00:00 2001 From: Ycarus Date: Mon, 11 Mar 2019 19:35:49 +0100 Subject: [PATCH] Fix IPv6 NAT66 support --- .../luasrc/controller/openmptcprouter.lua | 6 +++--- luci-app-openmptcprouter/root/etc/init.d/openmptcprouter | 7 ++++--- openmptcprouter/files/etc/uci-defaults/1920-omr-network | 1 + shadowsocks-libev/files/shadowsocks-libev.init | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 03c771e4c..730e664f5 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -1189,12 +1189,12 @@ function set_ipv6_state(disable_ipv6) if disable_ipv6 == "1" then ucic:set("dhcp","lan","ra_default","0") ucic:set("network","lan","ipv6","0") - --else + else -- ucic:set("dhcp","lan","ra_default","1") + ucic:set("network","lan","ipv6","1") + ucic:set("network","lan","delegate","0") end - ucic:set("network","lan","ipv6","0") - -- Disable/Enable IPv6 DHCP and change Shadowsocks listen address if disable_ipv6 == "1" then luci.sys.call("uci -q del dhcp.lan.dhcpv6") diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter index bd621b2ec..0f6eaac03 100755 --- a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -29,18 +29,19 @@ set_ipv6_state() { uci -q set firewall.@defaults[0].disable_ipv6=$disable_ipv6 uci -q commit firewall + if [ "$disable_ipv6" == "1" ]; then uci -q set dhcp.lan.ra_default="0" uci -q set network.lan.ipv6="0" - fi - - if [ "$disable_ipv6" == "1" ]; then uci -q delete network.lan.ipv6 uci -q delete dhcp.lan.dhcpv6 uci -q delete dhcp.lan.ra uci -q delete dhcp.lan.ra_default uci -q set shadowsocks-libev.hi.local_address="0.0.0.0" else + uci -q set dhcp.lan.ra_default="1" + uci -q set network.lan.ipv6="1" + uci -q set network.lan.delegate="0" uci -q set shadowsocks-libev.hi.local_address="::" fi uci -q commit shadowsocks-libev diff --git a/openmptcprouter/files/etc/uci-defaults/1920-omr-network b/openmptcprouter/files/etc/uci-defaults/1920-omr-network index 4f882f5c7..6dde4e4cd 100755 --- a/openmptcprouter/files/etc/uci-defaults/1920-omr-network +++ b/openmptcprouter/files/etc/uci-defaults/1920-omr-network @@ -96,6 +96,7 @@ set network.lan.ipaddr=192.168.100.1 set network.lan.netmask=255.255.255.0 set network.lan.ifname=${lanif} set network.lan.metric=2048 +set network.lan.delegate=0 EOF uci -q batch <<-EOF diff --git a/shadowsocks-libev/files/shadowsocks-libev.init b/shadowsocks-libev/files/shadowsocks-libev.init index 7ce491a59..8239591af 100644 --- a/shadowsocks-libev/files/shadowsocks-libev.init +++ b/shadowsocks-libev/files/shadowsocks-libev.init @@ -390,7 +390,7 @@ rules_up() { config_foreach ss_rules_restart "$cfgtype" "$cfgtype" done ss_rules - #[ "$(uci -q get openmptcprouter.settings.disable_ipv6)" = "1" ] || ss_rules6 + [ "$(uci -q get openmptcprouter.settings.disable_ipv6)" = "1" ] || ss_rules6 [ -f /etc/init.d/omr-bypass ] && /etc/init.d/omr-bypass reload }