加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux更改源IP地址的传入流量

发布时间:2020-12-14 03:06:13 所属栏目:Linux 来源:网络整理
导读:我有一个在端口X上运行的Web服务.它从来没有打算在本地网络外运行,但我想通过Internet访问它.因此,我需要将所有传入数据包的源IP地址更改为本地数据包(例如,192.168.2.100).否则,Web服务会响应错误. 所以这就是我需要的: 如果我将带有公共IP X的家用计算机
我有一个在端口X上运行的Web服务.它从来没有打算在本地网络外运行,但我想通过Internet访问它.因此,我需要将所有传入数据包的源IP地址更改为本地数据包(例如,192.168.2.100).否则,Web服务会响应错误.

所以这就是我需要的:

如果我将带有公共IP X的家用计算机的数据包发送到服务器的公共IP地址Y,则需要将源IP地址(在这种情况下为X)更改为本地IP地址(例如,192.168.2.1) .之后,应将数据包传递到在端口80上的同一服务器上运行的Web应用程序.

解决方法

好的,现在我想我明白你想要什么.这是一个非常特殊的情况,与我之前发布的常规端口转发方法不同(见下文).以下规则应该这样做.

传入数据包上的SNAT

我假设如下:

>< x>:服务器的公共IP
>< y>:客户端的公共IP
>< a>:服务器的内部IP(192.168.2.1)
>< b>:客户端的内部“伪造”IP(192.168.2.100)
>< if>:外部接口(即eth0)

仅限SNAT

此规则将更改数据包的源地址:

iptables -t nat -A INPUT -p tcp -d <x> --dport 80 -s <y> -j SNAT --to-source <b>

合并DNAT和SNAT:

这些规则将改变数据包的源和目标地址:

iptables -t nat -A PREROUTING -i <if> -p tcp -d <x> --dport 80 -s <y> 
    -j DNAT --to-destination <a>:80
iptables -t nat -A INPUT -p tcp -d <a> -s <y> --dport 80 
    -j SNAT --to-source <b>

不要忘记接受过滤表中的数据包.

通常的DNAT端口转发规则进行比较(无SNAT):

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 
    -j DNAT --to-destination 192.168.2.1:80

这会将外部接口(在此示例中为eth0)上的传入数据包上的端口8080转发到内部主机192.168.2.1到端口80.将接口,协议,dport和目标替换为您的设置.

此规则将接受修改的数据包:

iptables -A FORWARD -i eth0 -p tcp -d 192.168.2.1 --dport 80 -j ACCEPT

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读