Я запускаю контейнер Docker на машине с портом 8090. Скажем, IP-адрес этой машины 192.168.0.3
. Я хочу переслать 192.168.0.4:80
к 192.168.0.3:8090
. Доступ к машине возможен только из локальной сети.
Что я пробовал:
/ip firewall nat export
add action=dst-nat chain=srcnat dst-address=192.168.0.4 dst-port=80 \
src-address=192.168.0.0/24 to-address=192.168.0.3 to-port=8090 \
protocol=tcp
add action=masquerade chain=srcnat dst-address=192.168.0.4 dst-port=80 \
src-address=192.168.0.0/24 protocol=tcp
Это не работает.
Я что-то забываю? У меня такое чувство, что я упускаю из виду что-то простое, но не могу понять, что именно.
IP-адрес 192.168.0.4
ни к чему не разрешает в моей сети. Я просто хочу "назначить" и переслать его 192.168.0.3:8090
. Причина в том, что я хочу настроить локальное доменное имя, которое разрешается в контейнер Docker без необходимости указывать порт.
Ваши компьютеры в локальной сети пытаются напрямую подключиться к IP-адресам в своей подсети. Следовательно, компьютер («Рабочая станция») с IP-адресом 192.168.0.105
будет игнорировать шлюз по умолчанию при попытке достичь 192.168.0.4
и пытается отправить пакеты tcp напрямую.
Это не удастся, если никакой другой компьютер не отвечает на вызов рабочих станций («запрос arp») для MAC-адреса, принадлежащего 192.168.0.4
- и никто не ответит, так как этот IP-адрес не используется в вашей локальной сети.
У вас есть разные варианты решения:
192.168.0.4
к интерфейсу на брандмауэре и используйте брандмауэр для перенаправления этих пакетов192.168.0.4
к интерфейсу на вашем docker-host и перенаправить трафик на docker-host192.168.0.3
прямо вместо 192.168.0.4
могут существовать другие варианты.