zhangke5959 / strongswan

支持国密sm1,sm2,sm3,sm4算法的ipsec vpn。
Other
99 stars 74 forks source link

隧道建立好后,可以ping通,但是无法访问服务端内网中的网络服务 #11

Open allen0228 opened 3 years ago

allen0228 commented 3 years ago

使用作者的国密strongswan项目配置了roadwarrior + 虚拟ip 环境的vpn,配置好后,客户端可以ping通服务器端内网地址,但是访问不了服务器端内网中的http服务。配置如下: server: connections { rw { pools = rw_pool local { auth = pubkey certs = server.cert.pem id = "vpn-server" } remote { auth = pubkey } proposals = sm4cbc-sm3-sm2dh children { net-net { local_ts = 10.0.0.0/24 esp_proposals = sm4cbc-sm3-sm2dh } } } } pools { rw_pool { addrs = 10.0.2.0/24 } } client: connections { home { remote_addrs = 192.168.0.132 vips = 0.0.0.0 local { auth = pubkey certs = client.cert.pem id = "C=cn, O=jit, CN=VPN Client" } remote { auth = pubkey id = "vpn-server" } proposals = sm4cbc-sm3-sm2dh children { home { remote_ts = 10.0.0.0/24 start_action = start esp_proposals = sm4cbc-sm3-sm2dh } } } } 测试后发现配置修改成下面的,就没问题了: 将client和server配置中,esp_proposals = sm4cbc-sm3-sm2dh 注释掉,使用默认的AES_CBC_128/HMAC_SHA2_256_128/NO_EXT_SEQ就没问题了

allen0228 commented 3 years ago

抓包后发现使用esp_proposals = sm4cbc-sm3-sm2dh配置时,包的负载中都是明文,没有加密??

ruce-fan commented 3 years ago

抓包后发现使用esp_proposals = sm4cbc-sm3-sm2dh配置时,包的负载中都是明文,没有加密??

无法访问内网服务的问题你解决了吗?

allen0228 commented 3 years ago

解决了,代码有点bug,修改一些代码后就好了 修改文件:src/libstrongswan/plugins/gmalg/gmalg/private_include/sm4.h,将函数声明的参数中len的数据类型修改为u32 修改前: void sm4_ecb_encrypt(sm4_ctx ctx, u8 key, u8 in, u8 len, u8 out); void sm4_ecb_decrypt(sm4_ctx ctx, u8 key, u8 in, u8 len, u8 out);

修改后:

void sm4_ecb_encrypt(sm4_ctx ctx, u8 key, u8 in, u32 len, u8 out);

void sm4_ecb_decrypt(sm4_ctx ctx, u8 key, u8 in, u32 len, u8 out);

相应地将src/libstrongswan/plugins/gmalg/gmalg/sm4.c文件中sm4_ecb_encrypt,sm4_ecb_decrypt两个函数定义的参数len的数据类型也改为u32

------------------ 原始邮件 ------------------ 发件人: "zhangke5959/strongswan" <notifications@github.com>; 发送时间: 2021年1月20日(星期三) 晚上8:04 收件人: "zhangke5959/strongswan"<strongswan@noreply.github.com>; 抄送: "李涛"<179798679@qq.com>;"Author"<author@noreply.github.com>; 主题: Re: [zhangke5959/strongswan] 隧道建立好后,可以ping通,但是无法访问服务端内网中的网络服务 (#11)

抓包后发现使用esp_proposals = sm4cbc-sm3-sm2dh配置时,包的负载中都是明文,没有加密??

无法访问内网服务的问题你解决了吗?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

ruce-fan commented 3 years ago

解决了,代码有点bug,修改一些代码后就好了 修改文件:src/libstrongswan/plugins/gmalg/gmalg/private_include/sm4.h,将函数声明的参数中len的数据类型修改为u32 修改前: void sm4_ecb_encrypt(sm4_ctx ctx, u8 key, u8 in, u8 len, u8 out); void sm4_ecb_decrypt(sm4_ctx ctx, u8 key, u8 in, u8 len, u8 out); 修改后: void sm4_ecb_encrypt(sm4_ctx ctx, u8 key, u8 in, u32 len, u8 out); void sm4_ecb_decrypt(sm4_ctx ctx, u8 key, u8 in, u32 len, u8 out); 相应地将src/libstrongswan/plugins/gmalg/gmalg/sm4.c文件中sm4_ecb_encrypt,sm4_ecb_decrypt两个函数定义的参数len的数据类型也改为u32 ------------------ 原始邮件 ------------------ 发件人: "zhangke5959/strongswan" <notifications@github.com>; 发送时间: 2021年1月20日(星期三) 晚上8:04 收件人: "zhangke5959/strongswan"<strongswan@noreply.github.com>; 抄送: "李涛"<179798679@qq.com>;"Author"<author@noreply.github.com>; 主题: Re: [zhangke5959/strongswan] 隧道建立好后,可以ping通,但是无法访问服务端内网中的网络服务 (#11) 抓包后发现使用esp_proposals = sm4cbc-sm3-sm2dh配置时,包的负载中都是明文,没有加密?? 无法访问内网服务的问题你解决了吗? — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

我试了下,cbc的也得改下ssh才能成功,多谢!!