家庭作业免责声明...
所以我有一台计算机 A,其 IP 地址恰好是192.168.0.81
。该计算机安装了 Web 服务器并公开端口 80。因此,192.168.0.81
在该本地网络的任何其他计算机的 Web 浏览器地址栏中键入都会显示此网页。
但我在这个本地网络中还有另一台计算机:192.168.0.129
我的任务是以这样的方式配置这两台计算机,192.168.0.129
使其成为192.168.0.81
.发送的所有数据包都192.168.0.81
必须通过192.168.0.129
,并且192.168.0.129
必须将其在端口 80 上收到的所有流量转发到192.168.0.81
。
解决方案尝试。在服务器上执行此操作,希望使其通过以下方式发送响应192.168.0.129
:
route add default gw 192.168.0.129
在网关上执行此操作,希望允许它将流量从服务器转发到外部世界:
echo 1 > /proc/sys/net/ipv4/ip_forward
在网关上执行此操作,希望能够将收到的流量转发到服务器:
iptables -t nat -A PREROUTING -p tcp -d 192.168.0.129 --dport 80 -j DNAT --to 192.168.0.81:80
但这不起作用。192.168.0.129
在该网络中另一台计算机的 Web 浏览器地址栏中键入( 192.168.0.185
) 显示浏览器错误而不是此网页。我究竟做错了什么?
为了以某种方式找出发生了什么,我尝试通过在两台机器上发出来记录所有数据包:
iptables -A INPUT -j LOG
iptables -A OUTPUT -j LOG
这些是结果。看来服务器从原始请求发出者接收数据包并尝试发回一些数据包。我看到这样的条目:
Dec 19 23:23:25 debian kernel: (...) IN= OUT=eth0 MAC=(...) SRC=192.168.0.185 DST=192.168.0.81 LEN=60 TOS=0x00 PREC=(blah blah this and subsequent stuff omitted for brevity)
Dec 19 23:23:25 debian kernel: (...) IN= OUT=eth0 SRC=192.168.0.81 DST=192.168.0.185 LEN=60 TOS=0x00 PREC=(...)
但是,网关的日志似乎没有显示任何相关流量。
如何解决这个问题?