不使用 NAT 共享连接

不使用 NAT 共享连接

如何在没有 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 共享上启用转发,因为它会默认阻止您执行此操作(出于安全原因)。

详细步骤

然后按照以下(一般)步骤操作:

  1. 在当前NAT(路由器)上,添加静态路由:

    192.168.5.0/24 via 192.168.10.156。我不知道您有什么设备,所以我无法提供执行此操作的说明。请阅读其手册。

    如果该路由器已经运行 Ubuntu,只需添加如下路由:

    route add -net 192.168.5.0/24 gw 192.168.10.156
    
  2. 在您想要共享 /24 网络的 PC 上192.168.5.0,确保它将转发流量:

    sysctl -w net.ipv4.ip_forward=1
    

    更多信息这个答案

  3. 在客户端 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

这可以帮助您而不需要太多的代码。

相关内容