Router working but cannot get UI to load / No SSH (revisited)

Same symptoms as Router working but cannot get UI to load / No SSH - Installing and Using OpenWrt - OpenWrt Forum. Wifi works, physical port connections work, but cannot ssh to the router and no web access.

When connected by serial, ssh 192.168.1.1 is a login to itself. The "ip a" command showed that eth0.1 now had the IP of 192.168.1.1 while br-lan had the IP 192.168.1.x as expected. It appears that the problem is that something is giving eth0.1 the IP of 192.168.1.1, when the router IP is 192.168.1.x with gateway 192.168.1.1.

Workaround: added ip addr del 192.168.1.1 dev eth0.1 to /etc/rc.local . This can be done either from the serial console or from failsafe mode after running mount_root.

The router is a WRT32000ACM. This is the only place that 192.168.1.1 appears in any of the config files:

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0.1'
        option proto 'static'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.1.1'
        option ipaddr '192.168.1.15'
        list dns '<ISP DNS 1>'
        list dns '<ISP DNS 2>'

Any insight into the cause or what I did wrong would be appreciated.

Sounds to me like you had two devices with the same IP on your network. Those would be an upstream router and the one you’re trying to setup now. Is that correct? If so, this is not a surprise as it is critical to ensure that your network never has multiple devices with the same address. In addition, if you are setting up routers in a double-nat configuration, you must also ensure that the LAN subnets of each network are different.

Yes, the upstream router is 192.168.1.1. The 3 downstream routers are 192.168.1.x (x !=1). The downstream routers have 192.168.1.1 as their gateway. No double-NAT - only the entry router has NAT enabled on the ingest WAN link.

So even if your secondary routers are not using NAT, their respective LANs cannot be in the 192.168.1.0/24 subnet. A router must route between two or more distinct networks. It cannot perform the routing function if the network subnets overlap each other. Silly analogy: you are standing between two people named David. Someone comes over to you, hands you a package, and says "please hand this to David." You would not know which David was the intended recipient.

The only way that you can use routers with a LAN on the same subnet as the main network is if you're using them in a dumb AP or similar scenario where you are not using the WAN of said router. This means that the devices would be wired such that their LAN port is connected to the LAN of the upstream router. In that case, you need to pre-configure the LAN (before you connect it to the main network) to have a unique IP address relative to the other devices on the network, and you also need to turn off the DHCP server if there is already a DHCP server on the network.

Apologies for not being clearer: yes, this is the exact mode of use. These OpenWRT APs have static IPs. The WAN port of the ingest router is a client of the ISP box, the WAN ports of the others are unused. All have DHCP disabled: a Linux box on the network serves DHCP. There are other things going on too, for example, separate VLANs for IOT devices and guest network.

The option gateway '192.168.1.1' was inserted from the GUI setting the protocol static address for the "LAN" interface. Without this, the internal OpenWRTs could not get to the opkg server. Perhaps I am misinterpreting the effect of this option?

This is the output of ip a before deleting the address (when /etc/rc.local is run):

...
4: eth0.1@eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0.1
       valid_lft forever preferred_lft forever
...

This makes sense. If the gateway is not specified, the router itself does not know where to send traffic that is destined for another network. By explicitly setting it, you are telling openwrt that there is a path (via the gateway) to other networks, including the internet.