refine the iptables setup
This commit is contained in:
@@ -70,10 +70,10 @@ class ShadowsocksNatService extends Service with BaseService {
|
||||
|
||||
val TAG = "ShadowsocksNatService"
|
||||
|
||||
val CMD_IPTABLES_RETURN = " -t nat -A OUTPUT -p tcp -d 0.0.0.0 -j RETURN\n"
|
||||
val CMD_IPTABLES_REDIRECT_ADD_SOCKS = " -t nat -A OUTPUT -p tcp " + "-j REDIRECT --to 8123\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"
|
||||
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
|
||||
|
||||
private val mStartForegroundSignature = Array[Class[_]](classOf[Int], classOf[Notification])
|
||||
@@ -298,9 +298,9 @@ class ShadowsocksNatService extends Service with BaseService {
|
||||
}
|
||||
|
||||
def setupIptables: Boolean = {
|
||||
val init_sb = new StringBuilder
|
||||
val http_sb = new StringBuilder
|
||||
init_sb.append(Utils.getIptables).append(" -t nat -F OUTPUT\n")
|
||||
val init_sb = new ArrayBuffer[String]
|
||||
val http_sb = new ArrayBuffer[String]
|
||||
init_sb.append(Utils.getIptables + " -t nat -F OUTPUT")
|
||||
val cmd_bypass = Utils.getIptables + CMD_IPTABLES_RETURN
|
||||
if (!InetAddressUtils.isIPv6Address(config.proxy.toUpperCase)) {
|
||||
init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "-d " + config.proxy))
|
||||
@@ -308,16 +308,13 @@ class ShadowsocksNatService extends Service with BaseService {
|
||||
init_sb.append(cmd_bypass.replace("0.0.0.0", "127.0.0.1"))
|
||||
if (hasRedirectSupport) {
|
||||
init_sb
|
||||
.append(Utils.getIptables)
|
||||
.append(" -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to ")
|
||||
.append(DNS_PORT)
|
||||
.append("\n")
|
||||
.append(Utils.getIptables + " -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to "
|
||||
+ DNS_PORT)
|
||||
} else {
|
||||
init_sb
|
||||
.append(Utils.getIptables)
|
||||
.append(" -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:")
|
||||
.append(DNS_PORT)
|
||||
.append("\n")
|
||||
.append(Utils.getIptables
|
||||
+ " -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:"
|
||||
+ DNS_PORT)
|
||||
}
|
||||
if (config.isGFWList) {
|
||||
val chn_list: Array[String] = getResources.getStringArray(R.array.chn_list)
|
||||
@@ -354,10 +351,8 @@ class ShadowsocksNatService extends Service with BaseService {
|
||||
}
|
||||
}
|
||||
}
|
||||
val init_rules: String = init_sb.toString()
|
||||
Console.runRootCommand(init_rules)
|
||||
val redt_rules: String = http_sb.toString()
|
||||
Console.runRootCommand(redt_rules)
|
||||
Console.runRootCommand(init_sb.toArray)
|
||||
Console.runRootCommand(http_sb.toArray)
|
||||
true
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user