У меня роутер с публичным IP-адресом ADDR
и частный IP-адрес 192.168.1.1
.
У меня тоже есть общественное достояние DOMAIN
с записью A, указывающей на ADDR
.
Маршрутизатор имеет встроенный SMB-сервер.
Я могу получить доступ к общим ресурсам SMB изнутри, набрав \\ADDR\ShareName
в проводник Windows.
Однако я хочу иметь к ним доступ через \\DOMAIN\ShareName
внутренне.
В настоящее время это не работает, потому что Samba не прослушивает общедоступный интерфейс. Он прослушивает только частный интерфейс, и я, очевидно, не хочу менять это и вводить дыру в безопасности.
Поэтому я перенаправляю порт 445 из ADDR
к 192.168.1.1
когда источник находится в локальной подсети:
iptables -t nat -I PREROUTING 1 -s 192.168.0.0/16 -p tcp --dport 445 -j DNAT --to-destination 192.168.1.1:445
но это по какой-то причине не работает, и я не понимаю почему. (Я не знаю iptables
хорошо.)
Почему это не работает? И как заставить его работать?
(И да, cat /proc/sys/net/ipv4/ip_forward
дает 1
.)
Это не то, что вам следует решать с помощью iptables. Просто создайте отдельную внутреннюю зону для вашего домена и разрешите имя хоста локальному IP-адресу вашей службы.
Кстати, даже если iptables был решением, ваш 192.168.1.1
вероятно является частью 192.168.1.0/24
вместо того 192.168.0.0/16
.