mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2026-10-01 03:18:06 +03:00
Refine tproxy article layout
This commit is contained in:
@@ -20,18 +20,18 @@
|
||||
|
||||
---
|
||||
|
||||
[Создание TLS-туннеля с помощью Nginx или Haproxy для скрытия отпечатков](./nginx_or_haproxy_tls_tunnel.md) от <img src="https://avatars.githubusercontent.com/u/110686480?s=32" width="24" height="24" alt="a" style="display:inline-block;vertical-align:middle;border-radius:50%;margin:0 0.25em;"/> [@SQLimit](https://github.com/SQLimit)
|
||||
|
||||
Создание TLS-туннеля с помощью Nginx или Haproxy на стороне клиента и сервера для скрытия отпечатков.
|
||||
|
||||
---
|
||||
|
||||
[[Прозрачное проксирование] Исключение трафика Xray с помощью GID](./iptables_gid.md) от <img src="https://avatars2.githubusercontent.com/u/57820613?s=32" width="24" height="24" alt="a" style="display:inline-block;vertical-align:middle;border-radius:50%;margin:0 0.25em;"/> [@kirin](https://github.com/kirin10000)
|
||||
|
||||
Новый способ исключения трафика Xray при реализации прозрачного проксирования с помощью iptables/nftables.
|
||||
|
||||
---
|
||||
|
||||
[Создание TLS-туннеля с помощью Nginx или Haproxy для скрытия отпечатков](./nginx_or_haproxy_tls_tunnel.md) от <img src="https://avatars.githubusercontent.com/u/110686480?s=32" width="24" height="24" alt="a" style="display:inline-block;vertical-align:middle;border-radius:50%;margin:0 0.25em;"/> [@SQLimit](https://github.com/SQLimit)
|
||||
|
||||
Создание TLS-туннеля с помощью Nginx или Haproxy на стороне клиента и сервера для скрытия отпечатков.
|
||||
|
||||
---
|
||||
|
||||
[Направление определенного трафика через определенный выходной узел с помощью Xray для реализации "разделения" глобальной маршрутизации](./redirect.md) от <img src="https://avatars.githubusercontent.com/u/28607089?s=32" width="24" height="24" alt="a" style="display:inline-block;vertical-align:middle;border-radius:50%;margin:0 0.25em;"/> [@Zzz3m](https://github.com/Zzz3m)
|
||||
|
||||
Использование Xray по максимуму: реализация "разделения" трафика на основе fwmark, sendThrough или sockopt.interface.
|
||||
@@ -50,6 +50,6 @@
|
||||
|
||||
---
|
||||
|
||||
[Обратный прокси VLESS](./vless_reverse.md)
|
||||
[Обратный прокси VLESS](./vless_reverse.md) by <img src="https://avatars.githubusercontent.com/u/197331664?s=32" width="24" height="24" alt="a" style="display:inline-block;vertical-align:middle;border-radius:50%;margin:0 0.25em;"/> [@Meo597](https://github.com/Meo597)
|
||||
|
||||
Руководство по обратному проксированию VLESS.
|
||||
|
||||
@@ -162,7 +162,7 @@ sudo curl -oL /usr/local/share/xray/geosite.dat https://github.com/Loyalsoldier/
|
||||
|
||||
## Настройка маршрутизации по политике
|
||||
|
||||
```
|
||||
```sh
|
||||
sudo ip route add local default dev lo table 100 # Добавить таблицу маршрутизации 100
|
||||
sudo ip rule add fwmark 1 table 100 # Добавить правило для таблицы маршрутизации 100
|
||||
```
|
||||
@@ -171,9 +171,13 @@ sudo ip rule add fwmark 1 table 100 # Добавить правило для т
|
||||
|
||||
::: warning Внимание
|
||||
Выберите одну из следующих конфигураций: nftables или iptables. Не используйте обе одновременно.
|
||||
|
||||
Запишите выбранную конфигурацию в файл, выдайте ему права на выполнение и затем запустите этот файл от имени root.
|
||||
:::
|
||||
|
||||
```nftables
|
||||
::: code-group
|
||||
|
||||
```bash [nftables.conf]
|
||||
#!/usr/sbin/nft -f
|
||||
|
||||
flush ruleset
|
||||
@@ -211,14 +215,7 @@ table ip xray {
|
||||
}
|
||||
```
|
||||
|
||||
::: tip Использование
|
||||
|
||||
Запишите приведенную выше конфигурацию в файл (например, `nft.conf`), затем предоставьте файлу права на выполнение и выполните его от имени пользователя root ( `# ./nft.conf` ).
|
||||
:::
|
||||
|
||||
>
|
||||
|
||||
```bash
|
||||
```bash [iptables.sh]
|
||||
iptables -t mangle -N XRAY
|
||||
iptables -t mangle -A XRAY -d 10.0.0.0/8 -j RETURN
|
||||
iptables -t mangle -A XRAY -d 100.64.0.0/10 -j RETURN
|
||||
@@ -253,14 +250,31 @@ iptables -t mangle -A XRAY_SELF -p udp -j MARK --set-mark 1
|
||||
iptables -t mangle -A OUTPUT -j XRAY_SELF
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
После завершения настройки измените шлюз по умолчанию на других устройствах в локальной сети на IP-адрес этого устройства, и они смогут использовать VPN. После того, как вы проверите, что все работает правильно на других хостах и на самом устройстве, перейдите к следующему шагу.
|
||||
|
||||
## Настройка автозагрузки и сохранения конфигурации
|
||||
|
||||
Сначала переместите отредактированный файл конфигурации nftables в каталог `/etc` и переименуйте его в `nftables.conf`.
|
||||
Затем отредактируйте файл `/lib/systemd/system/nftables.service`.
|
||||
В зависимости от того, какой вариант Netfilter вы выбрали выше, используйте соответствующий способ сохранения конфигурации.
|
||||
|
||||
```ini
|
||||
- **Если используется `nftables`**
|
||||
|
||||
Сначала переместите подготовленный файл конфигурации в каталог `/etc`, затем отредактируйте `/lib/systemd/system/nftables.service`.
|
||||
|
||||
- **Если используется `iptables`**
|
||||
|
||||
Рекомендуется сразу установить `iptables-persistent`.
|
||||
|
||||
Во время установки система спросит, нужно ли сохранить текущую конфигурацию. Если правила `iptables` уже применены, выберите «Да». Если еще нет, это не проблема: после установки примените конфигурацию и выполните `netfilter-persistent save` (требуются права root).
|
||||
|
||||
После этого отредактируйте `/lib/systemd/system/netfilter-persistent.service`.
|
||||
|
||||
В конце включите выбранный сервис.
|
||||
|
||||
::: code-group
|
||||
|
||||
```ini [nftables.service]
|
||||
[Unit]
|
||||
Description=nftables
|
||||
Documentation=man:nft(8) http://wiki.nftables.org
|
||||
@@ -283,17 +297,7 @@ ExecStop=/usr/sbin/nft flush ruleset ; /usr/sbin/ip route del local default dev
|
||||
WantedBy=sysinit.target
|
||||
```
|
||||
|
||||
Наконец, выполните команду `systemctl enable nftables`.
|
||||
|
||||
Для сохранения конфигурации iptables рекомендуется установить пакет `iptables-persistent`.
|
||||
|
||||
Во время установки вам будет предложено сохранить конфигурацию.
|
||||
Если вы уже записали конфигурацию iptables в систему, выберите "Да".
|
||||
Если вы еще не записали конфигурацию, это не проблема. После установки запишите конфигурацию и выполните команду `netfilter-persistent save` (требуются права root).
|
||||
|
||||
Затем отредактируйте файл `/lib/systemd/system/netfilter-persistent.service`.
|
||||
|
||||
```ini
|
||||
```ini [netfilter-persistent.service]
|
||||
[Unit]
|
||||
Description=netfilter persistent configuration
|
||||
DefaultDependencies=no
|
||||
@@ -312,3 +316,5 @@ ExecStop=/usr/sbin/netfilter-persistent stop ; /usr/sbin/ip route flush dev lo t
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
@@ -266,7 +266,7 @@
|
||||
|
||||
### Настройка маршрутизации по политике
|
||||
|
||||
```bash
|
||||
```sh
|
||||
# Настройка маршрутизации по политике для IPv4
|
||||
ip rule add fwmark 1 table 100
|
||||
ip route add local 0.0.0.0/0 dev lo table 100
|
||||
@@ -299,7 +299,7 @@ ip -6 route add default via fd00:6868:6868::1 # Укажите IPv6-адрес
|
||||
В качестве примера рассмотрим dhcpcd. Отредактируйте файл `/etc/dhcpcd.conf` и добавьте следующие строки в конец файла. Измените IP-адреса в соответствии с вашей конфигурацией.
|
||||
`interface` - это имя сетевого интерфейса или беспроводного устройства, которое можно узнать с помощью команды `# ip link show`.
|
||||
|
||||
```
|
||||
```ini
|
||||
interface enp0s25
|
||||
static ip_address=192.168.31.100/24
|
||||
static ip6_address=fd00:6868:6868::8888/64
|
||||
@@ -312,13 +312,13 @@ static domain_name_servers=192.168.31.1 fd00:6868:6868::1
|
||||
::: warning Внимание
|
||||
|
||||
Выберите одну из следующих конфигураций: nftables или iptables. Не используйте обе одновременно.
|
||||
|
||||
Запишите выбранную конфигурацию в файл, выдайте ему права на выполнение и затем запустите этот файл от имени root.
|
||||
:::
|
||||
|
||||
### Использование iptables
|
||||
::: code-group
|
||||
|
||||
В этой конфигурации IPv4 и IPv6 объединены в одном файле.
|
||||
|
||||
```bash
|
||||
```bash [iptables.rules]
|
||||
# Проксирование устройств локальной сети (IPv4)
|
||||
iptables -t mangle -N XRAY
|
||||
iptables -t mangle -A XRAY -d 127.0.0.1/32 -j RETURN
|
||||
@@ -377,18 +377,7 @@ ip6tables -t mangle -I PREROUTING -p tcp -m socket -j DIVERT
|
||||
|
||||
```
|
||||
|
||||
::: tip Использование
|
||||
|
||||
Запишите приведенную выше конфигурацию в файл (например, `iptables.rules`), затем предоставьте файлу права на выполнение `# chmod 700 ./iptables.rules`.
|
||||
|
||||
Наконец, выполните файл от имени пользователя root: `# ./iptables.rules` или `# source iptables.rules`.
|
||||
:::
|
||||
|
||||
### Использование nftables
|
||||
|
||||
В этой конфигурации IPv4 и IPv6 объединены.
|
||||
|
||||
```
|
||||
```bash [nftables.rules]
|
||||
#!/usr/sbin/nft -f
|
||||
|
||||
flush ruleset
|
||||
@@ -427,11 +416,6 @@ table inet xray {
|
||||
|
||||
```
|
||||
|
||||
::: tip Использование
|
||||
|
||||
Запишите приведенную выше конфигурацию в файл (например, `nftables.rules`), затем предоставьте файлу права на выполнение `# chmod 700 ./nftables.rules`.
|
||||
|
||||
Наконец, выполните файл от имени пользователя root: `# ./nftables.rules` или `# source nftables.rules`.
|
||||
:::
|
||||
|
||||
Адреса шлюза `192.168.0.0/16`, `fd00::/8` и т.д. можно получить с помощью команд `ip address | grep -w inet | awk '{print $2}'` и `ip address | grep -w inet6 | awk '{print $2}'` [ссылка](https://xtls.github.io/document/level-2/iptables_gid.html#_4-%E8%AE%BE%E7%BD%AE-iptables-%E8%A7%84%E5%88%99).
|
||||
@@ -448,13 +432,19 @@ table inet xray {
|
||||
|
||||
Сначала убедитесь, что вы выполнили соответствующие команды Netfilter, описанные выше, и успешно протестировали настройку прозрачного проксирования, чтобы убедиться, что в дальнейшем будет сгенерирован правильный файл.
|
||||
|
||||
#### При использовании конфигурации iptables
|
||||
- **Если используется `iptables`**
|
||||
|
||||
1. Сохраните конфигурацию iptables в файлы `iptables.rulesv4` и `iptables.rulesv6` с помощью команд `# iptables-save > /root/iptables.rulesv4` и `# ip6tables-save > /root/iptables.rulesv6`.
|
||||
Сначала сохраните конфигурацию в `iptables.rulesv4` и `iptables.rulesv6` с помощью команд `# iptables-save > /root/iptables.rulesv4` и `# ip6tables-save > /root/iptables.rulesv6`.
|
||||
|
||||
2. Создайте файл с именем `tproxyrules.service` в каталоге `/etc/systemd/system/` и добавьте следующее содержимое:
|
||||
- **Если используется `nftables`**
|
||||
|
||||
```
|
||||
Сначала сохраните конфигурацию в `nftables.rulesv46` с помощью команды `# nft list ruleset > /root/nftables.rulesv46`.
|
||||
|
||||
Затем создайте `tproxyrules.service` в каталоге `/etc/systemd/system/`, запишите соответствующее содержимое для выбранного варианта и в конце выполните `systemctl enable tproxyrules`.
|
||||
|
||||
::: code-group
|
||||
|
||||
```ini [iptables tproxyrules.service]
|
||||
[Unit]
|
||||
Description=Tproxy rules
|
||||
|
||||
@@ -483,15 +473,7 @@ ExecStop=/sbin/ip rule del fwmark 1 table 100 ; \
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
3. Выполните команду `systemctl enable tproxyrules`.
|
||||
|
||||
#### При использовании конфигурации nftables
|
||||
|
||||
1. Сохраните конфигурацию nftables в файл `nftables.rulesv46` с помощью команды `# nft list ruleset > /root/nftables.rulesv46`.
|
||||
|
||||
2. Создайте файл с именем `tproxyrules.service` в каталоге `/etc/systemd/system/` и добавьте следующее содержимое:
|
||||
|
||||
```
|
||||
```ini [nftables tproxyrules.service]
|
||||
[Unit]
|
||||
Description=Tproxy rules
|
||||
|
||||
@@ -518,7 +500,7 @@ ExecStop=/sbin/ip rule del fwmark 1 table 100 ; \
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
3. Выполните команду `systemctl enable tproxyrules`.
|
||||
:::
|
||||
|
||||
::: tip tproxyrules.service
|
||||
|
||||
|
||||
Reference in New Issue
Block a user