I have 7 cameras each acting as a WiFi Access Points and I can not change their configurations.

```
Camera1 SSID: camera1, pass: 1234, it has static IP: 192.168.42.1 and built-in DHCP server
Camera2 SSID: camera2, pass: 1234, it has static IP: 192.168.42.1 and built-in DHCP server
..
Camera7 SSID: camera7, pass: 1234, it has static IP: 192.168.42.1 and built-in DHCP server

```

From my windows notebook, by using internal WiFi adaptor, I can connect to camera1's ssid and get videos. Then I need to disconnect from it, connect to camera2's ssid to get video from camera2, and similar to 3,4..7.

**What I want** is to get simultaneous videos from all of them.

**What I tried:**
I tried to plug 7 USB WiFi adaptors to my notebook. And each adaptors configured to connect different cameras. In this case, windows shows 7 different ethernet interfaces and each gets their IP from corresponding camera's dhcp server. But all cameras use same IP which is 192.168.42.1. Also as I learnt multiple USB WiFi adaptors are supported by Windows but not by MACOS.

I need a kind of universal solution to this problem, so far I couldn't figure it out how. Your helps and suggestions are highly appreciated.

Thanks.

**Further tests:**
I believe that I'm close to a solution. But still need help.
I took a Raspberry Pi 4 which runs Ubuntu on it. I'm intended to use it as a router. By Default PI hardware comes with 2 ethernet interfaces;

1. `eth0` -> 1Gbit cable connection
2. `wlan0` -> Embedded WiFi interface

I plugged two extra USB WiFi dongles and now it has two more ethernet interfaces named **wlxb8b7f16a0602** and **wlxb8b7f16a04cd**. Each USB WiFi dongle connected to a different camera. Here is the `ifconfig` output:

```
pi@pi:~$ ifconfig -a
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether dc:a6:32:48:55:70  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.205  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::2c43:aa7a:a4c8:47eb  prefixlen 64  scopeid 0x20<link>
        inet6 2a02:aa14:c480:6c80:9deb:968e:785d:159c  prefixlen 64  scopeid 0x0<global>
        inet6 2a02:aa14:c480:6c80:10b7:8a65:dce6:1f5c  prefixlen 64  scopeid 0x0<global>
        ether dc:a6:32:48:55:71  txqueuelen 1000  (Ethernet)
        RX packets 10535  bytes 2218695 (2.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 44536  bytes 63167704 (63.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlxb8b7f16a0602: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.42.24  netmask 255.255.255.0  broadcast 192.168.42.255
        inet6 fe80::6523:f6cd:520b:ee0  prefixlen 64  scopeid 0x20<link>
        ether b8:b7:f1:6a:06:02  txqueuelen 1000  (Ethernet)
        RX packets 9  bytes 1495 (1.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 47  bytes 9334 (9.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlxb8b7f16a04cd: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.42.170  netmask 255.255.255.0  broadcast 192.168.42.255
        inet6 fe80::ad02:2e2e:cc11:c309  prefixlen 64  scopeid 0x20<link>
        ether b8:b7:f1:6a:04:cd  txqueuelen 1000  (Ethernet)
        RX packets 60  bytes 6531 (6.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 130  bytes 19353 (19.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

```

In this configuration;

* `eth0` -> not connected
* `wlan0` -> connected to my internet modem (used only for ssh to pi)
* `wlxb8b7f16a0602` -> connected to Camera1
* `wlxb8b7f16a04cd` -> connected to Camera2

Even though each camera has same IP which is 192.168.42.1, since they are connected to different interfaces, I could ping them successfully by using `-I` parameter like below:

For Camera1:

```
pi@pi:~$ ping -I wlxb8b7f16a0602 192.168.42.1
PING 192.168.42.1 (192.168.42.1) from 192.168.42.24 wlxb8b7f16a0602: 56(84) bytes of data.
64 bytes from 192.168.42.1: icmp_seq=2 ttl=64 time=3.77 ms

```

For Camera2:

```
pi@pi:~$ ping -I wlxb8b7f16a04cd 192.168.42.1
PING 192.168.42.1 (192.168.42.1) from 192.168.42.170 wlxb8b7f16a04cd: 56(84) bytes of data.
64 bytes from 192.168.42.1: icmp_seq=2 ttl=64 time=2.03 ms

```

From here, let's say I assign a static IP to my eth0 interface which is 192.168.42.250

I want to forward requests come from

* 192.168.42.250:**443** at eth0 **to** 192.168.42.1:443 at **wlxb8b7f16a0602**
* 192.168.42.250:**444** at eth0 **to** 192.168.42.1:443 at **wlxb8b7f16a04cd**

If you help me for this remaining point, I accept your answer.

To @A.B:

```
pi@pi:~$ iw phy phy0 |grep netns
        phy <phyname> set netns { <pid> | name <nsname> }
                    <nsname> - change network namespace by name from /run/netns
                               or by absolute path (man ip-netns)

pi@pi:~$ ll /sys/class/ieee80211
total 0
drwxr-xr-x  2 root root 0 Mai 27 17:13 ./
drwxr-xr-x 78 root root 0 Jan  1  1970 ../
lrwxrwxrwx  1 root root 0 Jun 27 20:18 phy0 -> ../../devices/platform/soc/fe300000.mmcnr/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/ieee80211/phy0/
lrwxrwxrwx  1 root root 0 Mai 27 17:13 phy1 -> ../../devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.0/ieee80211/phy1/
lrwxrwxrwx  1 root root 0 Mai 27 17:13 phy2 -> ../../devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3/1-1.3:1.0/ieee80211/phy2/

```