Среда: C код, Linux
Что: Я хотел бы открыть порт на маршрутизаторе, используя UPNP для протокола S SH. Я знаю, как это сделать с помощью библиотеки miniupnp c. Я могу отправить запрос UPNP, и этот запрос состоит из: Внешний порт для перенаправления с Внутреннего порта для перенаправления на Внутренний адрес машины, принимающий S SH traffi c.
Проблема: В случае внутреннего компьютера имеет несколько интерфейсов eth, как мне найти подходящий?
Например: скажем, у меня есть:
eth0, address 10.10.10.1 [WAN connection]
eth1, address 20.20.20.1 [No WAN connection]
eth0 - это интерфейс, подключенный к маршрутизатору и имеющий доступ к глобальной сети. Eth1 - это интерфейс, подключенный к внутренней сети, не имеющий доступа к WAN.
Когда отправленный запрос UPNP должен содержать:
External port: 2222
Internal port: 22
Local machine address: 10.10.10.1 [eth0]
Вопрос:
Как из C кода я могу определить, какой интерфейс обращается к WAN? Я не должен запускать внешний скрипт, только код C. Использование внешней библиотеки в порядке.