首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改iptables命令以有选择地转发

更改iptables命令以有选择地转发
EN

Server Fault用户
提问于 2022-11-14 10:46:03
回答 1查看 372关注 0票数 0

在教程之后,我为一些朋友建立了一个v2ray虚拟专用网。在安装过程中,我们需要两个服务器: EU和IR。欧盟服务器位于欧洲,v2ray安装在其上。IR服务器位于国内,并将所有通信量转发给欧盟服务器。这是必要的,因为审查是如此严厉,有时你只能连接到国内服务器。

到目前为止,所有这些都很好,但是我们需要添加更多的EU服务器,而IR服务器应该有选择地将流量转发到EU1或EU2。我们计划为每个欧盟服务器提供一系列端口。因此,如果请求来自v2ray客户端,端口介于10000到19999之间,那么我们希望将其转发到EU1服务器,如果端口在20000至29999之间,则将其转发到EU2。

我们拥有的当前iptables命令如下:

代码语言:javascript
复制
sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination IR_SERVER_IP
iptables -t nat -A PREROUTING -j DNAT --to-destination EU_SERVER_IP
iptables -t nat -A POSTROUTING -j MASQUERADE

我试图理解这些命令,并理解-t nat选择nat表,-p tcp说如果协议是tcp的话。但是--dport 22把我弄糊涂了。每个v2ray连接都有一个唯一的端口,从来都不是22。

为了满足我们的需求,我们需要对命令做什么改变?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2022-11-14 13:05:09

答案很简单:无论您转发哪个流量,您仍然必须能够管理您的"IR“服务器。这是通过ssh完成的,在默认情况下,ssh正在监听端口22。可能存在DNAT规则,以避免与下一条规则匹配的端口22的通信量,该规则无条件地将目标IP更改为您的EU服务器,无论使用的是哪个协议/端口。

规则iptables -t nat -A PREROUTING -p tcp --dport 22 -j ACCEPT也会做同样的事情(并使其意图更加明确)。如果您知道v2ray流量的目的端口在10000到29999之间,则可以删除此规则,并将这些约束添加到DNAT规则中。

我不熟悉v2ray虚拟专用网,也不知道要与v2ray对话的协议是tcp还是udp -我插入了这两个协议来确定。根据你的描述,这些规则应该做好以下工作:

代码语言:javascript
复制
sysctl net.ipv4.ip_forward=1
# clear all previous rules:
iptables -t nat -F

# add new rules:
iptables -t nat -A PREROUTING -d IR_SERVER_IP -p tcp --dport 10000:19999 -j DNAT --to-destination EU_SERVER_IP1
iptables -t nat -A PREROUTING -d IR_SERVER_IP -p udp --dport 10000:19999 -j DNAT --to-destination EU_SERVER_IP1
iptables -t nat -A PREROUTING -d IR_SERVER_IP -p tcp --dport 20000:29999 -j DNAT --to-destination EU_SERVER_IP2
iptables -t nat -A PREROUTING -d IR_SERVER_IP -p udp --dport 20000:29999 -j DNAT --to-destination EU_SERVER_IP2
iptables -t nat -A POSTROUTING -j MASQUERADE

同样,我不知道v2ray,因此我无法判断是否需要更多的端口转发才能使此设置工作。

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

https://serverfault.com/questions/1115620

复制
相关文章

相似问题

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