正式机不联网,测试机联网,正式机可以和测试机通讯,spring boot 项目需要使用某个 SDK 发消息到外网,SDK 使用的域名是写死的( https://..com ,SDK 发送请求使用的依赖是 apache 的 httpclient 。万能的 V 友,应该如何才能优雅的把请求发出去?
1
aminobody 4 天前
SOCKS 代理
|
2
NASK OP @aminobody #1 可以详细说一下吗,目前那个 SDK 的 httpclient 对象是 new 出来的,不被 spring 管理,除非使用 AspectJ 的 aop ,不然无法修改 sdk 发请求时的行为()。
|
3
NASK OP @aminobody #1 试过使用 AspectJ 运行时织入拦截 httpclient ,感觉很麻烦 https://qvqw.date/posts/%E4%BD%BF%E7%94%A8aspectj%E6%8B%A6%E6%88%AA%E7%AC%AC%E4%B8%89%E6%96%B9sdk%E8%AF%B7%E6%B1%82/
|
4
liangxiangdong 4 天前
我能想到的两个方案是
|
5
liangxiangdong 4 天前 1
我能想到的两个方案是
1.配置 hosts,然后另外一台机器 nginx 代理出去。 2.配置有网那台机器为网关,iptables 配置一下转发。 |
6
yinmin 4 天前 1
最优雅的方式:在测试机的 443 端口架设 SNI Proxy ,然后正式机的 hosts 文件将域名指向测试机 ip 地址
|
8
dcsuibian 4 天前
正式机加条路由,测试机开启转发不就好了?
|
9
NASK OP @yinmin #6 可以通过一下思路吗,我尝试了在联网的测试机使用 https://gost.run/tutorials/protocols/sni/,正式机在 hosts 把域名对应的 ip 设置成测试机,但是在正式机使用 curl 无法访问我测试的域名
|
11
yinmin 4 天前 via iPhone 1
@NASK #10 建议加 sni 白名单,只允许特定的域名通过 sni proxy 提升安全性(主要是避免给被扫描出来,有些单位是要吃罚单的)
|
12
jeesk 4 天前 via Android
1. 如果固定域名不变,可以采用 Tun proxy 和自定义 dns 解析。
2. 如果用 java 直接使用 proxyselecor 接管请求就行了。 |
13
LOVOQ 4 天前
iptables 配置一下出入站白名单应该就行。其他流量 deny 掉。
|