很多问题 发表于 2023-3-4 01:42

如何配置Linux, 让同一端口 对不同IP连接 分别匹配多种协议?

本帖最后由 很多问题 于 2023-3-4 13:46 编辑

ubuntu/centos小白请教(arch/gentoo/lfs也懂一些基本操作)

同一服务器上架设两种服务,
譬如默认情况,80端口上有http, 21端口上有ftp。
(我有权限可以随便将http和ftp改成任何其他端口)

现想实现功能:
单独监听某个端口,以4444为例,需要指定:

某些IP连接到此4444端口,一律按照http服务处理,(只要是来自这类IP的连接,不管客户端发来的数据包内容如何,全都按http协议响应)

另外一些IP连接到此4444端口,则按照ftp服务处理。(针对后面这批IP的连接,不管客户端发来的数据包内容如何,只按ftp协议响应)

这种4444端口只有唯一一个,
而http和ftp需要分类处理的不同服务,则有2个(最多最多3个),

本来的80/21端口最好可以对所有外部IP关闭,
如果实在不能关闭也能接受。

我有root权限,可安装任意软件,也能修改系统配置,包括iptables。


上述需求是否可能实现?
如果可以,请问具体操作 和 配置?
我是ubuntu/centos小白,只懂最最基本的操作,(arch/gentoo/lfs也懂一点)


恳求论坛巨巨解答越详细越好。

鞠躬感谢。



RaidenII 发表于 2023-3-4 01:58

haproxy acl应该可以

xmcp 发表于 2023-3-4 02:46

iptables按源ip筛选一下,某些ip转发到80,另一些转发到21?

白日依山尽 发表于 2023-3-4 06:09

外部开放4444端口,nginx监控此端口,nginx判断客户端remote_addr,按类型转发到localhost:80,localhost:21

YoumuChan 发表于 2023-3-4 07:38

80和21 bind到localhost而不是0.0.0.0来关闭外部访问,然后iptables根据src ip用DNAT转发到本地的80和21

すぴぱら 发表于 2023-3-4 07:48

jchemphys 发表于 2023-3-4 07:53

帆影FX 发表于 2023-3-4 08:23

https://shareg.pt/J5pkDvy
我觉得你可以找chatgpt聊聊,不过我没试,不确定这个结果能不能用

董卓 发表于 2023-3-4 08:26

https://www.huangyuexiang.com/2020/05/09/Nginx%E9%85%8D%E7%BD%AE%E4%B8%80%E4%B8%AA%E7%AB%AF%E5%8F%A3%E5%90%8C%E6%97%B6%E5%A4%84%E7%90%86%E5%A4%9A%E7%A7%8D%E5%8D%8F%E8%AE%AE/

https://www.cnblogs.com/nethrd/p/15927137.html

nessaj 发表于 2023-3-4 09:16

chillicez 发表于 2023-3-4 10:20

本帖最后由 chillicez 于 2023-3-4 10:21 编辑

https://www.chengxiaobai.com/trouble-maker/trojan-shared-443-port-scheme
我现在一个vps就是按这个在433配了两个服务

liwangli1983 发表于 2023-3-4 10:42

前面加个路由然后配置根据源地址的端口映射,或者本机是linux就用iptables做类似的事情

Gazzz 发表于 2023-3-4 10:43

upstream a.com {
server 192.168.0.1:80;
}

upstream b.com {
server 192.168.0.1:21;
}

server {
listen 4444;
server_name c.com;

location / {
      if ( $remote_addr ~* {这里写正则匹配你的来源ip}) {
         proxy_pass a.com;
         break;
      }
      proxy_pass b.com;
   }
}

lhw369 发表于 2023-3-4 11:14

nginx 反代。域名区分

—— 来自 HONOR HPB-AN00, Android 12上的 S1Next-鹅版 v2.5.4

ltycomputer 发表于 2023-3-4 11:53

本帖最后由 ltycomputer 于 2023-3-4 11:56 编辑

sslh可以同端口复用ssh/ssl
haproxy也行,根据tcp包头分别https/ssh/open微屁恩转发到不同后端实现复用

然后sni可以继续区分不同https主机

citrus 发表于 2023-3-4 12:23

连lfs都搞过的人,建议自己拿nc和bash/python写个简单小程序转发得了

ambivalence 发表于 2023-3-4 15:22

你这个要用nginx做负载

Andrue 发表于 2023-3-5 16:41

Nginx根据预设ip分别转发

ChengChung 发表于 2023-3-5 17:42

haproxy应该可以实现根据流量类型分流
不过你是否考虑清楚ftp有数据通道的

另外我的推荐是,机器上配两个IP地址(可以是loopback类型的),保证路由正常
然后http服务监听IPA,ftp监听IPB,其它的在iptables上做过滤,只允许C网段访问IPA的4444端口,同时只允许D网段访问IPB的4444端口
页: [1]
查看完整版本: 如何配置Linux, 让同一端口 对不同IP连接 分别匹配多种协议?