Я хочу разместить сервер SIP и DNS в конце соединения ADSL2. Моя текущая сеть находится за брандмауэром iptables, который работает на компьютере Linux с двумя интерфейсами Ethernet, интерфейс WAN (eth0), подключающийся к моему провайдеру через модем ADSL, который после завершения согласования PPPoA становится по существу прозрачным. На стороне локальной сети брандмауэра (eth1) в настоящее время работает диапазон 10.0.1/24 RFC1918, который транслируется через брандмауэр без проблем со всем, что маскируется через один статический публичный IP-адрес, выделенный мне моим провайдером.

Диаграмма сети

Теперь мой ISP выделил мне /29: xyz104 /29 - так что xyz104 - xyz111, где .104 - сеть, а .111 - широковещательные адреса соответственно. Мой провайдер выделил адрес .110 в качестве маршрутизатора: то есть это общедоступный адрес, который мой модем обнаруживает при подключении к сети ADSL и который выделяет eth0.

Мне нужно настроить так, чтобы трафик к серверам за брандмауэром, которые имеют общедоступные IP-адреса, правильно входил и выходил, но диапазон 10.0.1/24 по-прежнему маскировался правильно. Может ли это быть сделано только с помощью iptables или мне также нужно определить какой-то статический маршрут? Будет ли eth1 также иметь адрес xyz110, назначенный ему, как eth0 (мой провайдер предложил это)?

Кроме того, брандмауэр должен быть настроен для разрешения входящих подключений SIP и RTP к моему SIP-серверу /ip pbx (Asterisk). Является ли iptables правильным инструментом для работы или я должен искать в другом месте?

1 ответ1

1

Это не совсем понятно из вашего описания, но похоже, что провайдер установил целую /29 в качестве подсети между своим маршрутизатором и вашей. xyz110 /29 - это провайдер и должен быть вашим шлюзом. Вашему маршрутизатору /брандмауэру также понадобится IP-адрес в этой подсети, скажем, xyz109 /29.

Другие 4 используемых IP-адреса в этой подсети (один из которых вы хотите назначить для использования VoIP) также должны быть подключены к этой подсети, но это не так. Увидеть ниже. Но сначала вот как это должно было быть сделано.

Что было бы лучше, так это если бы они разделили /29 на 2/30. xyz108 /30 будет небольшой подсетью между их маршрутизатором и вашим (с маршрутизатором на .110 и вашим на .109). Другой /30, xyz104 /30, представляет собой блок из 4 IP-адресов, которые они будут направлять вам. Ваш маршрутизатор /межсетевой экран может затем направить их внутри вашей сети по мере необходимости.

Но так как это один /29, вы должны включить функцию, называемую прокси ARP на вашем брандмауэре. Это некрасиво, но заставит маршрутизатора провайдера думать, что дополнительные серверы напрямую подключены к этой подсети /29.

echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp

Теперь, когда трафик для этих дополнительных IP-адресов будет поступать на ваш маршрутизатор / межсетевой экран, вам потребуются статические маршруты для маршрутизации дополнительных IP-адресов на серверы в вашей сети, которые будут их использовать. Вы можете назначить и направить каждый из 4 IP-адресов индивидуально как / 32s.

Вы захотите сделать исключение в правилах SNAT или MASQUERADE, чтобы трафик, поступающий из вашей сети из одного из этих 4 дополнительных IP-адресов, не был NAT. Я не знаю, как именно выглядят ваши правила iptables , но что-то вроде этого:

-A FORWARD -s x.y.z.104/29 -j ACCEPT   # stop if from those IPs
-A FORWARD -o eth1 -maybe-some-other-options -j SNAT   # NAT everything else

На сервере VoIP вы можете найти общедоступный IP-адрес, скажем, xyz105/32, в качестве дополнительного адреса в интерфейсе обратной связи. Убедитесь, что ваше программное обеспечение VoIP настроено на привязку и использование этого IP-адреса, в противном случае оно будет просто использовать свой обычный IP-адрес Ethernet (10.0.1. Что-то) по умолчанию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .