我的一个实验有点卡住了。
我有一个看起来有点像这样的网络。
| Internet |
|
---- |Switch| ----
| |
Server w/pub IP | DD-WRT router 192.168.1.1 |
|
RFC1918 clients 192.168.1.0/24
我想要的是 RFC1918 客户端能够直接互相交谈。
在具有公共 IP 的服务器上,我有此路由:192.168.1.0/24 dev eth0 scope link
并且可以看到数据包实际上到达了 192.168.1.1 的 dd-wrt 路由器,即使我没有得到答复。
尝试从公共 IP 服务器访问其中一个 RFC1918 客户端将不会得到任何结果,因为 dd-wrt 路由器没有在其外部接口上宣布该网络(arp who-has 192.168.1.107 tell xxx.xxx.xxx.xxx
,但没有答案)。
作为 WLAN dd-wrt 路由器,路由器当然具有大量的路由、VLAN 和接口:
xxx.xxx.xxx.1 dev vlan2 scope link
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.1
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.244
84.215.64.0/18 dev vlan2 proto kernel scope link src xxx.xxx.xxx.xxx
169.254.0.0/16 dev br0 proto kernel scope link src 169.254.255.1
127.0.0.0/8 dev lo scope link
0.0.0.0 via xxx.xxx.xxx.1 dev vlan2
xxx.xxx.xxx.xxx
是公网 IP,xxx.xxx.xxx.1
是公网 IP 的默认路由。
我不知道该从哪里继续。我认为我既需要在 dd-wrt 路由器上进行路由,也需要一些 iptables 魔法?
为什么要做这么复杂的事情?为什么不呢 ;)
另外,不要介意“互联网”可以获得 RFC1918 流量,它不会超出墙外。
编辑 1:按照 stew 的提示,我确实得到了正确的 ARP 流量。添加一条 iptables 规则以允许来自该特定公共 IPd 机器的流量后,我得到了系统之间的流量!
不过,奇怪的是,我从具有发布 IP 的服务器 -> RFC1918 客户端获得的速度与流量被路由到互联网并返回的速度相同。
修改 2:好的,断开外部互联网连接仍将导致相同的糟糕传输速度。所以一定是其他原因。
编辑 3:好的,我猜速度这么慢肯定还有其他原因。结案了。:)
答案1
您需要 dd-wrt 将 arp 请求从一个接口代理到另一个接口。尝试:
echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/br0/proxy_arp