added xray-core role
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
- hosts: router
|
||||
become: yes
|
||||
roles:
|
||||
- xray-core
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"dns": {
|
||||
"tag": "dns-in",
|
||||
"servers": ["localhost"],
|
||||
"queryStrategy": "UseIPv4"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"port": 61219,
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "dokodemo-door",
|
||||
"settings": {
|
||||
"followRedirect": true,
|
||||
"network": "tcp,udp"
|
||||
},
|
||||
"streamSettings": {
|
||||
"sockopt": {
|
||||
"tproxy": "tproxy"
|
||||
}
|
||||
},
|
||||
"tag": "tproxy"
|
||||
},
|
||||
{
|
||||
"tag": "socks-in",
|
||||
"ip": "127.0.0.1",
|
||||
"port": 1080,
|
||||
"protocol": "socks",
|
||||
"settings": {
|
||||
"auth": "password",
|
||||
"accounts": [
|
||||
{
|
||||
"user": "embargo",
|
||||
"pass": "moistnes12"
|
||||
}
|
||||
],
|
||||
"udp": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"log": {
|
||||
"access": "/var/log/xray-core/access.log",
|
||||
"error": "/var/log/xray-core/error.log",
|
||||
"loglevel": "warning",
|
||||
"dnsLog": false,
|
||||
"maskAddress": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"policy": {
|
||||
"levels": {
|
||||
"0": {
|
||||
|
||||
"handshake": 4,
|
||||
"connIdle": 300,
|
||||
"uplinkOnly": 2,
|
||||
"downlinkOnly": 5,
|
||||
"statsUserUplink": false,
|
||||
"statsUserDownlink": false,
|
||||
"statsUserOnline": false,
|
||||
"bufferSize": 512
|
||||
}
|
||||
},
|
||||
"system": {
|
||||
"statsInboundUplink": false,
|
||||
"statsInboundDownlink": false,
|
||||
"statsOutboundUplink": false,
|
||||
"statsOutboundDownlink": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
- name: restart xray-core
|
||||
ansible.builtin.service:
|
||||
name: xray-core
|
||||
state: restarted
|
||||
listen: restart xray-core
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
- name: ensure /etc/xray-core exists
|
||||
ansible.builtin.file:
|
||||
path: /etc/xray-core/config
|
||||
state: directory
|
||||
mode: "0755"
|
||||
|
||||
- name: ensure /var/log/xray-core exists
|
||||
ansible.builtin.file:
|
||||
path: /var/log/xray-core
|
||||
state: directory
|
||||
mode: "0755"
|
||||
|
||||
- name: deploy static xray-core config
|
||||
ansible.builtin.copy:
|
||||
src: "{{ item }}"
|
||||
dest: "/etc/xray-core/config/{{ item }}"
|
||||
mode: "0744"
|
||||
loop:
|
||||
- dns.jsonc
|
||||
- inbounds.jsonc
|
||||
- log.jsonc
|
||||
- policy.jsonc
|
||||
|
||||
- name: deploy dynamic xray-core config
|
||||
ansible.builtin.template:
|
||||
src: "{{ item }}.j2"
|
||||
dest: "/etc/xray-core/config/{{ item }}"
|
||||
mode: "0744"
|
||||
loop:
|
||||
- observatory.jsonc
|
||||
- outbounds.jsonc
|
||||
- routing.jsonc
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
- name: install unbound
|
||||
ansible.builtin.package:
|
||||
name: unbound
|
||||
state: present
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
#- name: include unbound install
|
||||
# ansible.builtin.include_tasks: install.yml
|
||||
|
||||
- name: include xray-core configurure
|
||||
ansible.builtin.include_tasks: configure.yml
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"observatory": {
|
||||
"subjectSelector": ["vless-"],
|
||||
"probeUrl": "https://www.google.com/generate_204",
|
||||
"probeInterval": "30s",
|
||||
"enableConcurrency": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"outbounds": [
|
||||
{% for item in xray_outbounds %}
|
||||
{
|
||||
"tag": "vless-{{ item.tag }}",
|
||||
"protocol": "vless",
|
||||
"settings": {
|
||||
"vnext": [
|
||||
{
|
||||
"address": "{{ item.address }}",
|
||||
"port": 443,
|
||||
"users": [
|
||||
{
|
||||
"id": "{{ xray_id }}",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"encryption": "{{ xray_encryption }}"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"domainStrategy": "UseIPv4"
|
||||
},
|
||||
"streamSettings": {
|
||||
"network": "xhttp",
|
||||
"xhttpSettings": {
|
||||
"path": "{{ xray_xhttp_path }}",
|
||||
"mode": "stream-one"
|
||||
},
|
||||
"security": "tls",
|
||||
"tlsSettings": {
|
||||
"alpn": [
|
||||
"h2",
|
||||
"h3"
|
||||
],
|
||||
"fingerprint": "firefox"
|
||||
},
|
||||
"sockopt": {
|
||||
"mark": 255
|
||||
}
|
||||
}
|
||||
},
|
||||
{% endfor %}
|
||||
{
|
||||
"tag": "direct",
|
||||
"protocol": "freedom",
|
||||
"settings": {
|
||||
"domainStrategy": "UseIPv4"
|
||||
},
|
||||
"streamSettings": {
|
||||
"sockopt": {
|
||||
"mark": 255,
|
||||
"interface": "eth1",
|
||||
"tcpFastOpen": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "blocked",
|
||||
"protocol": "blackhole",
|
||||
"settings": {
|
||||
"response": {
|
||||
"type": "none"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"routing": {
|
||||
"domainStrategy": "IPIfNonMatch",
|
||||
{% if xray_outbounds | length > 1 %}
|
||||
"balancers": [
|
||||
{
|
||||
"tag": "balancer-vless",
|
||||
"selector": ["vless-"],
|
||||
"strategy": {
|
||||
"type": "leastLoad",
|
||||
"settings": {
|
||||
"costs": [
|
||||
{% for item in xray_outbounds %}
|
||||
{
|
||||
"match": "vless-{{ item.tag }}",
|
||||
"value": {{ item.value }}
|
||||
}{{ "," if not loop.last else "" }}
|
||||
{% endfor %}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
{% endif %}
|
||||
"rules": [
|
||||
{
|
||||
"type": "field",
|
||||
"protocol": ["bittorrent"],
|
||||
"outboundTag": "direct"
|
||||
},
|
||||
{
|
||||
"type": "field",
|
||||
"inboundTag": [
|
||||
"tproxy",
|
||||
"socks-in"
|
||||
],
|
||||
"balancerTag": "{{ 'balancer-vless' if xray_outbounds | length > 1 else 'vless-' ~ xray_outbounds[0].tag }}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user