如何在没有 NAT 的情况下在 Ubuntu Server 上共享连接
eth0:192.168.10.156 eth1:192.168.5.1
我正在使用 TPROXY (squid 3.1) 创建缓存服务器,但在我的网络中不会使用 nat 来向所有机器提供 IP 地址。在所有教程中,我们始终遵循 Ubuntu Server 的配置,始终使用 nat。但需要此模型:
eth1(192.168.5.1)> 它接收数据并将其传递给 eth0(192.168.10.156 Internet)
Squid 完成处理并将数据返回到网络!
这适用于 Nat,但不想使用 NAT,因为 Squid 配置是使用 TPROXY(透明 > 应该出现在 Internet 上的 Ip 客户端,而不是 Squid“将 NAT”)
答案1
非常笼统的答案
问题中提供的信息很少,因此我做出以下假设:
- 您的 192.168.10.0 网络已经实现 NAT。
- 您可以访问此 NAT(路由器)设备。
- 它能够添加手动静态路由。
- 没有运行防火墙。
- 您的网络大小为 /24(= 子网掩码 255.255.255.0)。
概括
在以下步骤中,它使所有设备都知道不同的网络和路由,所有这些都通过常规 IPv4 网络和使用 Linux 路由表完成。需要在 PC 共享上启用转发,因为它会默认阻止您执行此操作(出于安全原因)。
详细步骤
然后按照以下(一般)步骤操作:
在当前NAT(路由器)上,添加静态路由:
192.168.5.0
/24 via192.168.10.156
。我不知道您有什么设备,所以我无法提供执行此操作的说明。请阅读其手册。如果该路由器已经运行 Ubuntu,只需添加如下路由:
route add -net 192.168.5.0/24 gw 192.168.10.156
在您想要共享 /24 网络的 PC 上
192.168.5.0
,确保它将转发流量:sysctl -w net.ipv4.ip_forward=1
更多信息这个答案。
在客户端 PC 上,通过将到 /24 网络的路由
192.168.10.0
添加到路由表来使该路由为人所知:route add -net 192.168.10.0/24 gw 192.168.5.1
答案2
原则上,您要做的就是 NAT。将内部网络请求带到互联网并将其转换为单个外部 IP,以便向您的互联网提供商发出请求,这就是 NAT 功能。
我认为您不需要使用 iptables,出于安全原因,这样做并不好。至少您需要使用伪装。
在 /etc/init.d/rc.local 添加代码:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -o eth0 -j MASQUERADE
这可以帮助您而不需要太多的代码。