Linux iptables 转发

Linux iptables 转发

我有3台机器:

  • 1 台带 LAN 卡的服务器,无需直接访问 Internet
  • 1 台 Windows 主机,具有用于互联网的 WiFi 连接和 1 个 LAN 端口
  • Windows主机上有1个linux虚拟机

[Server_without_internet]---[Linux_VM]---[Windows_host]

  • 服务器_无_互联网:eth0 - > 192.168.1.1
  • Linux_VM_WiFi_NAT:wlan0 -> 10.0.2.15
  • Linux_VM_LAN_bridge_card:eth0 -> 192.168.1.254
  • Windows_LAN:192.168.1.2
  • Windows_WiFi:172.16.1.1 / 10.0.2.1(NAT Linux 至 10.0.2.15)

我想使用 iptables 转发来访问 [Server_without_Internet]。

路线:

  • Server_without_internet、Linux_VM_LAN_bridge_card、Windows_LAN:192.168.1.0/24 通过 192.168.1.254
  • Linux_VM_WiFi_NAT :0.0.0.0 通过 10.0.2.1 (172.16.1.1)

我启用 IPv4 转发:

sysctl -w net.ipv4.ip_forward=1

我将 iptables 配置为 Linux_VM,如下所示:

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE 
iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0-o wlan0 -j ACCEPT

平:

  • Ping 正常:192.168.1.1 至 1.2
  • Ping 成功:192.168.1.1 至 1.254
  • Ping 正常:192.168.1.2 至 1.1
  • Ping 成功:192.168.1.2 至 1.254
  • Ping 正常:192.168.1.254 至 1.1
  • Ping 正常:192.168.1.254 至 1.2
  • Ping 正常:10.0.2.15 至 8.8.8.8
  • Ping 成功:172.16.1.1 / 10.0.2.1 至 8.8.8.8
  • 高平:192.168.1.1 至 8.8.8.8

提醒我尝试从 [Server_without_server] 通过 [Linux_VM] 访问互联网

当我在 Linux_VM 上检查 tcpdump 时:

  • tcpdump -i eth0 -vvnn :我看到对 8.8.8.8 的回显请求
  • tcpdump -i wlan0 -vvnn :我看到对 8.8.8.8 的回显请求,但没有看到回显回复

所以 eth0 转发到 wlan0 与 iptables 工作,但我没有返回。

有人有主意吗?

谢谢

编辑

我添加了 conntrack iptables cli 和 IP 公共 icmp 测试工作。

iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 

现在 DNS 解析器不起作用。在服务器 /etc/resolv.conf 中,我有 Google DNS 和 OpenDNS DNS。

一个主意 ?

谢谢

相关内容