我有一个简单的 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.22
和eth0 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
现在一切都好了!