首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PortForwarding eth0 to ppp0

PortForwarding eth0 to ppp0
EN

Server Fault用户
提问于 2020-11-25 09:54:02
回答 1查看 703关注 0票数 0

我有一个连接到具有静态IP的eth0上的互联网的eth0,我已经安装了Squid,我还允许我的Mikrotik路由器上的1694端口被转发到我的raspberry上的3128端口,这样我就可以使用我的raspberry作为代理服务器。例如,当我在另一个互联网上的另一个设备上像这样测试它时,它可以工作:

代码语言:javascript
复制
$ curl -x MY.STAT.IC.IP:1694 https://wtfismyip.com/text

MY.STAT.IC.IP

现在我给我的树莓增加了一个3g屏蔽,我能够连接到3g网络,现在我在ppp0接口上有了互联网,它有一个动态的IP。现在我想把所有传入的请求转发到eth0,以便通过ppp0路由,所以当我做以上的卷曲时,我得到了我的3g网络IP。

我不想在squid上使用tcp_outgoing_address,因为它有很多问题,我想做端口转发,我做了以下工作,但它仍然返回我的静态IP。

代码语言:javascript
复制
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i ppp0 -o eth0 -j ACCEPT

我试过很多其他的iptables转发,但都没有用。我尝试过这个bash脚本 (当然是编辑的),但是它也没有起作用,我也尝试了来自此链接的ipt.sh,我确信它会工作,但仍然没有成功,所以,我缺少了什么?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2020-11-25 11:05:32

1.检查PI是否使用3g

首先,您必须确保PI正在使用3g ppp0连接来发送数据包。

代码语言:javascript
复制
ip route

应该输出如下这样的内容:

代码语言:javascript
复制
default via XXXXXX dev ppp0

此外,在pi上执行您提到的卷曲(将代理ip设置为localhost)应该会给出3g地址。

2.检查本地代理是否有效

在此之后:尝试本地代理是否有效。因此,在您的网络中使用计算机,将PI设置为代理,并运行curl检查。它还应该返回3g IP。

如果这样做有效,您将不得不在Mikrotik中设置一个规则,将数据包伪装为squid,就好像它们来自Mikrotik:

3.使Mikrotik看起来像包原点

因此,您必须在DSTNAT规则中添加一个类似的SRCNAT规则,该规则将action设置为伪装选项。

如果做得正确,这将使任何由Mikrotik转发到squid的数据包看起来就像源自Mikrotik本身的数据包。这是一个本地设备。这将你的问题减少到上面第2点已经解决的问题。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1043862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档