Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wiki写得看不懂 #100

Open
monkuu opened this issue Sep 15, 2015 · 17 comments
Open

wiki写得看不懂 #100

monkuu opened this issue Sep 15, 2015 · 17 comments

Comments

@monkuu
Copy link

monkuu commented Sep 15, 2015

有很多不明所以,哪些是在本机操作的,哪些是vps上的。
ansible_host应该怎么写,一会儿servername.example.com ansible_ssh_host=ip.of.server ansible_ssh_user=some-user, 一会儿testvm.example.com ansible_ssh_host=192.168.1.14 ansible_ssh_user=vagrant ansible_sudo=true.

一会儿执行ansible-playbook ipsec.yml -l testvm.example.com,一会儿又是说run ansible-playbook PLAYBOOK_NAME.yml to setup servers

如果只是在vps上给自身部署怎么操作? 没有域名只是ip又是怎么操作?

跟Shadowsock的wiki明了易懂比起来,差距蛮大的。希望好好改善一下语言逻辑水平。

@ftao
Copy link
Owner

ftao commented Sep 15, 2015

确实文档很不完整。对于不了解 ansible 这个工具本身的人,比较难看懂。
建议你了解一些 ansible 的工作机制和概念, 再看会清楚很多。
http://docs.ansible.com/ansible/index.html

关于只是在 vps 给自己部署的话, 大部分的playbook 应该都可以直接使用 -i ansible_hosts.local
比如

ansible-playbook -i ansible_hosts.local  pptp.yml  

也有可能一些没有playbook 没有在ansible_hosts.local 里面定义 对应的group, 会报错。

@S1U
Copy link

S1U commented Sep 16, 2015

要装的是IKEv2,用了ansible-playbook -i ansible_hosts.local ipsec.yml, 而且改了group_vars/ipsec.yml里的IKEv2部分

ikev2_users: []                                              
ikev_users:                                                   
  - username: "user1"                                         
    password: "pass1"                                         
#  - username: "user2"                                         
#  password: "passw"   

试了下,只能原始group_vars/ipsec.yml里面预先定义的ikev1_users的用户名密码能连上,上面去掉注释后IKEv2的用户名密码连不上。

@ftao
Copy link
Owner

ftao commented Sep 16, 2015

group_vars/ipsec.yml 头上的

ipsec_enable_ikev2: false

改成 true , 改了吗?

你参考的IKEv2 文档是这个吗?

https://github.com/ftao/vpn-deploy-playbook/wiki/Setup-IKEv2-VPN-Server

@S1U
Copy link

S1U commented Sep 16, 2015

放弃了,还是不行。enable了,local的运行完了之后,mac还是连不上ikev2。 ip:9441/ios8-profile下面没有mobileconfig文件,osx下面到有servercert.pem,但没效果,还是连不上。

再试了加了个vps,用1个运行ansible-playbook到另一个vps部署ipsec,而且default/main.yml里面也改了 ip as domain = true ssh connecting 有问题。用了 -vvvv 说debug,没有用啊。

PLAY [ipsec] ****************************************************************** 

GATHERING FACTS *************************************************************** 
fatal: [另外一个VPS的IP] => SSH Error: Permission denied (publickey,password).
    while connecting to 另外一个VPS的IP:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

TASK: [common | update apt cache] ********************************************* 
FATAL: no hosts matched or all hosts have already failed -- aborting


PLAY RECAP ******************************************************************** 
           to retry, use: --limit @/root/ipsec.retry

另外一个VPS的IP                : ok=0    changed=0    unreachable=1    failed=0 

ansible_hosts里面是这么写吗?

ansible_ssh_host=另外一个VPS的IP  ansible_ssh_user=root  ansible_sudo=true

[ipsec]
另外一个VPS的IP

ps. 两个VPS都是Debian 7

@ftao
Copy link
Owner

ftao commented Sep 16, 2015

生成 ios 配置文件, 需要设置 ipsec_gen_ios8_profile: true 这个参数。
另外一台机器, 如果不是密钥认证, 需要输入密码的话, 运行 playbook 的时候加上 -k 参数。

ansible-playbook   -k   .......... 

@S1U
Copy link

S1U commented Sep 16, 2015

是有true的。

提示to use the 'ssh' connection type with passwords, you must install the sshpass program。这里面的坑真是不少啊。。。

@S1U
Copy link

S1U commented Sep 16, 2015

可以安装在另一个vps上安装了,但是还是只能ikev1能连上,2就是连不上,ipsec.yml配置这样,两个证书都trule,但是安装后在另个vps的 /var/www/ikev2/ 下面ios的目录下面就没有证书,osx下面的证书导入mac并设置always trust后,还是提示连接 用户认证失败。

ipsec_enable_l2tp: false
ipsec_enable_ikev1: true
ipsec_enable_ikev2: true

# the generated server cert should also be imported to osx

ipsec_domain: "{{ inventory_hostname }}"
ipsec_bind_ip:  "{{ ansible_default_ipv4.address }}"
ipsec_subnet: 10.7.0.0/24

ipsec_use_radius: false
ipsec_radius_servers:
  - host: 127.0.0.1
    secret: some-radius-secret

ipsec_dns_servers:
   - 8.8.8.8
   - 8.8.4.4

ipsec_psk: "psk"
ikev1_users:
  - username: "user"
    password: "pass"

ikev2_users: []                                               
ikev_users:                                                   
  - username: "user1"                                         
    password: "pass1"                                         
#  - username: "user2"                                        
#    password: "passw"  

ipsec_gen_ios8_profile: true                                  
ipsec_ios8_include_password: true 

在被装的vps上查看 /etc/ipsec.secrets,发现

: PSK "psk"
user : XAUTH "pass"
: RSA /etc/ipsec.d/private/server_key.pem

@ftao
Copy link
Owner

ftao commented Sep 16, 2015

这一段写错了

ikev2_users: []                                               
ikev_users:                                                   
  - username: "user1"                                         
    password: "pass1"    

应该是

ikev2_users:                                                   
  - username: "user1"                                         
    password: "pass1"    

似乎我的模版的里面也写错了。

@monkuu
Copy link
Author

monkuu commented Sep 16, 2015

好嘛,原来坑在这里。。。

重新弄了下,另一VPS响应目录下出现 user2.mobileconfig 和 user2.signed.mobileconfig 安装到iphone后用相应的profile生成的vpn去连接,不管用哪个导入的都不能连接成功,没有提示,直接断开。点进 vpn的设置里面,只有显示 type ikev2,其他什么都没有。

如果用普通正常添加vpn操作,就是 填ip,用户名,密码,psk密钥,也不能连接,提示 negotiation with the vpn server failed.

在mac上没有导入server_cert.pem ,按正常添加vpn设置能连接成功。

mac上ikev1和2都可以连接,iphone上都连接不了,win7上也一样连接不了。


用上面的应用在目标vps的 group_vars/ipsec.yml 的配置,装在控制机vps上面,就是本机安装,ansible-playbook -i ansible_hosts.local ipsec.yml, mac和iphone不用证书,ikev1和2都能连接。而win7无论ikev1还是2都连不上。真是奇葩。

满满的坑啊。。。。

@noahlu
Copy link

noahlu commented Oct 10, 2015

同样没弄明白,系统Debian,想装IKEv2,但是按照文档装完,手机iOS9里连不上vpn。。

装在本机,安装命令

sudo ansible-playbook -i ansible_hosts.local ipsec.yml 

group_vars/ipsec.yam 文件如下

---
ipsec_enable_l2tp: false
ipsec_enable_ikev1: false
ipsec_enable_ikev2: true

# the generated server cert should also be imported to osx

ipsec_domain: "{{ inventory_hostname }}"
ipsec_bind_ip:  "{{ ansible_default_ipv4.address }}"
ipsec_subnet: 10.7.0.0/24

ipsec_use_radius: false
ipsec_radius_servers:
  - host: 127.0.0.1
    secret: some-radius-secret

ipsec_dns_servers:
   - 8.8.8.8
   - 8.8.4.4

ipsec_psk: "a_long_long_psk"
ikev1_users:
  - username: "a_secret_vpn_username"
    password: "a_secret_vpn_password"

#uncomment following lines to add ikev2 users
ikev2_users:
  - username: "***"
    password: "***"

# uncomment next line if your want to connect to the server by ip address instead of domain name
ipsec_use_ip_as_domain: true

@ftao
Copy link
Owner

ftao commented Oct 11, 2015

@noahlu ios9 的内置 ikev2 界面确实还没有测试过。
可能的原因是还是需要导入证书, 直接配置的话自动生成的证书是不被接受的。
考虑设置这个变量。
https://github.com/ftao/vpn-deploy-playbook/wiki/Setup-IKEv2-VPN-Server

ipsec_gen_ios8_profile: true   #自动生成ios8 profile

@noahlu
Copy link

noahlu commented Oct 13, 2015

多谢啦,不过还是有问题。

我按照https://github.com/ftao/vpn-deploy-playbook/wiki/Setup-IKEv2-VPN-Server 里写了一个group_vars/localhost.yml。

然后执行:

sudo ansible-playbook -i ansible_hosts.local localhost.yml 

我直接用ansible_hosts.local 生成出来的mobileconfig文件里都是localhost,没有服务器地址嘛...所以依然连不上

以下是iOS上连vpn的日志

Oct 13 12:23:33 lus-iPhone nesessionmanager[120] <Error>: Plugin com.apple.neplugin.IKEv2 does not have a bundle URL
Oct 13 12:23:33 lus-iPhone neagent[3982] <Error>: IKEv2 Plugin: ikev2_dns_callback: Error -65554
Oct 13 12:23:33 lus-iPhone configd[30] <Notice>: network changed
Oct 13 12:23:33 lus-iPhone neagent[3982] <Notice>: BUG in libdispatch client: kevent[EVFILT_READ] delete: "Bad file descriptor" - 0x9
Oct 13 12:23:33 lus-iPhone neagent[3982] <Error>: Send failed (Can't assign requested address)
Oct 13 12:23:33 lus-iPhone symptomsd[118] <Error>: -[FlowAnalyticsEngine _newFlowData:] netanalyticsdebug: (2) no head-end for flow localhost, discarding all its records
Oct 13 12:23:45 lus-iPhone neagent[3982] <Error>: Failed to receive IKE SA Init packet
Oct 13 12:23:46 lus-iPhone nesessionmanager[120] <Notice>: NESMIKEv2VPNSession[noahlu localhost IKEV2:7AFD498C-0EA7-49F9-B6AC-33967C81A726]: status changed to disconnecting

@ftao
Copy link
Owner

ftao commented Oct 13, 2015

我更新了一下文档。

如果生成的iOS 中配置文件不正确, 可以考虑设置 ipsec_domain, ipsec_remote_address 为可以正确访问的域名或者IP 地址, 并且保证两者是一致的。
来保证生成的配置文件中的地址或者域名是正确的。

ipsec_domain: "ip or domain of the server"
ipsec_remote_address: "ip or domain of the server" 

@noahlu
Copy link

noahlu commented Oct 13, 2015

现在配置文件ip对了,还是连不上,是不是 ipsec.yml里没配置ikev2的role?

- hosts: ipsec

  roles:
    - common
    - strongswan
    - role: l2tp
      when: ipsec_enable_l2tp

    - role: ppp-radiusclient
      when: ipsec_enable_l2tp and l2tp_use_radius
      device_type: l2tp
      radius_servers: "xxx"

    - nat

    - role: static-site
      nginx_site_name: 'ipsec-profile-host'
      nginx_site_server_name: 'xxx'
      nginx_site_port: 9441
      nginx_site_ssl_on: false
      nginx_site_root: /var/www/ikev2/
      when: ipsec_gen_ios8_profile


@ftao
Copy link
Owner

ftao commented Oct 13, 2015

ikev2 的role 就是 strongswan . 这个配置上没有问题。
还连不上的话, 你看一下服务器的配置文件吧。

/etc/ipsec.conf

另外你可能要把服务器上面的

/etc/ipsec.d/certs/server_cert.pem

删掉, 然后重新跑, 因为这里面的域名可能是错的。

这是一个bug, 应该修改域名之后, 重新跑的时候, 重新生成这个文件。

@noahlu
Copy link

noahlu commented Oct 14, 2015

哎,还是不行。。。

@tkinglee
Copy link

@noahlu 这个问题解决了么?我也遇到了这个 Plugin com.tkinglee.rabbit does not have a bundle URL 问题 最后怎样解决的?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants