在同一台 Linux 机器上将 IP 摄像机的 IP 从 eth0 转发到 wlan0

在同一台 Linux 机器上将 IP 摄像机的 IP 从 eth0 转发到 wlan0

我有一台Linux机器,有2个网络连接,wlan0和eth0。通过wlan0,Linux机器连接到路由器,通过eth0,Linux机器连接到IP摄像机(通过网络交换机)。

从与 wlan0 位于同一网络上的 Windows 计算机,我使用 putty 连接到 Linux 计算机。如何通过通过 wlan0 连接的 Windows 计算机连接到 eth0 上的 ipcamera?

我的 Linux 机器的 IP,通过 wlan0 连接是 192.168.100.10(网关:192.168.100.1)

IP摄像机的IP,通过eth0连接到linux机器,使用交换机,是192.168.1.10(网关192.168.1.1)

当我在我的 Linux 机器上时,我可以连接到 wlan0 和 eth0,并访问 IP 摄像头,但是当我尝试通过连接到与 wlan0 同一路由器的 Windows PC 连接到 eth0 时,我无法连接到 eth0。

我如何将 IP 摄像机 eth0 连接转发到我的 wlan0 连接,以便我可以从 Windows PC 访问它?

我已启用 IP 转发。

这是我的接口配置:

# Local loopback
auto lo
iface lo inet loopback

#Wireless
#Uplink1 Wireless
auto wlan0
iface wlan0 inet static
    wpa-ssid wifi
    w8a-psk 90509d8a2bcd0893a2b873e5d9ba9c96ec686ce2b90e3252eab680fdef1c6125
    address 192.168.100.10
    netmask 255.255.255.0
    gateway 192.168.100.1
    post-up ip route add 192.168.100.0/24 dev wlan0 table uplink1
    post-up ip route add default via 192.168.100.1 table uplink1
    post-up ip rule add from 192.168.100.10/32 table uplink1 priority 100
    post-up ip route flush cache
    pre-down ip rule del from 192.168.100.10/32 table uplink1 priority 100
    pre-down ip route flush table uplink1
    pre-down ip route flush cache

    #Uplink2
    auto eth0
    iface eth0 inet static
    address 192.168.1.118
    netmask 255.255.255.0
    #gateway 192.168.1.1
    post-up ip route add 192.168.1.0/24 dev eth0 table uplink2
    post-up ip route add default via 192.168.1.1 table uplink2
    post-up ip rule add from 192.168.1.118/32 table uplink2 priority 110
    post-up ip route flush cache
    pre-down ip rule del from 192.168.1.118/32 table uplink2 priority 110
    pre-down ip route flush table uplink2
    pre-down ip route flush cache

ifconfig 的输出是:

eth0      Link encap:Ethernet  HWaddr 02:41:06:40:b3:e9
inet addr:192.168.1.118  Bcast:192.168.1.255  Mask:255.255.255.0
inet6 addr: fe80::41:6ff:fe40:b3e9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:1064 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:63840 (62.3 KiB)  TX bytes:558 (558.0 B)
Interrupt:46

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 00:a1:b0:f0:63:e4
inet addr:192.168.100.10  Bcast:192.168.100.255  Mask:255.255.255.0
inet6 addr: fe80::2a1:b0ff:fef0:63e4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:1369 errors:0 dropped:0 overruns:0 frame:0
TX packets:790 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:126212 (123.2 KiB)  TX bytes:102124 (99.7 KiB)

路线的输出是:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.100.1   0.0.0.0         UG    0      0        0 wlan0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
192.168.100.0   *               255.255.255.0   U     0      0        0 wlan0

我已经尝试通过 iptables 进行 IP 转发,但没有任何结果。我试过:iptables -t nat -A PREROUTING -p tcp -d 192.168.1.10 --dport 80 -j DNAT --to 192.168.100.10:80

iptables -A FORWARD -p tcp -d 192.168.100.10 --dport 80 -j ACCEPT

我也试过iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.100.10:80

但我仍然无法在 Windows PC 上访问 192.168.1.10。我输入了 URL 192.168.100.10,因为我是通过 wlan0 连接到它的,然后我尝试将 IP 摄像头连接转发到该 URL。

答案1

当您的 Windows 计算机查询 192.168.1.10 时,其路由表类似于:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.100.1   0.0.0.0         UG    0      0        0 wlan0
192.168.100.0   *               255.255.255.0   U     0      0        0 wlan0

因此,所有流量都将通过路由器。您的路由器无法感知 Linux 机器的 eth0 端口或您在该机器上创建的网络。您必须指示路由器将块路由192.168.1.*到您的 Linux 机器。这取决于您的路由器,可能可行也可能不可行。

答案2

尝试了很多方法后,我终于成功了。

这是我所做的,将 eth0 上的 IP 摄像机的 IP 转发到我的 wlan0 连接,我可以从我的 Windows 或互联网上的任何 PC 访问它。

因此我补充道:

iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 8080 -j DNAT --to 192.168.1.10:80

iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.10 --dport 80 -j MASQUERADE

现在一切正常。我的相机的 IP(eth0 上的 192.168.1.10:80)被转发到 Linux 机器上的另一个连接的 IP(wlan0 上的 192.168.100.10:8080)。

所以现在,当我在 Windows PC 上连接到与 wlan0 连接相同的路由器时,当我写入 192.168.100.10:8080 时,它会显示我的 IP 摄像机在 192.168.1.10 上的登录页面。

相关内容