LAN FTP Clients have trouble connecting to LAN FTP Server via external IP addres



  • I'm running pfsense 2.0.1 and needed help getting FTP clients on my LAN to access my vsftpd FTP/web server on the LAN using the external/public IP address of the FTP server.

    The FTP Servers external IP (with a 1:1 NAT) is 24.196.135.163 and points to the internal ip of 192.168.1.243

    FTP clients outside our network can connect to the FTP server fine. FTP clients on the LAN can connect to the FTP server via it's internal/private IP address fine.

    Not sure what I have set wrong (being new to pfsense). Here are my configuration screens (below).
    and I have debug.pfftpproxy = 1

    In case it helps, when NOT using a pfsense router, but another brand of router, on the LAN I can FTP to my LAN FTP server using it's external IP address and my FTP client shows in its log:

    Cmd: PORT 192,168,1,44,216,205
    200: PORT command successful. Consider using PASV.

    Thanks!

    My vsftpd config is below:

    Example config file /etc/vsftpd/vsftpd.conf

    The default compiled in settings are fairly paranoid. This sample file

    loosens things up a bit, to make the ftp daemon more usable.

    Please see vsftpd.conf.5 for all compiled in defaults.

    READ THIS: This example file is NOT an exhaustive list of vsftpd options.

    Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's

    capabilities.

    reverse_lookup_enable=NO

    Allow anonymous FTP? (Beware - allowed by default if you comment this out).

    anonymous_enable=YES

    Uncomment this to allow local users to log in.

    local_enable=YES

    Uncomment this to enable any form of FTP write command.

    write_enable=YES

    Default umask for local users is 077. You may wish to change this to 022,

    if your users expect that (022 is used by most other ftpd's)

    local_umask=022

    Uncomment this to allow the anonymous FTP user to upload files. This only

    has an effect if the above global write enable is activated. Also, you will

    obviously need to create a directory writable by the FTP user.

    #anon_upload_enable=YES

    Uncomment this if you want the anonymous FTP user to be able to create

    new directories.

    #anon_mkdir_write_enable=YES

    Activate directory messages - messages given to remote users when they

    go into a certain directory.

    dirmessage_enable=YES

    The target log file can be vsftpd_log_file or xferlog_file.

    This depends on setting xferlog_std_format parameter

    xferlog_enable=YES

    Make sure PORT transfer connections originate from port 20 (ftp-data).

    connect_from_port_20=YES

    If you want, you can arrange for uploaded anonymous files to be owned by

    a different user. Note! Using "root" for uploaded files is not

    recommended!

    #chown_uploads=YES
    #chown_username=whoever

    The name of log file when xferlog_enable=YES and xferlog_std_format=YES

    WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log

    #xferlog_file=/var/log/xferlog

    Switches between logging into vsftpd_log_file and xferlog_file files.

    NO writes to vsftpd_log_file, YES to xferlog_file

    xferlog_std_format=YES

    You may change the default value for timing out an idle session.

    #idle_session_timeout=600

    You may change the default value for timing out a data connection.

    #data_connection_timeout=120

    It is recommended that you define on your system a unique user which the

    ftp server can use as a totally isolated and unprivileged user.

    #nopriv_user=ftpsecure

    Enable this and the server will recognise asynchronous ABOR requests. Not

    recommended for security (the code is non-trivial). Not enabling it,

    however, may confuse older FTP clients.

    #async_abor_enable=YES

    By default the server will pretend to allow ASCII mode but in fact ignore

    the request. Turn on the below options to have the server actually do ASCII

    mangling on files when in ASCII mode.

    Beware that on some FTP servers, ASCII support allows a denial of service

    attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd

    predicted this attack and has always been safe, reporting the size of the

    raw file.

    ASCII mangling is a horrible feature of the protocol.

    #ascii_upload_enable=YES
    #ascii_download_enable=YES

    You may fully customise the login banner string:

    #ftpd_banner=Welcome to blah FTP service.

    You may specify a file of disallowed anonymous e-mail addresses. Apparently

    useful for combatting certain DoS attacks.

    #deny_email_enable=YES

    (default follows)

    #banned_email_file=/etc/vsftpd/banned_emails

    You may specify an explicit list of local users to chroot() to their home

    directory. If chroot_local_user is YES, then this list becomes a list of

    users to NOT chroot().

    #chroot_list_enable=YES

    (default follows)

    #chroot_list_file=/etc/vsftpd/chroot_list

    You may activate the "-R" option to the builtin ls. This is disabled by

    default to avoid remote users being able to cause excessive I/O on large

    sites. However, some broken FTP clients such as "ncftp" and "mirror" assume

    the presence of the "-R" option, so there is a strong case for enabling it.

    #ls_recurse_enable=YES

    When "listen" directive is enabled, vsftpd runs in standalone mode and

    listens on IPv4 sockets. This directive cannot be used in conjunction

    with the listen_ipv6 directive.

    #listen=YES

    This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6

    sockets, you must run two copies of vsftpd whith two configuration files.

    Make sure, that one of the listen options is commented !!

    #listen_ipv6=YES

    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    use_localtime=YES
    pasv_address=24.196.135.163



  • Need some clarification.

    What kind of internet connection do you have coming in?  What does your network map look like?  I'm curious as to why you're using a VIP and 1:1 NAT.  Also, to access your FTP via it's external address from your LAN, you need to enable NAT reflection.

    You said:

    The FTP Servers external IP (with a 1:1 NAT) is 24.196.135.163 and points to the internal ip of 192.168.1.243

    but yet your 1:1 NAT is going to 156.46.80.243.



  • Need some clarification.
    What kind of internet connection do you have coming in?  What does your network map look like?  I'm curious as to why
    you're using a VIP and 1:1 NAT.  Also, to access your FTP via it's external address from your LAN, you need to enable NAT
    reflection.

    The internet connect is a basic business cable with several static/public IP's to use.

    I'm not sure why I'm using a VIP and 1:1 NAT, basically that is how I had it setup with my old router.

    Hopefully I have NAT reflection setup correctly Besides FTP, my webserver is accessible via it's same 24.196.135.163 external ip from inside my LAN, so I hope that means NAT reflection is working. Hare are some screenshots:

    And the bottom of my Firewall: NAT: 1:1: Edit screen has:

    The FTP Servers external IP (with a 1:1 NAT) is 24.196.135.163 and points to the internal ip of 192.168.1.243
    but yet your 1:1 NAT is going to 156.46.80.243.

    Sorry that was an old screen shot. The 1:1 NAT is going to 192.168.1.243.


Log in to reply