From 9217aee211e118b6021baa66454447abcca0077b Mon Sep 17 00:00:00 2001 From: Max Lv Date: Wed, 5 Jun 2013 14:17:25 +0800 Subject: [PATCH] dnsgw works now --- src/main/assets/arm/tun2socks | Bin 105004 -> 105004 bytes src/main/assets/x86/tun2socks | Bin 158220 -> 158220 bytes src/main/jni/Android.mk | 4 +- src/main/jni/badvpn/base/BLog.c | 14 ++++ src/main/jni/badvpn/base/BLog.h | 8 --- src/main/jni/badvpn/tun2socks/tun2socks.c | 68 ++++++++++++++---- .../github/shadowsocks/ShadowVpnService.scala | 14 +--- 7 files changed, 72 insertions(+), 36 deletions(-) diff --git a/src/main/assets/arm/tun2socks b/src/main/assets/arm/tun2socks index 93b27614ba26bf50e81d8f702367fa19efd523e1..f675a821bf42bc3e1cfdfe4b07b81ef3e00244fa 100755 GIT binary patch delta 21000 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 delta 20645 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 delta 30999 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 +#endif + #ifndef BADVPN_PLUGIN struct _BLog_channel blog_channel_list[] = { @@ -51,12 +55,22 @@ static char *level_names[] = { NULL, "ERROR", "WARNING", "NOTICE", "INFO", "DEBU static void stdout_log (int channel, int level, const char *msg) { +#ifndef ANDROID fprintf(stdout, "%s(%s): %s\n", level_names[level], blog_global.channels[channel].name, msg); +#else + __android_log_print(ANDROID_LOG_DEBUG, "tun2socks", + "%s(%s): %s\n", level_names[level], blog_global.channels[channel].name, msg); +#endif } static void stderr_log (int channel, int level, const char *msg) { +#ifndef ANDROID fprintf(stderr, "%s(%s): %s\n", level_names[level], blog_global.channels[channel].name, msg); +#else + __android_log_print(ANDROID_LOG_ERROR, "tun2socks", + "%s(%s): %s\n", level_names[level], blog_global.channels[channel].name, msg); +#endif } static void stdout_stderr_free (void) diff --git a/src/main/jni/badvpn/base/BLog.h b/src/main/jni/badvpn/base/BLog.h index d3eaf745..d7234cac 100644 --- a/src/main/jni/badvpn/base/BLog.h +++ b/src/main/jni/badvpn/base/BLog.h @@ -40,14 +40,6 @@ #include #include -#ifdef ANDROID -#include - -#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, "tun2socks", __VA_ARGS__)) -#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "tun2socks", __VA_ARGS__)) - -#endif - // auto-generated channel numbers and number of channels #include diff --git a/src/main/jni/badvpn/tun2socks/tun2socks.c b/src/main/jni/badvpn/tun2socks/tun2socks.c index 65febe24..8aeaf5b5 100644 --- a/src/main/jni/badvpn/tun2socks/tun2socks.c +++ b/src/main/jni/badvpn/tun2socks/tun2socks.c @@ -965,7 +965,7 @@ int process_arguments (void) } #ifdef ANDROID - // resolve dnsgw ipaddr + // resolve dnsgw addr if (options.dnsgw) { if (!BAddr_Parse2(&dnsgw, options.dnsgw, NULL, 0, 0)) { BLog(BLOG_ERROR, "dnsgw addr: BAddr_Parse2 failed"); @@ -1179,9 +1179,12 @@ int process_device_dns_packet (uint8_t *data, int data_len) goto fail; } - BAddr local_addr; - BAddr remote_addr; - int is_dns; + static BAddr local_addr; + static BAddr remote_addr; + static int init = 0; + + int to_dns; + int from_dns; int packet_length = 0; uint8_t ip_version = 0; @@ -1215,28 +1218,63 @@ int process_device_dns_packet (uint8_t *data, int data_len) if (checksum_in_packet != checksum_computed) { goto fail; } - - BLog(BLOG_INFO, "UDP: from device %d bytes", data_len); - + // to port 53 is considered a DNS packet - is_dns = udp_header.dest_port == hton16(53); + to_dns = udp_header.dest_port == hton16(53); + + // from port 8153 is considered a DNS packet + from_dns = udp_header.source_port == dnsgw.ipv4.port; // if not DNS packet, just bypass it. - if (!is_dns) { + if (!to_dns && !from_dns) { goto fail; } - // build IP header - ipv4_header.destination_address = dnsgw.ipv4.ip; + // modify DNS packet + if (to_dns) { + BLog(BLOG_INFO, "UDP: to DNS %d bytes", data_len); + + // construct addresses + if (!init) { + init = 1; + BAddr_InitIPv4(&local_addr, ipv4_header.source_address, udp_header.source_port); + BAddr_InitIPv4(&remote_addr, ipv4_header.destination_address, udp_header.dest_port); + } + + // build IP header + ipv4_header.destination_address = dnsgw.ipv4.ip; + ipv4_header.source_address = netif_ipaddr.ipv4; + + // build UDP header + udp_header.dest_port = dnsgw.ipv4.port; + + } else if (from_dns) { + + // if not initialized + if (!init) { + goto fail; + } + + BLog(BLOG_INFO, "UDP: from DNS %d bytes", data_len); + + // build IP header + ipv4_header.source_address = remote_addr.ipv4.ip; + ipv4_header.destination_address = local_addr.ipv4.ip; + + // build UDP header + udp_header.source_port = remote_addr.ipv4.port; + + } + + // update IPv4 header's checksum ipv4_header.checksum = hton16(0); ipv4_header.checksum = ipv4_checksum(&ipv4_header, NULL, 0); - - // build UDP header - udp_header.dest_port = dnsgw.ipv4.port; + + // update UDP header's checksum udp_header.checksum = hton16(0); udp_header.checksum = udp_checksum(&udp_header, data, data_len, ipv4_header.source_address, ipv4_header.destination_address); - + // write packet memcpy(device_write_buf, &ipv4_header, sizeof(ipv4_header)); memcpy(device_write_buf + sizeof(ipv4_header), &udp_header, sizeof(udp_header)); diff --git a/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala index f5818381..b2b2a016 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowVpnService.scala @@ -75,7 +75,6 @@ class ShadowVpnService extends VpnService { val PRIVATE_VLAN_172 = "172.30.254.%d" var conn: ParcelFileDescriptor = null - var udpgw: String = null var notificationManager: NotificationManager = null var receiver: BroadcastReceiver = null var apps: Array[ProxiedApp] = null @@ -203,14 +202,6 @@ class ShadowVpnService extends VpnService { resolved = true } - // Resolve UDP gateway - if (resolved) { - Utils.resolve("u.maxcdn.info", enableIPv6 = false) match { - case Some(host) => udpgw = host - case None => resolved = false - } - } - if (resolved && handleConnection) { handler.sendEmptyMessageDelayed(MSG_CONNECT_SUCCESS, 300) } else { @@ -259,7 +250,6 @@ class ShadowVpnService extends VpnService { .setMtu(VPN_MTU) .addAddress(localAddress.format(1), 24) .addDnsServer("8.8.8.8") - .addDnsServer("8.8.4.4") if (InetAddressUtils.isIPv6Address(config.proxy)) { builder.addRoute("0.0.0.0", 0) @@ -312,13 +302,13 @@ class ShadowVpnService extends VpnService { val cmd = (BASE + "tun2socks --netif-ipaddr %s " // + "--udpgw-remote-server-addr %s:7300 " - + "--dnsgw 127.0.0.1:8153 " + + "--dnsgw %s:8153 " + "--netif-netmask 255.255.255.0 " + "--socks-server-addr 127.0.0.1:%d " + "--tunfd %d " + "--tunmtu %d " + "--pid %stun2socks.pid") - .format(localAddress.format(2), config.localPort, fd, VPN_MTU, BASE) + .format(localAddress.format(2), localAddress.format(1), config.localPort, fd, VPN_MTU, BASE) Log.d(TAG, cmd) System.exec(cmd) }