I don't know of a command to do this, or a setting that you can modify to make
^ do it.
I'm on MS Windows without symlinks, but you might try defining a command that uses the same definition as
dired-up-directory but that converts
dired-current-directory to its symlink target by wrapping it in
file-truename, which follows symlinks (untested):
;; Same as `dired-up-directory', except for wrapping with `file-truename'.
(defun my-dired-up-directory (&optional other-window)
"Run Dired on parent directory of current directory.
Follows symlinks for current directory.
Find the parent directory either in this buffer or another buffer.
Creates a buffer if necessary.
If OTHER-WINDOW (the optional prefix arg), display the parent
directory in another window."
(let* ((dir (file-truename (dired-current-directory)))
(up (file-name-directory (directory-file-name dir))))
(or (dired-goto-file (directory-file-name dir))
;; Only try dired-goto-subdir if buffer has more than one dir.
(and (cdr dired-subdir-alist) (dired-goto-subdir up))
(progn (if other-window (dired-other-window up) (dired up))
If no one offers an existing way to do this, you might want to file an enhancement request to make
dired-up-directory be able to do this (i.e., optionally). That could be done via a particular prefix-arg value or via a variable binding. Alternatively, you could just ask for such an alternative command, so users can bind it to a key.