机器作为路由器和本地设备之间的网关

机器作为路由器和本地设备之间的网关

我有一台机器,想用作路由器之间的网关。

例如:

  1. 网络上的几台机器想要访问 www.google.com
  2. 向我发送他们的请求
  3. 我将它们发送到我的路由器
  4. 接收来自我的路由器的响应
  5. 将它们送回给客户

我如何在 unix 环境中做到这一点(也许使用 iptables)?

答案1

您将需要启用 IP 转发,然后设置路由表或使用 IP 表进行 NAT。以下是有关如何设置 NAT 的信息:

  • echo 1 > /proc/sys/net/ipv4/ip_forward

  • 编辑/etc/sysctl.conf并修改以下行net.ipv4.ip_forward = 0net.ipv4.ip_forward = 1

  • /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    /sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
    /sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

我相信如果您想要转发并且不需要 NAT,那么您可以删除 MASQUERADE 线路。

除了 HTTP 请求的具体示例之外,其余详细信息表明您想要一个实际的网关,而不仅仅是一个代理。

答案2

我觉得你需要运行像 squid 这样的 HTTP 代理服务器。你有两个选择:

  1. 配置所有机器上的客户端浏览器以使用此代理服务器。在这种情况下,所有请求将由它们直接发送到代理服务器,代理服务器将请求发送到真实服务器并将答复发送回它们。
  2. 使用客户端网关上的 iptables 将所有传出的 HTTP 请求透明地重定向到代理服务器。

相关内容