Closed fyhong closed 5 months ago
无效我用ip rule分流,还是用interface分流,在断开pptp连接后都无法走第一个outbound
这是core的设计 在尝试bind到指定device失败后走系统默认 对于网卡可能掉线这样的复杂情况 建议设置mark然后使用策略路由指定网卡
我一开始是用mark来指定的。掉线后也是会返回默认网卡的。不会返回到我指定的第一个outbound.
首先 第二个outbound就算是炸了 也不会用第一个outbound 不知道你说的 “设定一个无效的outbound在第一行” 是干啥 其次 策略路由应该是不会回落的 有的话也是路由的问题不是core的问题
我用一份配置解释清楚一点
{
"inbounds": [
{ "port": 9295, "protocol": "vless", "settings": { "decryption": "none",
"clients": [
{ "id": "id01", "flow": "xtls-rprx-vision", "email": "id01" },
{ "id": "id02", "flow": "xtls-rprx-vision", "email": "id02" },
{ "id": "id03", "flow": "xtls-rprx-vision", "email": "id03" },
] },
"streamSettings": { "network": "tcp", "security": "reality",
"realitySettings": { "show": false, "dest": "www.xxx.com:443", "xver": 0,
"serverNames": [ "www.xxx.com" ],
"privateKey": "customkey",
"shortIds": [ "a1", "a2", "a3" ]
} }
}
],
"outbounds": [
{ "protocol": "shadowsocks", "tag": "ss3", "settings": { "servers": [ { "address": "server3", "port": 3333, "method": "chacha20-poly1305", "password": "3333" } ] } },
{ "protocol": "shadowsocks", "tag": "ss1", "settings": { "servers": [ { "address": "server1", "port": 1111, "method": "chacha20-poly1305", "password": "1111" } ] } },
{ "protocol": "shadowsocks", "tag": "ss2", "settings": { "servers": [ { "address": "Mserver2", "port": 2222, "method": "chacha20-poly1305", "password": "2222" } ] } },
],
"routing": {
"domainStrategy": "IPOnDemand",
"strategy": "rules",
"rules": [
{ "type": "field", "user": [ "id01" ] , "outboundTag": "ss1" },
{ "type": "field", "user": [ "id02" ] , "outboundTag": "ss2" },
]
}
}
以上配置是不是id01会走ss1出口,id02走ss2出口,id03没标记路由规则 ,走默认第一行ss3出口。就算ss1,ss2出口挂了, id01和id02并不会走freedom,而是直接断网 假如我将配置改为下面的样子
{
"inbounds": [
{ "port": 9295, "protocol": "vless", "settings": { "decryption": "none",
"clients": [
{ "id": "id01", "flow": "xtls-rprx-vision", "email": "id01" },
{ "id": "id02", "flow": "xtls-rprx-vision", "email": "id02" },
{ "id": "id03", "flow": "xtls-rprx-vision", "email": "id03" },
] },
"streamSettings": { "network": "tcp", "security": "reality",
"realitySettings": { "show": false, "dest": "www.xxx.com:443", "xver": 0,
"serverNames": [ "www.xxx.com" ],
"privateKey": "customkey",
"shortIds": [ "a1", "a2", "a3" ]
} }
}
],
"outbounds": [
{ "protocol": "shadowsocks", "tag": "ss3", "settings": { "servers": [ { "address": "server3", "port": 3333, "method": "chacha20-poly1305", "password": "3333" } ] } }, //一个虚构的ss节点,为了让没指定路由规则的ID断网
{ "protocol": "freedom", "settings": { "domainStrategy": "UseIP" }, "streamSettings": { "sockopt": { "mark": 1001 } }, "tag": "ss1" },
{ "protocol": "freedom", "settings": { "domainStrategy": "UseIP" }, "streamSettings": { "sockopt": { "mark": 1002 } }, "tag": "ss2" },
],
"routing": {
"domainStrategy": "IPOnDemand",
"strategy": "rules",
"rules": [
{ "type": "field", "user": [ "id01" ] , "outboundTag": "ss1" },
{ "type": "field", "user": [ "id02" ] , "outboundTag": "ss2" },
]
}
}
这时理论上应该是id01走ss1, id02走ss2, id03走ss3,
但当我的pptp连接断开后,ss1和ss2出口不存在了,理应id01和id02会走ss3,直接断网才对。 我现在的结果是id01和id02在没有ss1和ss2出口后,不会走ss3出口,而是走了系统自身网卡出口。会变成有网络连接,返回的是vps自身的IP。
你那个pptp掉线之后 ss1和ss2怎么可能消失 你为什么觉得它们会消失。。它们还是在的 会按照设置打上mark 再往后怎么走就是你自己路由的问题了 按照之前的interface的写法 情况和我说的一样 xray会尝试bind至指定interface 失败后在日志输出(然后你没填日志) 但是不会断开连接 会走默认
你那个pptp掉线之后 ss1和ss2怎么可能消失 。。它们还是在的 会按照设置打上mark 再往后怎么走就是你自己路由的问题了 按照之前的interface的写法 情况和我说的一样 xray会尝试bind至指定interface 失败后在日志输出(然后你没填日志) 但是不会断开连接 会走默认
他说的 “消失” 应该是指 不可用
你那个pptp掉线之后 ss1和ss2怎么可能消失 你为什么觉得它们会消失。。它们还是在的 会按照设置打上mark 再往后怎么走就是你自己路由的问题了 按照之前的interface的写法 情况和我说的一样 xray会尝试bind至指定interface 失败后在日志输出(然后你没填日志) 但是不会断开连接 会走默认
ss1就是ppp0网卡(pptp拨出来的) , ss2就是ppp1网卡 (pptp拨出来的) 当pptp意外断开后,这两个网卡就会消失。 就代表上面设置的ss1和ss2出口失效。。理论上所有Id会走s3(第一个默认outbound) 但实际运行的结果并不会。只会走系统eth0网卡
xray内部没有失效这个概念 哪怕你配置文件写个错的如果没panic它也只是会连不上一直报错而已 你取的sss123只是出站的名字而已 为什么你就是觉得网卡掉线出站会消失。。。
xray内部没有失效这个概念 哪怕你配置文件写个错的如果没panic它也只是会连不上一直报错而已 你取的sss123只是出站的名字而已 为什么你就是觉得网卡掉线出站会消失。。。
麻烦你看清楚,我哪里说出口消失了呢?我只是说出口失效。消失的是网卡。ppp0和ppp1。 你搞不懂我在问什么的话,你可以不回答的。上面的那位xqzr就能理解我的意思,人家选择不回答。 你连理解都理解不了就一直在这里乱说一通。有意思吗? 凡是好好看一下上面两个配置都知道我要表达的是什么。
失效了也一样啊 网卡掉了 出站在那还是走那两个出站 为什么
理应id01和id02会走ss3
到底谁在乱说一通啊。。。
需求,预期行为,最简可复现配置,日志。是真的一个都没
完整性要求
版本
描述
我想指定某个用户走pptp流量, 在linux连接pptp后,会出现一个ppp0之类的网卡, 我将它标记为table 1001 然后按以下配置,如果我设定es用户走pptp连接. 当我连接pptp时,分流完全没问题。但有时pptp连接在我不知情的情况下自动断开, 流量会自动跳动本地默认网卡。 哪怕我在outbund最前面加一个失效的出口,它仍然会走有效的默认网卡正常流量出口 inbound配置 { "type": "field", "user": [ "es1" ] , "outboundTag": "es1" }, { "type": "field", "user": [ "es2" ] , "outboundTag": "es2" },
outbound配置 { "protocol": "shadowsocks", "bad": "tag", "settings": { "servers": [ { "address": "aaa.com", "port": 11, "method": "chacha20-poly1305", "password": "111" } ] } }, //为了防止pptp断开时有网络连接,设定一个无效的outbound在第一行,但没效果。在pptp断开后,上面两个用户仍然会走vps自身的ip, 而且可以联网 { "protocol": "freedom", "settings": { "domainStrategy": "UseIP" }, "streamSettings": { "sockopt": { "mark": 1001 } }, "tag": "esros" }, { "protocol": "freedom", "settings": { "domainStrategy": "UseIP" }, "streamSettings": { "sockopt": { "interface": "ppp1"} }, "tag": "esros2" },
route配置 { "type": "field", "user": [ "es" ] , "outboundTag": "esros" }, { "type": "field", "user": [ "es2" ] , "outboundTag": "esros2" },
重现方式
将已连接的vpn边接断开,流量马上跳到vps主机默认ip. outbound第一行设置无效出口也没效果
日志
No response