Super network tunnel client/server for X86/X64 Linux How To

Different
  Can communicate with windows/ Linux client, different with the windows version server is Linux server have not a built-in FTP server,this is because Linux already have a file transfer server, so if you want to access the Linux server files,you can manually add SCP or FTP client to client's tunnel, then use 127.0.0.2 IP address in FTP client to access server's file system.

Requirements
 
Glibc 2.0 or above
  libgconv.so
  100M disk space
  128M memory or above
  X86/X64 version Linux
  If you install at pure 64 bit Linux, please check your Linux version have installed 32 bit program runtime library, if not, please install 32 bit program runtime package (such as libc6-i386/ia32-libs
for ubuntu amd X64, step is 1.sudo apt-get install libstdc++6 2.sudo apt-get install ia32-libs, Cent OS please use yum install glibc.i686 glibc-devel.i686).

Server Install
  Just tar zxvf snt.tar.gz
 Can install as root users (if you want SNT server listen at 80/443 port, you need install as root users) or other users.
  Such as install as root.
    cd /home/root/
    tar zxvf snt.tar.gz
  If you want to SNT server started with system, add some script at /etc/rc.d/rc.local (for redhat linux)
  vi /erc/rc.d/rc.local


Server Component
  Start and stop services shell scripts (startsnt.sh and stopsnt.sh)
   Server configuration file (tunnelserver.ini)
   Server configuration tool (snttool)

   Start super network tunnel linux (SNT) server:
     Use startsnt.sh to start SNT, if you want to SNT listen at port 80 and 443, you must have root user privileges, otherwise only listen at the port more than 1024. SNT server run as daemon process.

   Stop super network tunnel linux (SNT) server:
     Use stopsnt.sh to start SNT.

Register Server
 After you purchase a license, you can use snttool to active SNT server.
   In the prompt window, direct enter the registered user name and registration code (copy and paste it), or saved registration code to a file, such as license.txt (not need registered user name), and in the registration window, enter the file name license.txt.

Server Configure

 (1) Use snttool to create the basic configure, include HTTPS listen port, http tunnel listen port, admin user password etc.
such as

 
  (2) Use startsnt.sh start super network tunnel server.
  (3) Use windows version client connect to server, click 'Setup'->'Remote Manager Server' menu, remote add server WAN users and server local LAN share users.

 
  (4) If you need additional configuration, you can directly modify the tunnelserver.ini file, and then restart the server.

Configuration file tunnelserver.ini describe.

[server_users]
#Server WAN users config, use windows version client remote config.
user_list=dHVubmVsdXNlcwEAAAAGAAAAAgAAAGExAgAAAGExAAAAAAAAAAABAQIAAABhMgQAAABhMTI0JgIAAAAAAAABAAIAAABhMwIAAABhMwAAAAAAAAAAAQACAAAAYTUCAAAAYTUAAAAAAAAAAAEAAgAAAGE2AgAAAGE2AAAAAAAAAAABAQIAAABhNwIAAABhNwAAAAAAAAAAAQA=

[client_users]
#LAN share users config, use windows version client remote config.
allowip=
denyip=
user_list=
enabled=1

[server]
ports=MTEwDQo0NDMNCg==
#listen HTTPS ports, use snttool to configure
httptunnelport=80
#listen HTTP tunnel port, use snttool to configure
enablehttptunnel=1
#enable http tunnel, 1 enable 0 disable
password=eAEzNDIGAAEtAJc=
#server admin user password, use sntttool to configure.
listenip=
#Server bind at local IP addesses, multiple IP use comma separate, empty mean bind at any IP.
#Note: Server bind port use so_reuseaddr option, so if you have other server (also use so_reuseaddr option) listen on same port, it can also working in this case.
#Such as, you have a router device, first start a http server (listen only at LAN address 80, use so_reuseaddr option) for remote configure.
#Next install SNT server at your router device, then start SNT server (listen at any IP address 80) after http server started (Add it at /etc/rc.d/rc.local).
#If LAN user access device port 80, use LAN address, it will access router remote configure website, if WAN user access device port 80, use WAN address, and it will access SNT server 80 port.
#Another way is to use Apache reverse proxy module.

logtodisk=0
#Log connect log to disk, format is yyyymmdd.log, 1 enable 0 disable
acceptip=
#Only accept these IP address connect to server, support , and *, such as 122.1.5.*,122.1.6.*, empty mean allow all.
debugdata=0
#Log detail transfer packet data into log file, 1 enable 0 disable
allowclientmodifypwd=1
#Allow client remote manager his password, 1 enable 0 disable, default is 0
maxconcurrentthreads=400
#max concurrent threads for https connect, default 400, recommend to 400

[dial]
updatedns=1
#If your server internet ip is not static, suggest you request a free second level domain name for server ip,
#then your config the below option,you can see help file for detail. Server can automatically updates your dynamic IP address every time it changes on one dynamic DNS services .
# This allows you client connect to the servers running on your own computer using a fully qualified domain name (e.g. myhost.dyndns.org, where myhost is a name of your choice). Since your host name never changes it makes accessing your servers much easier than using your IP address which changes each time you reconnect. This is also useful when you want to remotely control your PC.
# 1 autoupdate it 0 disable
updatedata=https://nic.ChangeIP.com/nic/update?u=your_accountname&p=your_password&hostname=your_domainname
# dns update data


[portmaping]
portrules=MjIyPTIyMi4yLjEuMjozMzMz
#server port map rules, format is base64(port=dest_machine_hostname:port)

Some skills
  If you do not know how to create tunnelserver.ini file, you can use the windows version of the SNT server UI to config it, when configuration completed, copy tunnelserver.ini to the corresponding directory.

Super Network Tunnel Client Command LINUX SDK is free, but requires you to have a registered version of the SNT server to publish, if you do not have a registered version of the snt server, you can not integrate this into your program.

In this time, you can use client portable version to launch client, client configure file is tunnelclient.ini,

Client command SDK release file list is:
  tunnelclientservice_portable.exe (linux version is sntclient_linux)
  tunnelclient.ini

Run command is
  tunnelclientservice_portable.exe portable.(use default configuration in tunnelclient.ini)
  Or
  tunnelclientservice_portable.exe portable -clientpwd="new_client_password" -proxypwd="new_proxy_password" -proxyusername="new_proxy_username"  -proxydomain="new_proxy_domain"
 (These parameters are optional and will instead of use old param value stored in the tunnelclient.ini)
 Or
 tunnelclientservice_portable.exe portable -clientpwd="new_client_password" -proxypwd="new_proxy_password" -test
 (-test param mean just a test then exit, if connect success, exitcode=0 and write command out 'success'
 else exitcode=1 and write error message command out)

TunnelClient.ini configuration describe
  Warning: The ini use ansi string format, if you original string is unicode or UTF8 format (such as chinese/japanese username, domain name),
  you should convert it to ansi string format or just use it as command line param.(such as use WideCharToMultiByte function)

[dest]
ip=127.0.0.1 #server ip or hostname
port=80 #server port
username= #server username
password=aabcde #server encrypt password, can use command param -clientpwd="new_client_password" to use custom client's password
usecompress=1 #1 use compress
usessl=1 #1 use encrypt
usesocks=1 #1 use a proxy connect to server, 0 direct connect

[server]
debugdata=0 #1 log debug log file
logtodisk=0 #1 write log file
allowserveraccess=1 #1 allow server access client LAN, 0 deny
startftpserver=1 #1 start ftp server, 0 deny

[socks]
item=1 #proxy type, 0 use http connect to server, 1 use http tunnel, 2 socks4a, 3 socks4, 4 socks5
username= #proxy username, ansi string format
password=eAEDAAAAE= #proxy password, can use command line param -proxypwd="new_proxy_password" to use custom new client's proxy password
host= #proxy host
port=6005 #proxy host port
domainname= #NTLM proxy domain name, if not null use NTLM, only for proxy type http CONNECT/http tunnel, ansi string format
ntlmver=1 #0 ntlmv1 1 ntlmv2
addsocks5port=18888 # your client listen socks5 port
useragent=Mozilla/4.0 (compatible; MSIE 8.0; Win32) #http tunnel user agent
addsock5bindip=127.0.0.1 #your client socks5 bind IP address


[portmaping]
portrules=base64(local port=mapping remote IP:port)

The call step is

(1) Use your program config tunnelclient.ini, or can use tunnelclient_runasadmin.exe to create it at first time.
(2) Run tunnelclienservice_portable.exe portable -clientpwd="new_client_password" -proxypwd="new_proxy_password" to launch command SDK or use tunnelclienservice_portable.exe portable to launch command.
Such as use CreateProcess function and dwCreationFlags set to CREATE_NO_WINDOW
(3) Wait local socks5 port ready (check local socks5 listen port) or capture client command line output, the prompt is "Connect to tunnel server success" or "Connect to tunnel server fail".
(4) Make your program use local socks5 proxy (support UDP) or the TCP/UDP port mapping to connect to remote server network via tunnel.
(5) When your program quit, terminate tunnelclienservice_portable.exe process.
Optional step is use -test param do a connect test.

Some skills:
  If you do not know how to create tunnelclient.ini file, you can use the windows version of the SNT client UI to config it,
when configuration completed, copy tunnelclient.ini to the corresponding directory (including the linux version of the SDK can be used this way).