我在为我的电脑创建路由表时遇到了问题。
我有一台运行 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 系统位于公用网络和专用网络之间(甚至位于两个专用网络之间,因为在这种情况下可能并不总是需要转发流量),这一点非常重要。