有一台服务器(节点 A),充当 GRE 隧道的端点。还有一台 Ubuntu 服务器(节点 B,它可看到 Internet),充当 GRE 隧道的终止点。一些设备(节点 C1、2、3..)连接到服务器 A,它们可以看到服务器 B,但看不到 Internet 的其余部分,甚至 DNS 查找也不起作用。
我需要在服务器 B 上配置什么才能将来自和到达设备 C 的流量转发/路由到互联网。理想情况下,我还想只允许访问某些地址。问题与拓扑关系不大,这部分似乎很简单;问题是,我只是对 iptables/squid/route/etc 等工具、forwarding/routing/bridgin/etc 等技术以及缩写 OMG/为什么/有/这么多/缩写!
编辑服务器网络配置:
- 服务器 A 有一个外部 IP 94.xxx(我真的对此一无所知)
- A 和 B 通过 GRE 隧道连接
- 服务器B有两个网络设备:
- 地址为 72.yyy 的 eth0(这是 Internet 接口)
- tun0 地址为 10.0.2.1(这是 GRE 隧道接口)
- 终端 C# 的 IP 在 10.19.0.0/16 范围内
所以问题是将流量从子网 10.0.2.1 转发到 Internet 并反之亦然(如果请求的原始 IP 没有改变那就完美了)。
答案1
我很讨厌自己没有彻底弄清楚这个问题,但说真的,在两天内学会所有这些缩写/协议/原型是不可能的。
无论如何,设置似乎只需在 eth0 接口上共享 Internet 连接(MASQUERADE)即可,即在 iptables 中添加以下规则
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE