Linux 服务器没有路由我的数据包

Linux 服务器没有路由我的数据包

我有一台带有 2 个 NIC 的 Linux 服务器(Ubuntu 12)。

eth0 连接 WAN(inet 10.0.2.15 掩码 255.255.255.0)

eth1 连接 LAN(inet 192.168.0.1 掩码 255.255.255.0)

我希望我的 Windows 机器连接到互联网。Win -> eth1 -> eth0 -> internet

添加到:/etc/网络/接口

auto eth1
iface eth1 inet static
    address 192.168.0.1
    network 192.168.0.0
    netmask 255.255.255.0
    broadcast 192.168.0.255

我将其添加到:/etc/dhcp/dhcpd.conf

authoritative;
option domain-name "mydomain";
option domain-name-servers 8.8.8.8, 8.8.4.4, 192.168.0.1;
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.32 192.168.0.128 ;
        option routers 192.168.0.1 ;
}

以及/etc/ufw/before.rules

# nat rules
*nat
 :POSTROUTING ACCEPT [0:0]

# Forward all packes through eth0
-A POSTROUTING -s 10.0.2.0/24 -o eth0 -j MASQUERADE

# WARNING, do not remove COMMIT line. This breaks the loading
COMMIT

我已将 Windows 机器的默认网关设置为 192.168.0.1,将其 IP 设置为 192.168.0.40

我的 Windows 机器可以 ping 通我的 eth1,但不能 ping 通互联网

我认为问题在于 ufw 的后路由规则,但我找不到有关其语法的文档(是的,我只是复制/粘贴了教程)..

编辑:额外信息:

输出 ip addr 和输出 ip route http://puu.sh/2Yfd7.png

输出 iptables -L FORWARD https://i.stack.imgur.com/Mas98.png

对于截图深表歉意。

答案1

您需要在某处启用 IP 转发:

 sudo sysctl -w net.ipv4.ip_forward=1

可以启用此功能的地方之一是/etc/sysctl.conf.d

 echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.conf.d/routing.conf

此外,您的 iptables 规则:

-A POSTROUTING -s 10.0.2.0/24 -o eth0 -j MASQUERADE

只会为 10.0.2.0/24 范围内的主机启用 NAT,而您的 DHCP 服务器将提供 192.168.0.0/24 范围内的 IP。您需要更改它。

相关内容