将 Arduino 与 eth0 连接,同时将 wlan0 留作互联网使用

将 Arduino 与 eth0 连接,同时将 wlan0 留作互联网使用

我有一个简单的 Arduino HTTP 服务器,我想从我的 Ubuntu 浏览该服务器。

如果我为 Arduino 分配一个 IP 192.168.0.9,并将 Arduino HTTP 服务器连接到我的路由器(连接到 4 个以太网端口中的任何一个),一切正常,我可以从我的 Ubuntu 进行浏览
Ubuntu => wlan0 => 路由器 => Arduino HTTP 服务器
我认为一切正常,因为我为 Arduino 分配了一个静态 IP,因此它位于同一个子网 192.168.0.0/24。

我的笔记本上还有一个 eth0。对我来说,将 Arduino 连接到这个 eth0 比连接到路由器要容易得多。从ifconfig,我有wlan 192.168.0.22eth0 10.42.0.1

我的目标是:
Ubuntu => wlan0 => 路由器 => 互联网
Ubuntu => eth0 => Arduino HTTP 服务器

要将 Ubuntu 连接到 Arduino,我需要:

  • 为 Arduino HTTP 服务器分配一个与 eth0 位于同一子网的 IP:10.42.0.9
  • 通过 eth0 将所有请求路由到 10.42.0.9
  • 左侧路由所有其他请求通过 wlan 发送

但目前它还不起作用。

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    0      0        0 wlan0
10.42.0.0       *               255.255.255.0   U     1      0        0 eth0
192.168.0.0     *               255.255.255.0   U     9      0        0 wlan0

我没有添加 10.42.0.0...Ubuntu 决定将此地址用于 eth0

您能解释一下使用 eth0 和 wlan 的正确方法吗?

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1a:4b:8c:38:8e  
          inet addr:10.42.0.1  Bcast:10.42.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21a:4bff:fe8c:388e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:87 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:13231 (13.2 KB)
          Interrupt:22 Memory:e4600000-e4620000 

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:16436  Metric:1
          RX packets:2968 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2968 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:386864 (386.8 KB)  TX bytes:386864 (386.8 KB)

wlan0     Link encap:Ethernet  HWaddr 00:1a:73:e5:74:72  
          inet addr:192.168.0.22  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: 2a02:678:1be:1900:4947:bdbb:4d8b:4c2a/64 Scope:Global
          inet6 addr: 2a02:678:1be:1900:21a:73ff:fee5:7472/64 Scope:Global
          inet6 addr: fe80::21a:73ff:fee5:7472/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:42689 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20397 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:22666151 (22.6 MB)  TX bytes:3533575 (3.5 MB)

答案1

我刚刚在 iptables 中添加了一行:

sudo iptables -A OUTPUT -s 0.0.0.0/0 -d 10.42.0.9 -j ACCEPT

现在一切都好了!

相关内容