为了进行测试,我对编程服务器以假装是可配置的远程服务器的方式感兴趣,即在我的网络上有一个服务器充当路由器,但它不会将数据包转发到公共网络,而是允许我在本地处理它们。是否有任何软件、框架、库或平台可以做到这一点,最好在 Linux 上运行?
答案1
在典型的家庭情况下,您的路由器运行 DHCP 服务器,并将自己的 IP/子网掩码作为默认网关/子网掩码。这使得网络上的其他计算机将其用作路由器,除非您对其进行静态配置。
例如,Debian 下的软件包isc-dhcp-server
可让您在 PC 上运行 DHCP 服务器。您应该先禁用路由器上的 DHCP 服务器,否则客户端监听哪个服务器完全取决于运气。
如果您的客户端使用 DNS 来确定要连接的 IP,此时您可以使用 设置您自己的 DNS 服务器bind
,设置小型本地权威服务器来捕获特定主机名,并将其配置为将其余内容转发到您的 ISP 的名称服务器或其他公共 DNS 提供商,例如 Google、OpenDNS 或 OpenNIC。
如果远程服务使用证书来验证其连接的对象,则它将失败或产生警告,因为这是一种中间人攻击。
如果安装了两个网络适配器,Linux 系统可以在两个网络适配器之间转发。许多家用路由器正是如此 - 在 MIPS 或 ARM CPU 上运行的 Linux 内核。搜索将提供许多关于如何启用端口转发并使其与 NAT 一起运行的教程,使用iptables
。在这种情况下,您的家用路由器将完全被排除在外,除非您想将其用于无线(并且您不会使用路由器的“路由器”部分,而只是 WLAN)。
在该iptables
配置中,您可以设置REDIRECT
目标,透明地捕获流向特定 IP 的传出流量并将其重定向到其他 IP,例如您的本地 IP 或 DMZ 中的 IP。
并且,如果远程服务使用证书来验证其连接的对象,它将失败或产生警告,因为这是一种中间人攻击。
准备好学习和bind
。iptables
实施细节太多,无法在此提供,但完全可行。