我有一台带有 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。您需要更改它。