У меня есть конфигурация маршрутизации, целью которой является маршрутизация всего трафика через туннель (utun3
) в клиент openvpn, который затем подключается к серверу openvpn (64.120.44.114
) через мой физический интерфейс (en0
).
Я хочу направить определенные приложения напрямую через физический интерфейс (en0
), а не через туннель (utun3
). В настоящее время пара маршрутизации 0/1
и 128.0/1
форсирует весь интернет-трафик через туннель.
Я подумал, что если бы я отправлял трафик на интернет-адрес из приложения, которое связывает его исходящий адрес с физическим интерфейсом (т.е. 10.0.1.15
), тогда этот трафик будет направляться через оставшийся маршрут по default
для интерфейса этого адреса (en0
). К сожалению, операционная система просто не может вместо этого направить эти пакеты:
$ ping 8.8.8.8 # or mtr 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=55 time=40.835 ms
$ ping -b utun3 8.8.8.8 # or mtr -a 10.12.44.16 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=55 time=42.036 ms
$ ping -b en0 8.8.8.8 # or mtr -a 10.0.1.15 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: sendto: No route to host
Могу ли я что-нибудь сделать, чтобы пакеты, отправленные с исходящим адресом, который был несовместим с переопределенным маршрутом 0/1
, 128.0/1
вместо этого использовали совместимый маршрут по default
? Если нет, существуют ли какие-либо другие способы настройки таблицы маршрутизации, которые могли бы служить для маршрутизации через en0
для конкретных приложений, но для маршрутизации через utun3
"по умолчанию"? Если такого метода в отношении маршрутизации не существует, можете ли вы порекомендовать какие-либо программные решения для выполнения маршрутизации для конкретного приложения или игнорирования таблицы маршрутизации? В моем случае в идеале программа должна работать на macOS.
У меня есть следующие интерфейсы:
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 60:03:08:8b:96:88
inet6 fe80::1c29:1e13:e8ba:fd3%en0 prefixlen 64 secured scopeid 0x5
inet 10.0.1.15 netmask 0xffffff00 broadcast 10.0.1.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
utun3: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 10.12.44.16 --> 10.12.44.16 netmask 0xfffffc00
У меня есть следующее в моей таблице маршрутизации:
default 10.0.1.1 UGSc 0 0 en0
10.0.1.1 0:24:36:a0:86:a5 UHLWIir 4 106 en0
64.120.44.114/32 10.0.1.1 UGSc 1 0 en0
0/1 10.12.44.1 UGSc 101 2 utun3
128.0/1 10.12.44.1 UGSc 12 0 utun3
10.12.44/22 10.12.44.16 UGSc 1 0 utun3
10.12.44.16 10.12.44.16 UH 3 170 utun3