如何配置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也懂一点)
恳求论坛巨巨解答越详细越好。
鞠躬感谢。
haproxy acl应该可以 iptables按源ip筛选一下,某些ip转发到80,另一些转发到21? 外部开放4444端口,nginx监控此端口,nginx判断客户端remote_addr,按类型转发到localhost:80,localhost:21 80和21 bind到localhost而不是0.0.0.0来关闭外部访问,然后iptables根据src ip用DNAT转发到本地的80和21 https://shareg.pt/J5pkDvy
我觉得你可以找chatgpt聊聊,不过我没试,不确定这个结果能不能用 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 本帖最后由 chillicez 于 2023-3-4 10:21 编辑
https://www.chengxiaobai.com/trouble-maker/trojan-shared-443-port-scheme
我现在一个vps就是按这个在433配了两个服务 前面加个路由然后配置根据源地址的端口映射,或者本机是linux就用iptables做类似的事情 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;
}
}
nginx 反代。域名区分
—— 来自 HONOR HPB-AN00, Android 12上的 S1Next-鹅版 v2.5.4 本帖最后由 ltycomputer 于 2023-3-4 11:56 编辑
sslh可以同端口复用ssh/ssl
haproxy也行,根据tcp包头分别https/ssh/open微屁恩转发到不同后端实现复用
然后sni可以继续区分不同https主机 连lfs都搞过的人,建议自己拿nc和bash/python写个简单小程序转发得了 你这个要用nginx做负载 Nginx根据预设ip分别转发 haproxy应该可以实现根据流量类型分流
不过你是否考虑清楚ftp有数据通道的
另外我的推荐是,机器上配两个IP地址(可以是loopback类型的),保证路由正常
然后http服务监听IPA,ftp监听IPB,其它的在iptables上做过滤,只允许C网段访问IPA的4444端口,同时只允许D网段访问IPB的4444端口
页:
[1]