我有一台机器,想用作路由器之间的网关。
例如:
- 网络上的几台机器想要访问 www.google.com
- 向我发送他们的请求
- 我将它们发送到我的路由器
- 接收来自我的路由器的响应
- 将它们送回给客户
我如何在 unix 环境中做到这一点(也许使用 iptables)?
答案1
您将需要启用 IP 转发,然后设置路由表或使用 IP 表进行 NAT。以下是有关如何设置 NAT 的信息:
echo 1 > /proc/sys/net/ipv4/ip_forward
编辑
/etc/sysctl.conf
并修改以下行net.ipv4.ip_forward = 0
:net.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 代理服务器。你有两个选择:
- 配置所有机器上的客户端浏览器以使用此代理服务器。在这种情况下,所有请求将由它们直接发送到代理服务器,代理服务器将请求发送到真实服务器并将答复发送回它们。
- 使用客户端网关上的 iptables 将所有传出的 HTTP 请求透明地重定向到代理服务器。