Commit cefe9b17 authored by Max Lv's avatar Max Lv

refine the iptables setup

parent c65baf03
...@@ -70,10 +70,10 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -70,10 +70,10 @@ class ShadowsocksNatService extends Service with BaseService {
val TAG = "ShadowsocksNatService" val TAG = "ShadowsocksNatService"
val CMD_IPTABLES_RETURN = " -t nat -A OUTPUT -p tcp -d 0.0.0.0 -j RETURN\n" val CMD_IPTABLES_RETURN = " -t nat -A OUTPUT -p tcp -d 0.0.0.0 -j RETURN"
val CMD_IPTABLES_REDIRECT_ADD_SOCKS = " -t nat -A OUTPUT -p tcp " + "-j REDIRECT --to 8123\n" val CMD_IPTABLES_REDIRECT_ADD_SOCKS = " -t nat -A OUTPUT -p tcp " + "-j REDIRECT --to 8123"
val CMD_IPTABLES_DNAT_ADD_SOCKS = " -t nat -A OUTPUT -p tcp " + val CMD_IPTABLES_DNAT_ADD_SOCKS = " -t nat -A OUTPUT -p tcp " +
"-j DNAT --to-destination 127.0.0.1:8123\n" "-j DNAT --to-destination 127.0.0.1:8123"
val DNS_PORT = 8153 val DNS_PORT = 8153
private val mStartForegroundSignature = Array[Class[_]](classOf[Int], classOf[Notification]) private val mStartForegroundSignature = Array[Class[_]](classOf[Int], classOf[Notification])
...@@ -298,9 +298,9 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -298,9 +298,9 @@ class ShadowsocksNatService extends Service with BaseService {
} }
def setupIptables: Boolean = { def setupIptables: Boolean = {
val init_sb = new StringBuilder val init_sb = new ArrayBuffer[String]
val http_sb = new StringBuilder val http_sb = new ArrayBuffer[String]
init_sb.append(Utils.getIptables).append(" -t nat -F OUTPUT\n") init_sb.append(Utils.getIptables + " -t nat -F OUTPUT")
val cmd_bypass = Utils.getIptables + CMD_IPTABLES_RETURN val cmd_bypass = Utils.getIptables + CMD_IPTABLES_RETURN
if (!InetAddressUtils.isIPv6Address(config.proxy.toUpperCase)) { if (!InetAddressUtils.isIPv6Address(config.proxy.toUpperCase)) {
init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "-d " + config.proxy)) init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "-d " + config.proxy))
...@@ -308,16 +308,13 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -308,16 +308,13 @@ class ShadowsocksNatService extends Service with BaseService {
init_sb.append(cmd_bypass.replace("0.0.0.0", "127.0.0.1")) init_sb.append(cmd_bypass.replace("0.0.0.0", "127.0.0.1"))
if (hasRedirectSupport) { if (hasRedirectSupport) {
init_sb init_sb
.append(Utils.getIptables) .append(Utils.getIptables + " -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to "
.append(" -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to ") + DNS_PORT)
.append(DNS_PORT)
.append("\n")
} else { } else {
init_sb init_sb
.append(Utils.getIptables) .append(Utils.getIptables
.append(" -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:") + " -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:"
.append(DNS_PORT) + DNS_PORT)
.append("\n")
} }
if (config.isGFWList) { if (config.isGFWList) {
val chn_list: Array[String] = getResources.getStringArray(R.array.chn_list) val chn_list: Array[String] = getResources.getStringArray(R.array.chn_list)
...@@ -354,10 +351,8 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -354,10 +351,8 @@ class ShadowsocksNatService extends Service with BaseService {
} }
} }
} }
val init_rules: String = init_sb.toString() Console.runRootCommand(init_sb.toArray)
Console.runRootCommand(init_rules) Console.runRootCommand(http_sb.toArray)
val redt_rules: String = http_sb.toString()
Console.runRootCommand(redt_rules)
true true
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment