1С за NAT`ом.

/ Просмотров: 752
1С за NAT`ом.

Например у нас есть сервер (linux) на котором установлен 1С сервер. Имя хоста сервера, например, SRV01, его ip-адрес 192.168.1.10.

Из локальной сети все благополучно работает. Задача - "выпустить" 1С сервер в интернет через NAT.

1. Настройка MikroTik для проброса портов.

Нам необходимо пробросить диапазон tcp-портов 1540-1590 к нашему серверу.

1. Добавляем маркер портов:

/ip firewall mangle
add action=mark-packet chain=prerouting comment="Connect to 1S Server" dst-port=1540-1590 in-interface=ether1 new-packet-mark=1s-connection passthrough=yes protocol=tcp

2. Перенаправляем пакеты с нашим маркером на 1С сервер:

/ip firewall nat
add action=netmap chain=dstnat comment="Connect to 1S Server" packet-mark=1s-connection to-addresses=192.168.1.10

2. Устранение проблемы "Этот хост неизвестен"

При попытке извне подключиться к базе 1С клиентом, скорее всего возникнет ошибка

"Ошибка при выполнении операции с информационной базой
server_addr=SRV01 descr=11001(0x00002AF9): Этот хост неизвестен.  line=581 file=srccoresrcNetworking.cpp"

Причина в том, что наш комп из интернета не знает о существовании хоста SRV01. Можно решить эту проблему порописав SRV01 в список хостов. Например под Windows в файл C:\Windows\System32\drivers\etc\hosts следует добавить строку:

123.45.67.89 SRV01 ; где 123.45.67.89 - наш белый ip адрес.

Но если у нас много клиентов, то всем внести подобные изменения проблематично, тем более, что для редактирования C:\Windows\System32\drivers\etc\hosts нужно обладать правами администратора.

Выход следующий. Создаем для нашего внешнего ip адреса (123.45.67.89) доменнеое имя, например server1s.mydomain.com

1. Переименовываем наш сервер:

hostname server1s.mydomain.com

2. Прописываем server1s.mydomain.com в файлах /etc/hostname И /etc/hosts

3. Перезагружаемся.

4. Проверяем имя хоста "uname -n"

5. Останавливаем 1С сервер

systemctl stop srv1cv8-8.3.22.2175@default.service

6. Во всех файлах домашней директории 1С рекурсивно меняем все "SRV01" на "server1s.mydomain.com"

find /home/usr1cv8/ -type f -print0 | xargs -0 sed -i 's/SRV01/server1s.mydomain.com/g'

7. Запускаем 1С сервер

systemctl start srv1cv8-8.3.22.2175@default.service

Теперь все внешние клиенты благополучно подключатся, а вот из локальной сети возникнут проблемы с "Этот хост неизвестен".

Для решения этой проблемы либо на каждом клиенте в C:\Windows\System32\drivers\etc\hosts, либо на локальном DNS-сервере прописываем

192.168.1.10 server1s.mydomain.com