Есть желание завернуть прозрачно с linux клиента (с самой системы) порты tcp 80,443 и udp 443.
С tcp проблем не возникло. DNAT отработал, xray подхватил адрес назначения через getsockopt(SO_ORIGINAL_DST).
Но в случае udp ни в какую. Сервер в outbound пытается лезть на 127.0.0.1 на прозначный порт клиента. Получается, что SO_ORIGINAL_DST не сработал, и был оставлен адрес назначения как dnat target.
Правила nft все абсолютно симметричны для udp и tcp.
Вариант tproxy слишком муторный для output, там проблема на проблеме и сложные схемы.
Есть у кого практический опыт ? Произвольный набор портов udp завернуть на один порт transparent udp, подхватив оригинальный адрес назначения и передав его на сервер
Судя по strace он че-то делает по приходу udp, но не getsockopt. То есть он даже не пытается взять оригинальный адрес. Похоже, что механизм работает только для TCP, xray об этом знает и не пытается.
А по приходу tcp все как ожидалось
Что я понял про эти xray-core клиенты, так версий там как собак.
И везде что-то меняют, в 25 почему-то даже tun нет. Он ругается как на любой левый протокол
Интересно. А я откатился с него, потому что они что-то поменяли в kcp, и он ругался на инвалидный размер пакетов. 25-26 по kcp несовместимы. 26 как-то стал очень тяжело запускаться на mips с малой памятью. Совсем тупит в разы