What's new

DNScrypt dnscrypt installer for asuswrt

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

I'm using OpenDNS (Now owned by Cisco) for years. The OpenDNS home server only protects agains malicious sites, the OpenDNS Family server blocks all adult content. OpenDNS is fast, reliable and has servers all over the globe, the one closest to you is automatically used when resolving an address.
 
Unfortunately OpenDNS does not at the same time can be used with DNSSEC. Or is known by anyone here a way?
 
As far a I know DNSCRYPT can perfectly work together (point 3) with DNSSEC, but unfortunately OpenDNS hasn't implemented DNSSEC yet and I would be cheering if they ever will. When DNSCRYPT was deployed, OpenDNS was quite clear "No, we won't implement it. Years ago, after many requests, they shifted to 'We're considering it', but ever since Cisco has acquired OpenDNS, rebranded OpenDNS to Cisco Umbrella, nobody ever mentioned DNSSEC in the context of OpenDNS/Umbrella anymore. Until recently:

Currently, Cisco Umbrella does not support DNSSEC. Any DNS lookup that is answered by Umbrella will strip DNSSEC-related data from the query.
(source)

Cisco is all for DNSSEC so maybe, one day, even home users might benefit of the security provided by DNSSCRYPT and DNNSEC combined, using OpenDNS.

I've been using OpenDNS for years and still do. Whenever benchmarked they're still among the fastest and the optional (free) content filtering (though DNS) is a great added value especially when you have kids around. They're reliable, fast and well spread across the planet.

TL;DR: No, you currently can't use DNSSEC with OpenDNS/Umbrella. Everything related to DNSSEC is stripped away of your DNS queries. Having said that you can use OpenDNS servers without issues, it's just not using DNSSEC.
 
Last edited by a moderator:
I'm using OpenDNS (Now owned by Cisco) for years. The OpenDNS home server only protects agains malicious sites, the OpenDNS Family server blocks all adult content. OpenDNS is fast, reliable and has servers all over the globe, the one closest to you is automatically used when resolving an address.

Thanks for the quick reply, sorry about late replying was rushing yesterday, should have waited until today to post to be fair.

I reinstalled again this morning and just wondering on some of the install questions if anyone could explain.

After running the Curl command for installation it gives two options
- Install dnscrypt and (P)RNG
- Install (P)RNG only

1) What is (P)RNG? ( I choose option 1 as wanted dnscrypt obviously)

2) I’m assuming when it asks ‘Please choose 2nd server or press n to skip’ people choose a second one? I suspect incase first one went down or something similar.

3) When it asks ‘Do you want to setup OpenDNS account ip update’, I have an OpenDNS account I created two days ago, I assume by choosing yes it will keep my dynamic IP address updated with OpenDNS? if i choose no how does it then work?

4) Do you want to redirect all DNS resolutions on your network through encrypt? I choose yes first and no second time installed as wanted to play about to see what settings there were, what does this setting exactly means and do? I thought by choosing no it would only use the the dns server I selected for specified clients, but it seems not.

5) When it mentioned ‘Available random number generator providers’
- HAVEGED (Preferred if you do not have a HW RNG)
- RNGD (Preferred if you have a HW RNG)

Don’t know what either mean and which one I need to select? (i choose first option)

6) What happens if dns server i choose went down, i know there is option to choose second dns server in installation as backup, ie. in WAN > Choose DNS server (currently set to no) would i be rite in thinking i could have a backup dns ie. google dns for example and add dns server IPs under WAN > DNS Server.? I'm a bit confused as in LAN and WAN there is option to enter DNS server stuff and would like to better understand the difference between the two under WAN and LAN

Sorry for multiple questions i just like to ensure i understand what i'm doing and for future reference.

Cheers.
 
Thanks for the quick reply, sorry about late replying was rushing yesterday, should have waited until today to post to be fair.
No worries, we (at least I) don't have deadlines or a timeline when someone needs to have responded.
1) What is (P)RNG? ( I choose option 1 as wanted dnscrypt obviously)
PRNG is the abbreviation for Pseudo Random Number Generation. It's used to generate random numbers for secure keys etc. More info: https://www.random.org/randomness/
2) I’m assuming when it asks ‘Please choose 2nd server or press n to skip’ people choose a second one? I suspect incase first one went down or something similar.
Yes, this to select a backup DNS-server. However, OpenDNS have many servers and the likelyhood of all of them going down is basically zero, so I haven't selected a second one and pressed n to skip.
3) When it asks ‘Do you want to setup OpenDNS account ip update’, I have an OpenDNS account I created two days ago, I assume by choosing yes it will keep my dynamic IP address updated with OpenDNS? if i choose no how does it then work?
Correct. If you fill in your OpenDNS credentials your IP will be automatically updated. If you have customized settings in your OpenDNS Dashboard (or Umbrella Dashboard, as it's owned by Cisco now), it needs to know your current IP to apply custom rules. If you choose no, only the default settings for OpenDNS will be used and you will be using OpenDNS as any user without an account.
4) Do you want to redirect all DNS resolutions on your network through encrypt? I choose yes first and no second time installed as wanted to play about to see what settings there were, what does this setting exactly means and do? I thought by choosing no it would only use the the dns server I selected for specified clients, but it seems not.
This is a question I'm currently struggling with myself (see one of my previous unanswered posts) as well as the post I just made in the AB-Solution thread. In my opinion, if you choose yes, all traffic should be routed through DNSCrypt, but I'm not sure either, so hopefully somebody else (like @kvic or @bigeyes0x0) can shed some light on that.
5) When it mentioned ‘Available random number generator providers’
- HAVEGED (Preferred if you do not have a HW RNG)
- RNGD (Preferred if you have a HW RNG)

Don’t know what either mean and which one I need to select? (i choose first option)
See answer to question 1. This what (P)RNG refers to. There are hardware solutions for random number generations, that's when you would choose the second option. If not, HAVEGED is the way to go. HAVEGE is an algorithm for generating unpredictable random number sequences. HAVEGED is the daemon that uses the algorithm. More info: http://www.issihosts.com/haveged/
6) What happens if dns server i choose went down, i know there is option to choose second dns server in installation as backup, ie. in WAN > Choose DNS server (currently set to no) would i be rite in thinking i could have a backup dns ie. google dns for example and add dns server IPs under WAN > DNS Server.? I'm a bit confused as in LAN and WAN there is option to enter DNS server stuff and would like to better understand the difference between the two under WAN and LAN
As mentioned before, the OpenDNS IP's aren't pointing to a single server. It always tries to find the one nearest to you and if one goes done, traffic will be rerouted to the second closest. OpenDNS's NOC is operational 24/7. As for the settings: my LAN DNS settings are empty, only the option to have the router announce itself as DNS server is switched on. On my WAN pages I have both OpenDNS servers specified (208.67.222.222 and 208.67.220.220), assuming that if DNSCRYPT dies for some reason, it uses the ones specified on the WAN page. The local DNS server (the router itself) is primarily being used for resolving clients on the local network (i.e. router.lan, laptop.lan etc), which need to be configured on the LAN page as well. I assume solutions like AB-Solution and Pixelserv-TLS use the local DNS-server as well. As you see, I make some assumptions, as I don't have all the knowledge either, but that's how my setup is working currently. However, there are several people around with way more knowledge than I have, which undoubtly will correct me if and where I'm wrong.
Sorry for multiple questions i just like to ensure i understand what i'm doing and for future reference.
Sounds familiar. I hate to follow tutorials or instructions without knowing what I'm actually doing and how it could influence other functionality.
Most welcome and have a great day :)

Marco
 

4) Do you want to redirect all DNS resolutions on your network through encrypt? I choose yes first and no second time installed as wanted to play about to see what settings there were, what does this setting exactly means and do? I thought by choosing no it would only use the the dns server I selected for specified clients, but it seems not.
This is a question I'm currently struggling with myself (see one of my previous unanswered posts) as well as the post I just made in the AB-Solution thread. In my opinion, if you choose yes, all traffic should be routed through DNSCrypt, but I'm not sure either, so hopefully somebody else (like @kvic or @bigeyes0x0) can shed some light on that.


It adds these:
Code:
  fw-rules)
    iptables -t nat -A PREROUTING -i br0 -p udp --dport 53 -j DNAT --to $(nvram get lan_ipaddr)
    iptables -t nat -A PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to $(nvram get lan_ipaddr)

which essentially forces any port 53 i.e. DNS, bound traffic to use the router. Pulled from source of this installer.
https://github.com/thuantran/dnscrypt-asuswrt-installer/blob/master/gen/manager
 
@MarCoMLXXV

Thanks for the very informative reply. Really has helped. I've set it up done some dns leak tests and showing OpenDNS as it should. Did not bother with the providing opendns account info as not interested in protection to filter bad stuff out etc.

@Jack Yaz

To be honest i still don't understand what you are saying, i checked what port 53 is used for and it's used for dns, but still don't understand what you mean and how it works.

Thanks for all the help.
 
@MarCoMLXXV

Thanks for the very informative reply. Really has helped. I've set it up done some dns leak tests and showing OpenDNS as it should. Did not bother with the providing opendns account info as not interested in protection to filter bad stuff out etc.

You're welcome. As for OpenDNS, it will still provide it's basic protection anyway, you just won't have the possibility to manually configure what to block and what not (and some stats I've never looked at). To be honest, I'm not even completely sure whether these features are still available to free accounts. I have a premium account, but haven't been charged for years now, but still have all the functionality, so that's why I enter my credentials. Most important is that they offer a free, fast, secure and highly reliable DNS-service. Should you ever change your mind, just re-run the install script to change the options. If you login to the dashboard at OpenDNS/Umbrella you should be able to see which options are available.

As for @Jack Yaz' comment: these two lines are the lines in the install script which are added to IPTables (the firewall) which will cause all traffic to be routed through DNSCRYPT. If you answered 'Yes', at the question in your post listed under bullet 4, these rules are already active and there's no use entering them manually.
 
One thing i notice even though everything works as should and no issue for me as don't want filtering on anyway but not great for people with kids i guess , i notice when i do reboot of router, even though logs confirm opendns ip updated, i was able to access blocked websites for several minutes after reboot before the filtering kicked in on opendns.

Not what i expected to be fair but still all good none of the less, i assume opendns take several minutes to update via it's global servers or whatever. It's all about having the dnscrypt for me and nothing else, hope cisco one day in the future adds dnssec support, would make it more appealing.

Cheers
 
Last edited:
If you didn't enter your credentials, you shouldn't see that confirmation in the logs. As far as I know, DNSCrypt is started before WAN comes up, before any IP is handed out, so I am actually surprised how you managed to retrieve anything. As you can see in an excerpt of my (Papertrail) logs:

Aug 25 09:57:13 dMP17 marco: dnscrypt-proxy started for boot services
Aug 25 09:57:13 dMP17 rc_service: udhcpc 606:notify_rc stop_upnp
Aug 25 09:57:13 dMP17 rc_service: waitting "start_firewall" via udhcpc ...
Aug 25 09:57:13 dMP17 kernel: csw_retry 100
Aug 25 09:57:13 dMP17 kernel: Initializing USB Mass Storage driver...
Aug 25 09:57:13 dMP17 kernel: usbcore: registered new interface driver usb-storage
Aug 25 09:57:13 dMP17 kernel: USB Mass Storage support registered.
Aug 25 09:57:15 dMP17 kernel: Tuxera FAT 12/16/32 driver version 3015.1.29.5_1 [Flags: R/W MODULE].
Aug 25 09:57:15 dMP17 kernel: Built against headers 2.6.36.4brcmarm #1 SMP PREEMPT Wed Dec 2 11:17:39 CST 2015 arm
Aug 25 09:57:15 dMP17 kernel: Running on kernel 2.6.36.4brcmarm #2 SMP PREEMPT Fri Aug 18 17:48:21 EDT 2017 armv7l
Aug 25 09:57:15 dMP17 kernel: Tuxera NTFS driver 3015.1.29.8_1 [Flags: R/W MODULE].
Aug 25 09:57:15 dMP17 WAN_Connection: WAN was restored.
Aug 25 09:57:15 dMP17 kernel: Tuxera HFS+ driver 3014.7.28
Aug 25 09:57:15 dMP17 kernel: ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
Aug 25 09:57:15 dMP17 kernel: ehci_hcd 0000:00:0b.1: EHCI Host Controller
Aug 25 09:57:15 dMP17 kernel: ehci_hcd 0000:00:0b.1: new USB bus registered, assigned bus number 1
Aug 25 09:57:15 dMP17 kernel: ehci_hcd 0000:00:0b.1: irq 111, io mem 0x18021000
Aug 25 09:57:15 dMP17 marco: OpenDNS: Update IP succeeded
Aug 25 09:57:15 dMP17 kernel: ehci_hcd 0000:00:0b.1: USB 0.0 started, EHCI 1.00
Aug 25 09:57:15 dMP17 kernel: hub 1-0:1.0: USB hub found
Aug 25 09:57:15 dMP17 kernel: hub 1-0:1.0: 2 ports detected
Aug 25 09:57:15 dMP17 dnsmasq-dhcp: DHCPREQUEST(br0) 192.168.1.32 xx:xx:xx:xx:xx:xx

Are you sure it wasn't something cached by your browser?

If you want to, you can test it by clearing your browser of any historical, cached data (on Chrome it's <CTRL><SHIFT><DEL> for example), reboot your router, and try to visit http://www.internetbadguys.com (one of OpenDNS testpages). I'd be really surprised if you're able to reach the page, without being redirected to an OpenDNS blocking page, with a warning that you're trying to retrieve a page for phising, and that OpenDNS has blocked access to it.

Please share your results.
 
i cant post log as when i do forum is saying i'm blocked.
 
ok did another reboot and same thing, was able to access blocked site for i dunno maybe 10 minutes then i was blocked, yet oddly enough i couldn't access http://www.internetbadguys.com/ immediately , i definitely cleared cache in browser and restarted browser prior to trying, i tried chrome and firefox on mac.

Maybe it's because my nat-start and firewall-start is last in log as in started last? I've updated router a few times and not done a full reset so maybe i just need to do that as it's been a few months at least.

There's allot in my log but last bit shows this:

Code:
Aug 27 14:04:14 John: AB-Solution created br0:pixelserv 192.168.42.2 via /jffs/scripts/wan-start
Aug 27 14:04:14 kernel: usbcore: registered new interface driver asix
Aug 27 14:04:15 kernel: scsi0 : usb-storage 1-2:1.0
Aug 27 14:04:15 kernel: usbcore: registered new interface driver cdc_ether
Aug 27 14:04:15 kernel: usbcore: registered new interface driver rndis_host
Aug 27 14:04:15 kernel: cdc_ncm: 14-Mar-2012
Aug 27 14:04:15 kernel: usbcore: registered new interface driver cdc_ncm
Aug 27 14:04:15 WAN_Connection: WAN was restored.
Aug 27 14:04:15 kernel: usbcore: registered new interface driver cdc_wdm
Aug 27 14:04:15 kernel: usbcore: registered new interface driver qmi_wwan
Aug 27 14:04:15 kernel: cdc_mbim: loaded
Aug 27 14:04:15 kernel: usbcore: registered new interface driver cdc_mbim
Aug 27 14:04:15 John: dnscrypt-proxy started for boot services
Aug 27 14:04:16 kernel: scsi 0:0:0:0: Direct-Access     SanDisk  Extreme          0001 PQ: 0 ANSI: 6
Aug 27 14:04:16 kernel: sd 0:0:0:0: [sda] 61341696 512-byte logical blocks: (31.4 GB/29.2 GiB)
Aug 27 14:04:16 kernel: sd 0:0:0:0: [sda] Write Protect is off
Aug 27 14:04:16 kernel: sd 0:0:0:0: [sda] Assuming drive cache: write through
Aug 27 14:04:16 kernel: sd 0:0:0:0: Attached scsi generic sg0 type 0
Aug 27 14:04:16 kernel: sd 0:0:0:0: [sda] Assuming drive cache: write through
Aug 27 14:04:16 kernel:  sda: sda1
Aug 27 14:04:16 kernel: sd 0:0:0:0: [sda] Assuming drive cache: write through
Aug 27 14:04:16 kernel: sd 0:0:0:0: [sda] Attached SCSI removable disk
Aug 27 14:04:16 start_nat_rules: apply the nat_rules(/tmp/nat_rules_eth0_eth0)!
Aug 27 14:04:16 custom_script: Running /jffs/scripts/nat-start
Aug 27 14:04:17 start_nat_rules: apply the nat_rules(/tmp/nat_rules_eth0_eth0)!
Aug 27 14:04:17 custom_script: Running /jffs/scripts/nat-start
Aug 27 14:04:18 rc_service: udhcpc 753:notify_rc stop_upnp
Aug 27 14:04:18 rc_service: waitting "start_firewall" via udhcpc ...
Aug 27 14:04:18 hotplug[896]: USB ext4 fs at /dev/sda1 mounted on /tmp/mnt/NetworkUSB
Aug 27 14:04:18 usb: USB ext4 fs at /dev/sda1 mounted on /tmp/mnt/NetworkUSB.
Aug 27 14:04:18 kernel: EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: user_xattr
Aug 27 14:04:18 custom_script: Running /jffs/scripts/post-mount (args: /tmp/mnt/NetworkUSB)
Aug 27 14:04:18 rc_service: service 929:notify_rc restart_dnsmasq
Aug 27 14:04:18 rc_service: waitting "start_firewall" via udhcpc ...
Aug 27 14:04:19 kernel: nf_conntrack_rtsp v0.6.21 loading
Aug 27 14:04:19 kernel: nf_nat_rtsp v0.6.21 loading
Aug 27 14:04:19 custom_script: Running /jffs/scripts/firewall-start (args: eth0)
Aug 27 14:04:19 dnsmasq[521]: exiting on receipt of SIGTERM
Aug 27 14:04:19 custom_script: Running /jffs/scripts/dnsmasq.postconf (args: /etc/dnsmasq.conf)
Aug 27 14:04:20 John: AB-Solution added entries via /jffs/scripts/post-mount
Aug 27 14:04:20 rc_service: hotplug 896:notify_rc restart_nasapps
Aug 27 14:04:20 rc_service: waitting "restart_dnsmasq" via  ...
Aug 27 14:04:20 John: AB-Solution started rc.unslung via /jffs/scripts/services-start
Aug 27 14:04:21 John: AB-Solution added entries via ab_dnsmasq_postconf.sh
Aug 27 14:04:21 John: Started pixelserv-tls (AB-Solution) from /jffs/scripts/services-start.
Aug 27 14:04:21 pixelserv[1045]: pixelserv-tls version: v35.HZ12.Kj compiled: May 30 2017 22:33:13 options: 192.168.42.2
Aug 27 14:04:21 pixelserv[1045]: Listening on :192.168.42.2:80
Aug 27 14:04:21 pixelserv[1045]: Listening on :192.168.42.2:443
Aug 27 14:04:21 John: AB-Solution linked ab_dnsmasq_postconf.sh via /jffs/scripts/dnsmasq.postconf
Aug 27 14:04:22 iTunes: daemon is stopped
Aug 27 14:04:22 FTP_Server: daemon is stopped
Aug 27 14:04:23 Samba_Server: smb daemon is stopped
Aug 27 14:04:23 John: OpenDNS: Update IP succeeded
Aug 27 14:04:23 kernel: gro disabled
Aug 27 14:04:24 Timemachine: daemon is stopped
Aug 27 14:04:25 rc_service: udhcpc 753:notify_rc start_upnp
Aug 27 14:04:25 rc_service: waitting "stop_upnp" via udhcpc ...
Aug 27 14:04:27 ddns_update: ez-ipupdate: starting...
Aug 27 14:04:27 ntp: start NTP update
Aug 27 14:06:09 rc_service: ntp 1096:notify_rc restart_upnp
Aug 27 14:06:09 ddns_update: connected to dynupdate.no-ip.com (8.23.224.120) on port 80.
Aug 27 14:06:09 ddns_update: request successful
Aug 27 14:06:09 ddns_update: asusddns_update: 0
Aug 27 14:06:10 rc_service: ntp 1096:notify_rc restart_diskmon
Aug 27 14:06:10 disk_monitor: Finish
Aug 27 14:06:11 John: Start dnscrypt-proxy for normal operations
Aug 27 14:06:12 ddns: ddns update ok
Aug 27 14:06:12 disk_monitor: be idle
Aug 27 14:06:14 kernel: * Make sure sizeof(struct sw_struct)=160 is consistent
Aug 27 14:06:15 kernel: IDPfw: TrendMicro forward module ver-1.0.34
Aug 27 14:06:15 kernel: IDPfw: Apply module param dev_wan=eth0
Aug 27 14:06:15 kernel: IDPfw: Apply module param sess_num=30000
Aug 27 14:06:15 kernel: IDPfw: Init chrdev /dev/idpfw with major 191
Aug 27 14:06:15 kernel: IDPfw: IDPfw is ready
Aug 27 14:06:15 kernel: sizeof forward param = 160
Aug 27 14:06:20 rc_service: udhcpc 753:notify_rc start_firewall
Aug 27 14:06:20 dhcp_client: bound 84.102.54.90 via 84.102.32.1 during 900 seconds.
Aug 27 14:06:21 start_nat_rules: apply the nat_rules(/tmp/nat_rules_eth0_eth0)!
Aug 27 14:06:21 custom_script: Running /jffs/scripts/nat-start
Aug 27 14:06:22 custom_script: Running /jffs/scripts/firewall-start (args: eth0)
 
Last edited:
You're currently usings Johns' fork? If so, I believe he has dnscrypt integrated in his fork, if I'm not mistaking, yet you're posting in @bigeyes0x0 Installer for dnscrypt thread, for firmware where it's not integrated. That might make it a bit more difficult to troubleshoot, as I don't know (I've only been on John's fork for a short while, but missed the Trend Micro functionality even though it's closed sourced) when dnscrypt is started in John's fork. If you installed using the info in the first post, while it's available in John's fork, it might interfere and complicate things even more. It could be, for example, due to different timing, there's a time window when you aren't protected (which shouldn't be the case). Calling @john9527 for assistance as he knows best. My knowledge doesn't come close to his on this matter.

As for your comment regarding switching firmware and not resetting and/or not re-configuring: personally I prefer to start fresh (factory reset, power cycle, install new firmware, reset default, power cycle, let it settle for a while before starting to configure - yeah I know, too much time on my hands) whenever I a.) install someone else's fork or b.) an update of the current firmware which has several changes that could affect stability of the router. I can't say every 'point' release makes me start over fresh, but for example the changes between RMerlins 380.66 and 380.68 are huge and where definitely reason for me to start fresh, so if anything out of the ordinary occurs, I can at least rule out it's caused by leftovers from previous installs and I can start looking for the cause elsewhere.

But that's just my way of doing it. Many others here just flash updates over updates over updates and never had any issues (at least they say so), but looking at the huge amount of posts in the release threads with the weirdest issues no one else reports... well, draw your own conclusions. Better safe than sorry starting over from the beginning.
 
@MarCoMLXXV

I'm not using Johns fork, i'm using asuswrt-merlin 380.68 (latest version) which does not have it integrated.

Will start from beginning when i got time next week, all works otherwise, ipleak and dnsleaktest both show opendns.

ab-solution still works, when i do nslookup -type=txt debug.opendns.com in terminal it shows dnscrypt enabled so all seems ok except for that niggle but a fresh install might be the solution.

Cheers.
 
Last edited:
Ah, I see. Sorry, saw so many mentions of John in your logfiles, I assumed you were on John's fork. My bad. It took me some time, but now I get it: John is most likely @Netbug's alias irl. Had to double check my own logs to verify. Nevertheless, given the odd behavior, I think starting fresh would be a good plan!
 
@bigeyes0x0 , @Adamm , @thelonelycoder

Hey guys, just want to confirm there's no issue installing this script on an RT-AC68u with Skynet and AB-Solution currently running 380.68?

TM Parental Controls and DNS Filtering are off, I'm only using the Network Protection feature under AiProtection.

I have a free OpenDNS account and using their DNS servers under WAN.

After installing this script and using my openDNS account, should I keep their IPs under WAN or clear those fields?

thanks guys, really love these scripts, keep up the great work!
 
Hey guys, just want to confirm there's no issue installing this script on an RT-AC68u with Skynet

Shouldn't be any conflicts on my end.
 
Hey guys, just want to confirm there's no issue installing this script on an RT-AC68u with Skynet and AB-Solution currently running 380.68?
About half of the discussion on this thread mention AB-Solution runs alongside it.
I'm sure it works well.
 

Latest threads

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top