查看access日志
1
| tail -f /var/log/xray/access.log
|
保存iptables规则
1
| iptables-save > /etc/iptables/rules.v4
|
我的规则:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| # Generated by iptables-save v1.8.9 (nf_tables) on Wed Nov 6 01:06:46 2024 *mangle :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :XRAY - [0:0] :XRAY_MASK - [0:0] -A PREROUTING -j XRAY -A OUTPUT -p tcp -j XRAY_MASK -A OUTPUT -p udp -j XRAY_MASK -A XRAY -d 127.0.0.0/8 -j RETURN -A XRAY -d 10.0.0.0/24 -j RETURN -A XRAY -d 224.0.0.0/3 -j RETURN -A XRAY -p tcp -j TPROXY --on-port 12345 --on-ip 0.0.0.0 --tproxy-mark 0x1/0xffffffff -A XRAY -p udp -j TPROXY --on-port 12345 --on-ip 0.0.0.0 --tproxy-mark 0x1/0xffffffff -A XRAY_MASK -m owner --gid-owner 23333 -j RETURN -A XRAY_MASK -d 127.0.0.0/8 -j RETURN -A XRAY_MASK -d 10.0.0.0/24 -j RETURN -A XRAY_MASK -d 224.0.0.0/3 -j RETURN -A XRAY_MASK -j MARK --set-xmark 0x1/0xffffffff COMMIT # Completed on Wed Nov 6 01:06:46 2024
|
让xray运行在某用户上
1 2
| grep -qw xray_tproxy /etc/passwd || echo "xray_tproxy:x:0:23333:::" >> /etc/passwd nano /etc/systemd/system/xray.service
|
更改User
1 2 3 4 5 6 7 8 9 10 11 12 13
| [Unit] Description=Xray Service After=network.target
[Service] User=xray_tproxy ExecStart=/usr/local/bin/xray -config /etc/xray/config.json Restart=on-failure RestartSec=10s LimitNOFILE=65536
[Install] WantedBy=multi-user.target
|
1 2 3 4 5
| systemctl daemon-reload systemctl enable xray.service systemctl start xray.service systemctl status xray.service journalctl -u xray.service -f
|
Xray
的config.json
中outbound
不要忘了"streamSettings"
加一个"sockopt": {"mark": 2}
。
ip route 和 ip rule 命令持久化
方法 1
使用 /etc/iproute2/rt_tables
和 /etc/network/interfaces
文件
- 在
/etc/iproute2/rt_tables
中添加自定义路由表
编辑 /etc/iproute2/rt_tables
文件,添加一个自定义路由表条目(如果还没有的话)。
1
| echo "100 custom_table" | sudo tee -a /etc/iproute2/rt_tables
|
这会将 100 号路由表命名为 custom_table
,以便稍后可以引用它。
- 在
/etc/network/interfaces
中配置路由和规则
在 /etc/network/interfaces
文件中配置这些规则,以便在网络启动时自动加载。
1
| sudo nano /etc/network/interfaces
|
在文件末尾添加以下内容:
1 2 3
| # 添加到 loopback 接口的路由 up ip route add local default dev lo table 100 up ip rule add fwmark 1 table 100
|
方法 2:
使用 systemd
单元文件配置开机执行
如果 /etc/network/interfaces
中的配置未生效,或者希望以更系统化的方式管理这些命令,可以通过 systemd
创建一个服务文件来实现持久化。
- 创建 systemd 服务文件
1
| sudo nano /etc/systemd/system/custom-route.service
|
- 在文件中添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12
| [Unit] Description=Custom Routing Table and Rule After=network.target
[Service] Type=oneshot ExecStart=/sbin/ip route add local default dev lo table 100 ExecStart=/sbin/ip rule add fwmark 1 table 100 RemainAfterExit=true
[Install] WantedBy=multi-user.target
|
- 保存并关闭文件,然后启用和启动此服务:
1 2 3
| sudo systemctl daemon-reload sudo systemctl enable custom-route.service sudo systemctl start custom-route.service
|
- 验证配置
使用以下命令检查路由和规则是否生效:
1 2
| ip route show table 100 ip rule list
|
但是上面两种方法看起来还是iptables-persistent
方便