Skip to content
A DNS forwarder using Shadowsocks as the server
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
shadowdns fix TCP DNS parsing Jun 12, 2014
tests init Jun 11, 2014
CHANGES update shadowsocks to 2.0.4 Jun 13, 2014
LICENSE init Jun 11, 2014 Merge remote-tracking branch 'origin/master' Jun 12, 2014
README.rst update Jun 12, 2014
config.json init Jun 11, 2014 update shadowsocks to 2.0.4 Jun 13, 2014 add TCP relay Jun 12, 2014


PyPI version Build Status

A DNS forwarder using Shadowsocks as the server.

ShadowDNS creates a DNS server at localhost.

Experimental; use with caution.



brew install swig
git clone
cd M2Crypto
pip install .
pip install shadowdns


Install M2Crypto (Google an M2Crypto Windows installer for your python version and install it. Might be complicated, need someone to write a help here).

easy_install pip
pip install shadowdns

Debian / Ubuntu:

apt-get install python-pip python-m2crypto
pip install shadowdns


yum install m2crypto python-setuptools
easy_install pip
pip install shadowdns


Create a config file /etc/shadowdns.json (or put it in other path). Example:

    "local_address": "",

Explanation of the fields:

Name Explanation
server the address your server listens
server_port server port
local_address the address your local listens
password password used for encryption
method encryption method, "aes-256-cfb" is recommended
dns DNS server to use

Run sudo ssdns -c /etc/shadowdns.json on your local machine.

Set your DNS to



Bugs and Issues

Please visit Issue Tracker

Mailing list:

You can’t perform that action at this time.