如何在一台电脑(有线和无线网卡)上的两个连接(不同的网络)之间进行路由?

如何在一台电脑(有线和无线网卡)上的两个连接(不同的网络)之间进行路由?

我在为我的电脑创建路由表时遇到了问题。

我有一台运行 Ubuntu 的电脑,有 2 个连接卡(eth0 和 wlan0)。eth0 IP:192.168.1.1/24 wlan0 IP:10.10.10.1/24,安装了 dhcp-server

IP 为 10.10.10.2 的客户端连接到我的路由器 wlan0,但未连接到我的 eth0 网络。

如何解决这个问题?谢谢

答案1

我看到两个网络都有私有 IP,因此我假设您只想在这两个网络之间路由流量;没有防火墙,没有任何类型的流量控制,没有网络地址转换。

尝试这样做:

echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward

然后确保您的客户端(10.10.10.2)的默认网关设置为 10.10.10.1(您的 Linux 机箱/路由器)。

一旦你有了这个,你应该能够看到另一个网络(192.168.1.0)。要测试这一点,请尝试 ping 该网络上的 Linux 机器的地址(192.168.1.1)。你应该会得到一个响应:

$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=2.30 ms
64 bytes from 192.168.1.1: icmp_req=2 ttl=64 time=1.62 ms

ip_forward 设置告知 Linux 内核通过适当的接口转发发往另一个网络的数据包。默认情况下,该设置是关闭的,这意味着内核将丢弃请求转发的数据包。

当您重新启动系统时,此设置将自动“重置”,要使其永久生效,请执行以下操作:

echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/60-ip-forward.conf

这将创建一个具有此设置的配置文件,以便在系统启动时加载。

最后,请阅读IP 表使用方法其中包含有关如何控制内核允许数据包通过接口的方式、是否进行网络地址转换以及其他事项的信息。如果您希望 Linux 系统位于公用网络和专用网络之间(甚至位于两个专用网络之间,因为在这种情况下可能并不总是需要转发流量),这一点非常重要。

相关内容