{color:#ff0000}Примечание:{color} Эта инструкция подходит только при наличии статического белого адреса на интерфейсе. Для динамических адресов подойдет [эта инструкция|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=31948802]. Работе проброса портов может мешать опция меню локальной консоли "Конфигурирование сервера - Оптимизация сети - SNAT только указанных локальных сетей".
*Задача:* Пробросить порт 2254 с внешнего адреса 10.90.180.4 на порт 22 внутреннего ip 192.168.180.10
*1.* У абонента(сервера), на которого делаем портмаппинг, должен быть интернет, поэтому должно выполняться одно из двух условий:
\- Абонент является абонентом Carbon Billing
\- Для абонента прописаны 2 правила в таблице fw_custom_forward (их можно добавить как через менеджер так и в консоли, а также через [ics_tune.sh|http://docs.carbonsoft.ru//pages/viewpage.action?pageId=29032518])
{code}iptables -I fw_custom_forward -s <IP> -j ACCEPT
iptables -I fw_custom_forward -d <IP> -j ACCEPT{code}
*2.* Создаем правило портмаппинг (DNAT) также в файле [ics_tune.sh|http://docs.carbonsoft.ru//pages/viewpage.action?pageId=29032518]
{code}
iptables -t nat -I fw_custom_dnat -d 10.90.180.4 -p tcp --dport 2254 -m state --state NEW -j DNAT --to-destination 192.168.180.10:22
{code}
Если вы хотите опубликовать другую службу, то вместо 2254 нужно написать порт этой службы, (например, для SMTP это 25). Более подробно о возможностях вы можете узнать почитав про iptables на открытых ресурсах интернета.
*Проброс 80 порта не совместим с опцией в локальной консоли "Публиковать локальный сайт на внешних интерфейсах".*
*3.* При подключении к локальному серверу из локальной сети по внешнему адресу связи не будет. Эту проблему можно решить двумя способами:
*3.1* Создаем еще одно правило чтобы из локальной сети тоже можно было подключаться на внешний IP-адрес:
!Снимок-Редактирование правила-1.png|border=1!
{code}
iptables -t nat -I fw_custom_snat -s 192.168.180.0/24 -p tcp -d 10.90.180.4/32 --dport 2254 -j SNAT --to-source 1.2.3.4
{code}
В качестве адреса 1.2.3.4(SNAT адреса) может быть задан любой ip, не входящий в ту же сеть что и адрес абонента(сервера). При этом он может совпадать с адресом на локальной сетевой карте Carbon Billing.
Недостатками этого варианта является то, что будет происходить SNAT соединений абонента, в результате чего исходный адрес абонента будет неизвестен на сервере назначения и наличие дополнительного правила в файрволе.
*3.2* Чтобы этого избежать вместо пункта *3.1* можно настроить так:
\- На сервере в локальной сети добавить дополнительный IP-адрес из отдельной непересекающейся сети. (например, если у вас сеть 192.168.180.1/255.255.255.0, то 192.168.0.2/255.255.255.0). Если доступ по существующему IP-адресу в локальной сети не предполагается, то можно просто заменить существующий адрес на новый.
\- На локальной сетевой карте сервера Carbon Billing настроить дополнительный IP-адрес из выбранной подсети (например, 192.168.0.1/255.255.255.0).
\- Настроить авторизацию по IP для нового IP-адреса (192.168.0.2)
Это означает, что для этого сервера мы выделили отдельную не пересекающуюся подсеть. В идеале для этого нужен отдельный сетевой интерфейс, но в этом конкретном случае такое решение приемлемо.
*Задача:* Пробросить порт 2254 с внешнего адреса 10.90.180.4 на порт 22 внутреннего ip 192.168.180.10
*1.* У абонента(сервера), на которого делаем портмаппинг, должен быть интернет, поэтому должно выполняться одно из двух условий:
\- Абонент является абонентом Carbon Billing
\- Для абонента прописаны 2 правила в таблице fw_custom_forward (их можно добавить как через менеджер так и в консоли, а также через [ics_tune.sh|http://docs.carbonsoft.ru//pages/viewpage.action?pageId=29032518])
{code}iptables -I fw_custom_forward -s <IP> -j ACCEPT
iptables -I fw_custom_forward -d <IP> -j ACCEPT{code}
*2.* Создаем правило портмаппинг (DNAT) также в файле [ics_tune.sh|http://docs.carbonsoft.ru//pages/viewpage.action?pageId=29032518]
{code}
iptables -t nat -I fw_custom_dnat -d 10.90.180.4 -p tcp --dport 2254 -m state --state NEW -j DNAT --to-destination 192.168.180.10:22
{code}
Если вы хотите опубликовать другую службу, то вместо 2254 нужно написать порт этой службы, (например, для SMTP это 25). Более подробно о возможностях вы можете узнать почитав про iptables на открытых ресурсах интернета.
*Проброс 80 порта не совместим с опцией в локальной консоли "Публиковать локальный сайт на внешних интерфейсах".*
*3.* При подключении к локальному серверу из локальной сети по внешнему адресу связи не будет. Эту проблему можно решить двумя способами:
*3.1* Создаем еще одно правило чтобы из локальной сети тоже можно было подключаться на внешний IP-адрес:
!Снимок-Редактирование правила-1.png|border=1!
{code}
iptables -t nat -I fw_custom_snat -s 192.168.180.0/24 -p tcp -d 10.90.180.4/32 --dport 2254 -j SNAT --to-source 1.2.3.4
{code}
В качестве адреса 1.2.3.4(SNAT адреса) может быть задан любой ip, не входящий в ту же сеть что и адрес абонента(сервера). При этом он может совпадать с адресом на локальной сетевой карте Carbon Billing.
Недостатками этого варианта является то, что будет происходить SNAT соединений абонента, в результате чего исходный адрес абонента будет неизвестен на сервере назначения и наличие дополнительного правила в файрволе.
*3.2* Чтобы этого избежать вместо пункта *3.1* можно настроить так:
\- На сервере в локальной сети добавить дополнительный IP-адрес из отдельной непересекающейся сети. (например, если у вас сеть 192.168.180.1/255.255.255.0, то 192.168.0.2/255.255.255.0). Если доступ по существующему IP-адресу в локальной сети не предполагается, то можно просто заменить существующий адрес на новый.
\- На локальной сетевой карте сервера Carbon Billing настроить дополнительный IP-адрес из выбранной подсети (например, 192.168.0.1/255.255.255.0).
\- Настроить авторизацию по IP для нового IP-адреса (192.168.0.2)
Это означает, что для этого сервера мы выделили отдельную не пересекающуюся подсеть. В идеале для этого нужен отдельный сетевой интерфейс, но в этом конкретном случае такое решение приемлемо.