Q:

Run monero only in LAN

I'm want to run monerod only on my LAN.   I don't want it communicate with the official blockchain.   I followed this answer except that I replaced the localhost IP with my IP:
./monerod --stagenet --no-igd --hide-my-port --data-dir node1 \
  --p2p-bind-ip 192.168.1.23 --p2p-bind-port 48080 --rpc-bind-port 48081 \
  --zmq-rpc-bind-port 48082 --add-exclusive-node 192.168.1.23:38080

./monerod --stagenet --no-igd --hide-my-port --data-dir node2 --p2p-bind-ip \
  192.168.1.23 --rpc-bind-ip 0.0.0.0 --confirm-external-bind \
  --add-exclusive-node 192.168.1.23:48080

When I run monero-wallet-cli from a difference machine, I get this error:
monero-wallet-cli.exe --stagenet --daemon-address 192.168.1.23:48081 --log-level 0 \
--wallet-file test
...
Warning: using an untrusted daemon at 192.168.1.23:48081, privacy will be lessened
Error: wallet failed to connect to daemon: 192.168.1.23:48081.  Daemon either is not started or wrong port was passed.  Please make sure daemon is running or change the daemon address using the 'set_daemon' command. 

If I pass --trusted-daemon I don't get the warning, but I still get the error. 
I am able to connect to 192.168.1.23:48081 if I run a webserver on it. 

A:

As you have started the nodes (monerod) with --stagenet, you also need to start the wallet (monero-wallet-cli) with --stagenet. 
UPDATE (question edited)
It looks like both your nodes are on the same machine (192.168.1.23) so just run them like:
./monerod --stagenet --no-igd --hide-my-port --data-dir node1 \
  --p2p-bind-ip 127.0.0.1 --p2p-bind-port 48080 \
  --add-exclusive-node 127.0.0.1:38080 \
  --rpc-bind-ip 0.0.0.0 --rpc-bind-port 48081 --confirm-external-bind

./monerod --stagenet --no-igd --hide-my-port --data-dir node2 \
  --p2p-bind-ip 127.0.0.1  --p2p-bind-port 38080 \
  --add-exclusive-node 127.0.0.1:48080

Then on you wallet machine:
monero-wallet-cli.exe --stagenet --daemon-address 192.168.1.23:48081 \
  --log-level 0 --wallet-file test

