允许专用网络计算机通过同一专用网络上的其他计算机上网

允许专用网络计算机通过同一专用网络上的其他计算机上网

我是网络新手,我想通过具有公共和私有网络连接的计算机共享互联网,对于仅有私有网络连接的计算机。

我有一个网络 10.0.0.0/16,子网为 10.0.0.0/24。我在这个私有网络上有 2 台计算机:

  • private:它在 ens10 接口上有一个 IP:10.0.0.3
  • 网关:在 ens10 接口上有一个 IP:10.0.0.2,在 eth0 接口上有一个公网 IP:1.2.3.4。它可以访问互联网。

我到目前为止所做的是:在网关计算机上(以 root 身份):

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth1 -o ens10 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ens10 -o eth1 -j ACCEPT

在私人电脑上:

route add default gw 10.0.0.2

当我执行此命令时,我收到此响应:

SIOCADDRT:网络不可达

如果我尝试执行此操作

ip route add default via 10.0.0.2

我明白了

错误:Nexthop 具有无效网关。

我的问题是:

我如何强制流量通过 10.0.0.2?或者我在哪台计算机上做错了什么?

我的私人网络在Hetzner云中。

默认的私人计算机网络配置

10.0.0.0/16 via 10.0.0.1 dev ens10 
10.0.0.1 dev ens10 scope link 
xx.yy.169.254 via 10.0.0.1 dev ens10 

答案1

最后我如何让它工作(加粗的部分很重要)...

在 hetzner admin 上,我添加了一条到我的网络的路由(10.0.0.0/16),其中:

目的地:0.0.0.0/0 网关:10.0.0.2

-> 这是我的网关服务器 IP 地址。使用此配置,所有流向互联网的流量都将通过我的网关服务器

在网关服务器上:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s '10.0.0.0/16' -o eth0 -j MASQUERADE

在仅有私有网络的私有服务器上:

ip route 添加默认通过 10.0.0.1

我添加了一个名称服务器 /etc/resolv.conf

nameserver 8.8.8.8

我多次忘记重新启动 systemd-resolved.service

systemctl 重启 systemd-resolved.service

非常感谢您的回答!

相关内容