Synchronet Version 3 and TCP/IP
Answers to Frequently Asked Questions


Table of Contents:


Question:
What inbound ports do I need to open in my firewall?

Answer:
Depends on which Synchronet servers and services you wish to make available to Internet clients and which ports you have configured those servers and services to listen on.

The default Synchronet installation enables servers and services on the following ports:

ProtocolPortComments
TelnetTCP 23For Telnet logins (highly recommended)
RLoginTCP 513Optional for quick-login from RLogin clients (e.g. SyncTerm)
SMTPTCP 25Necessary for receiving Internet e-mail and inter-bbs instant messages
POP3TCP 110Allows BBS users to check their e-mail using standard Internet mail clients (e.g. Outlook Express)
FTPTCP 21Allows access to the BBS file/download areas using a standard FTP client
HTTPTCP 80Required for access to the BBS's web server
NNTPTCP 119Allows BBS users to read and post messages using standard news readers/clients
GopherTCP 70Archaic protocol allows reading of messages and other BBS info
FingerTCP 79Allows remote querying of BBS user info, who's online, and other BBS info
FingerUDP 79For use with the Synchronet inter-bbs instant message service
IRCTCP 6667Allows Internet Relay Chat (IRC) clients to connect to your BBS

Enabling connectivity to Synchronet through your firewall is no different than enabling connectivity to any other TCP/IP server. Follow your firewall documentation for forwarding or opening ports for TCP/IP servers located "behind" the firewall. Your firewall may have the option of placing the entire BBS computer in a "DMZ" (opening all its ports to the public Internet), but doing so is not normally recommended.


Question:
How come my friends can't connect to my BBS at my 192.168.x.x, 172.[16-31].x.x, or 10.x.x.x IP address?

Answer:
The IP address ranges listed above are reserved for use in private networks and are not publicly addressible from the Internet. See this document for technical details.

You do not want to advertise this IP address to the public since it is useless to anyone outside of your own private/local area network (LAN). IP addresses in these ranges are typically assigned to your computer (using DHCP) by your router/firewall device to allow multiple computers on your private network to share the same public IP address using a mechanism known as Network Address Translation (NAT). Clients on the Internet must use the IP address of your router/firewall device's public/WAN port to connect to your BBS. This IP address will not begin with 192.168, 172.[16-31], or 10.


Question:
What is my public IP address?

Answer:
If you need to know your public IP address, you can usually query your router/firewall device using it's configuration interface (typically via Telnet or HTTP to its private/LAN port) or access any one of many public web-sites that can tell you what your public IP address is. However, it is usually much better to advertise a hostname (e.g. vert.synchro.net) rather than a cryptic hard-to-remember IP address (e.g. 69.104.209.211).

If you use a Dynamic DNS service to get a hostname for your BBS, they can usually correctly determine your public IP address automatically, even if your IP address changes. So you don't need to necessarily know what it is.


Question:
Why can't I send Internet e-mail from my BBS?

Answer:
You must have the Synchronet "SendMail" thread enabled in your Synchronet Mail Server configuration.
If you do not see the following message in your Synchronet Mail Server window/log output when the server is started or recycled:

0000 SendMail thread started

then you do not have the SendMail thread enabled and your system cannot deliver any Internet e-mail messages until it is enabled and recycled (delivery of any previously queued outbound messages will be attempted at that time).

If your Synchronet "SendMail" thread cannot deliver e-mail messages, it could be for any of the following reasons:

  1. You have your mail server configured for "Direct Delivery", but have an improperly configured DNS server IP address.
    Example errors indicating this condition include:
    0000 !SEND INVALID DNS server address
    0000 !SEND ERROR -1 obtaining MX records for someserver.com from 192.168.1.1

  2. Your firewall, Internet Service Provider, or Anti-Virus software is blocking, intercepting, or filtering outbound connections to TCP port 25 (many consumer-class ISPs do this).
    Example errors indicating this condition include:
    0700 !SEND ERROR 60 connecting to SMTP server: smtp.somedomain.com

    You can verify if this is the case by attempting to Telnet to a known public SMTP server (e.g. vert.synchro.net, TCP port 25).
    You should see a mail server version banner similar to the following:
    220 bbs.synchro.net Synchronet SMTP Server 1.362-Win32 Ready

    If your ISP is blocking port 25, they will normally make an exception for their own mail servers (e.g. mail.yourisp.com or smtp.yourisp.com). If this is the case (and your ISP's mail server allows the from address of your e-mail message to contain any hostname or IP address of your choosing), then you need to configure your mail server to use your ISP's mail server as its relay server.

    If your ISP's mail server only allows mail to be sent from somename@yourisp.com then you need to contact your ISP about how you can send mail from a different domain using their mail server. Perhaps they only allow this feature when using SMTP authentication..

  3. You have your mail server configured to use an external "Relay Server", but have an improperly configured relay server hostname or IP address.
    Example errors indicating this condition include:
    0000 !ERROR resolving hostname: badhostname.com
    0680 !SEND ERROR 60 connecting to SMTP server: 192.168.1.1

  4. You have your mail server configured to use an external "Relay Server", but the SMTP relay server requires authentication
    (Synchronet v3.12+ supports Plain, Login, and CRAM-MD5 methods of SMTP authentication).
In general, you need to check your Synchronet Mail Server window/log output for details about why Internet e-mail delivery attempts may be failing.


Question:
Why can't my BBS receive Internet e-mail or inter-BBS instant messages?

Answer:
You must have the Synchronet SMTP (mail) server running and listening for incoming connections on TCP port 25 (the standard SMTP port). You (or a friend) can test this basic connectivity by attempting to Telnet to port 25 (instead of port 23) at your BBS's hostname or public IP address from a remote location on the Internet. The remote Telnet client should see a successful connection and a text message similar to the following:

220 bbs.synchro.net Synchronet SMTP Server 1.362-Win32 Ready

You should also see evidence of the successful SMTP connection to the server in your Synchronet Mail Server window/log output. If you do not, then its likely that your firewall or Internet Service Provider is blocking incoming connections to TCP port 25. Before concluding this is the case, verify that the remote Telnet client can connect to other SMTP servers first (e.g. vert.synchro.net, TCP port 25). If it cannot, then this remote client probably has restrictions on which (if any) connections he can make to TCP port 25. Try using a different (less restrictive) remote Internet connection for your test.

If your firewall or Internet Service Provider is blocking incoming connections to TCP port 25 (many consumer-class ISPs do), then you won't be able to receive Internet e-mail on your BBS. Fixing your firewall configuration is rather simple, but changing ISPs is often not. One possible work-around is having a mail proxy (3rd party server) receive the e-mail for you and forward it to a non-standard (non-blocked) SMTP port. Many Dynamic DNS services offer this service for a fee. Or a fellow sysop may be able and willing to perform this service for you for free.


Question:
Why can't users connect to my FTP server?

Answer:
You must have the Synchronet FTP server running and listening for incoming connections on TCP port 21 (the standard FTP port). See the previous answer about methods of testing this basic connectivity using a remote Telnet client.

If your FTP server window/log indicates an accepted FTP connection, then it's not a connectivity problem and probably a login failure.

FTP sessions require a login. If you have not created a Guest account for your BBS, then the FTP server will not allow Annonymous logins (most web browsers, for example, will attempt to login anonymously by default). If this is the problem, then either create a Guest account (preferably using the exec/makeguest.js module) or tell your FTP users that they must login with a valid BBS user account in order to use the FTP server.


Question:
Why do FTP clients lock-up or time-out when listing directories or downloading files from my FTP server?

Answer:
Your BBS computer is probably behind a Network Address Translator (NAT). NAT functionality is typically built into router/firewall devices. If your NAT device supports active and passive FTP servers "behind" the NAT, then you should have no problems. Unfortunately, this is not always the case (some cheaper consumer-level firewalls do not handle FTP server connections correctly or they do not support FTP servers listening on non-standard ports). Sometimes passive (PASV) transfers work fine (most web browsers use passive FTP transfers by default), but active (PORT) transfers do not (the Windows command-line FTP client for example, only supports active transfers), or vice versa.

This document contains the technical details about how and why and recommended solutions.

Enabling the logging of FTP data channel activity can really help diagnose these kinds of problems. This can be done by adding the DEBUG_DATA option to the Options value in the [FTP] section of your ctrl/sbbs.ini file or by checking the Data Channel Activity checkbox in the Log tab of the FTP Server Configuration dialog in the Synchronet Control Panel for Win32.

If you're having problems with passive (PASV) transfers through your NAT/firewall device and you're running Synchronet v3.12b (FTP Server Revision 1.293) or later:


Question:
Why do external programs that use socket I/O (e.g. Synchronet Blackjack, Synchronet BBS List, DoorMUD) hang on my Windows BBS?

Answer:
Some software firewall and anti-virus programs interfere with the inheritance of socket descriptors between processes. I don't know if this is an intentional security "feature" or a design flaw. One such program is the ZoneAlarm Security Suite. If you have this (or similar) software installed, it must be completely un-installed for socket inheritance to work.


Question:
Why do some or all of my servers get bind errors when starting or recycling?

Answer:
If you're getting bind errors when first starting up Synchronet, similar to the following:

0420 !ERROR 48 binding FTP Server socket to port 21

this usually means you have another TCP/IP server on your system that is already bound to (and is presumably already listening for incoming connections on) this port. This could be a pre-existing instance of Synchronet or any other Telnet/Web/Mail/FTP servers that you may have installed on your system. You can use utilities such as netstat (for Windows or Unix) or TCPView (for Windows) to verify what programs (if any) have the TCP or UDP port in question already bound. If these utilities do not report any program is bound to (and listening) on this port, you can try Telnetting to the port in question and see if anything answers. If you're unable to connect to the port with a Telnet client and Synchronet cannot bind the port, your TCP/IP stack probably needs to be reset, so a system reboot may be in order.

If you're running a Unix-like operating system (not Windows) and get bind errors only when recycling servers, this is most likely because a TCP session is stuck in a TCP TIMEWAIT state (you can use netstat to verify this). The session will eventually time-out and close properly on its own, allowing the port to be re-bound at that time. You can either increase the BindRetryCount and/or BindRetryDelay values in your ctrl/sbbs.ini file, or you can add the following line to your ctrl/sockopts.cfg file:

REUSEADDR 1

to work-around this problem.


Question:
How many nodes/clients/users can I support with my Internet connection?

Answer:
Depends on what those clients will be doing while connected. Here are some facts to consider:

  1. A BBS node doesn't consume any bandwidth when not in use.

  2. An active TCP/IP session doesn't consume any appreciable bandwidth when idle.

  3. Most Internet connections are asymmetrical in nature (as in ADSL).

    This means your upstream channel usually has less bandwidth than your downstream channel.
    When TCP/IP clients (users of your BBS's servers) download content from your servers (this includes viewing menus, reading messages, and playing door games on your BBS), they are primarily using your upstream channel. So if you have a 1.5Mbps/128Kbps DSL connection, your downstream is 1.5Mbps while your upstream is only 128Kbps. If you have a "56K" dial-up connections, for example, your downstream is probably more likely in the 43-53Kbps range while your upstream bandwidth cannot be any more than 33.6Kbps. If you are lucky enough to have an SDSL or other type of symmetrical Internet connection, then both your upstream and downstream channels are of the same bandwidth.

  4. Most BBS traffic is bursty.

    With the exception of large file transfers, most BBS traffic is sent and received in small bursts. For example, the BBS user's TCP/IP session is idle while the user is viewing menus, reading messages, pausing between keystrokes, etc. Many clients sending and receiving data in small intermittent bursts can be active simultaneously without any perceptible impact on eachother.

  5. Not all clients will be capable of maximizing your upstream channel.

    If you have a 256Kbps upstream channel, for example, you could support four or five simultaneous 56K clients all downloading files, and all getting 100% utilization of their respective downstream channels.


$Id$