找回密码
 立即注册
搜索
查看: 3189|回复: 18

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

[复制链接]
     
发表于 2023-3-4 01:42 | 显示全部楼层 |阅读模式
本帖最后由 很多问题 于 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也懂一点)


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

鞠躬感谢。



回复

使用道具 举报

头像被屏蔽
发表于 2023-3-4 01:58 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2023-3-4 02:46 | 显示全部楼层
iptables按源ip筛选一下,某些ip转发到80,另一些转发到21?
回复

使用道具 举报

     
发表于 2023-3-4 06:09 | 显示全部楼层
外部开放4444端口,nginx监控此端口,nginx判断客户端remote_addr,按类型转发到localhost:80,localhost:21
回复

使用道具 举报

     
发表于 2023-3-4 07:38 | 显示全部楼层
80和21 bind到localhost而不是0.0.0.0来关闭外部访问,然后iptables根据src ip用DNAT转发到本地的80和21
回复

使用道具 举报

头像被屏蔽
     
发表于 2023-3-4 07:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
     
发表于 2023-3-4 07:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2023-3-4 08:23 | 显示全部楼层
https://shareg.pt/J5pkDvy
我觉得你可以找chatgpt聊聊,不过我没试,不确定这个结果能不能用
回复

使用道具 举报

     
发表于 2023-3-4 08:26 | 显示全部楼层
回复

使用道具 举报

头像被屏蔽
     
发表于 2023-3-4 09:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2023-3-4 10:20 来自手机 | 显示全部楼层
本帖最后由 chillicez 于 2023-3-4 10:21 编辑

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

使用道具 举报

     
发表于 2023-3-4 10:42 | 显示全部楼层
前面加个路由然后配置根据源地址的端口映射,或者本机是linux就用iptables做类似的事情
回复

使用道具 举报

     
发表于 2023-3-4 10:43 | 显示全部楼层
  1. upstream a.com {
  2.   server 192.168.0.1:80;
  3. }

  4. upstream b.com {
  5.   server 192.168.0.1:21;
  6. }

  7. server {
  8.   listen 4444;
  9.   server_name c.com;

  10.   location / {
  11.         if ( $remote_addr ~* {这里写正则匹配你的来源ip}) {
  12.            proxy_pass a.com;
  13.            break;
  14.         }
  15.         proxy_pass b.com;
  16.    }
  17. }

复制代码
回复

使用道具 举报

发表于 2023-3-4 11:14 来自手机 | 显示全部楼层
nginx 反代。域名区分

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

使用道具 举报

     
发表于 2023-3-4 11:53 来自手机 | 显示全部楼层
本帖最后由 ltycomputer 于 2023-3-4 11:56 编辑

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

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

使用道具 举报

发表于 2023-3-4 12:23 | 显示全部楼层
连lfs都搞过的人,建议自己拿nc和bash/python写个简单小程序转发得了
回复

使用道具 举报

     
发表于 2023-3-4 15:22 | 显示全部楼层
你这个要用nginx做负载
回复

使用道具 举报

     
发表于 2023-3-5 16:41 来自手机 | 显示全部楼层
Nginx根据预设ip分别转发
回复

使用道具 举报

     
发表于 2023-3-5 17:42 | 显示全部楼层
haproxy应该可以实现根据流量类型分流
不过你是否考虑清楚ftp有数据通道的

另外我的推荐是,机器上配两个IP地址(可以是loopback类型的),保证路由正常
然后http服务监听IPA,ftp监听IPB,其它的在iptables上做过滤,只允许C网段访问IPA的4444端口,同时只允许D网段访问IPB的4444端口
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-13 17:58 , Processed in 0.210701 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表