Назад | Перейти на главную страницу

Реализация полумоста PPPoE / сквозной IP-адресации для соответствия межсетевому экрану IPSec VPN с Linux

(Я редактирую свой вопрос и отправляю ответ всем, кто окажется в аналогичном положении.)

Я хотел бы, чтобы брандмауэр, для которого требуется общедоступный статический IP-адрес на внешнем интерфейсе, использовался с одобренным интернет-провайдером ADSL-модемом. (Эта установка не рекомендуется, поскольку служба ADSL и модем являются потребительскими, но нам нужно сэкономить деньги.)

Модем может действовать как маршрутизатор, что означает, что он будет преобразовывать весь трафик через NAT и использовать публичный статический IP-адрес службы 1 на своем внешнем интерфейсе. Мы не можем использовать общедоступную подсеть за этим NAT, так как это не поддерживается этой службой ADSL.

Другой вариант состоит в том, что этот модем может действовать как полноценный мост, но брандмауэр не может прервать соединение PPP.

Есть один модем (DrayTek Vigor 120), который я мог бы приобрести, который поддерживает режим полумоста (DrayTek называет это «True-DMZ»), где одному устройству за модемом назначается один общедоступный статический IP-адрес ADSL-канала. Это сработало, но, к сожалению, у нас возникли не связанные с этим проблемы с линией ADSL, и мы не смогли получить поддержку от нашего интернет-провайдера при использовании этого модема.

Как мне настроить компьютер с Linux так, чтобы он завершал соединение PPP в режиме полумоста?

Я использовал Debian на ПК с тремя сетевыми адаптерами (1 для управления, 1 для подключения к модему, 1 для подключения к брандмауэру). Я закончил с eth0 = management, eth1 = modem, eth2 = firewall, ppp0 = ADSL service и lo.

  1. Подготовьте компьютер с помощью ppp (и pppoeconf, если необходимо) [примечание: этот компьютер потеряет подключение к Интернету, когда все это настроено]
  2. Переведите модем в режим полного моста
  3. Настройте ppp и подключитесь, проверьте подключение и т. Д.
  4. Настройте eth1 и eth2 как "auto ethИкс"и" iface ethИкс"в / etc / network / interfaces
  5. Добавьте следующее в / etc / ppp / ip-up (непосредственно перед строкой run-parts):

    ifconfig ppp0 IP в подсети, которую вы никогда не будете использовать/CIDR этой подсети

    ifconfig eth2 вверх

    ifconfig eth2 ваш публичный IP/ваша общедоступная подсеть

    ip route удалить по умолчанию

    ip route добавить dev по умолчанию ppp0

    очистка кеша маршрута IP

У вас должна получиться таблица маршрутов, которая выглядит так:

  • 0.0.0.0/0 ppp0
  • сеть вашего публичного IP/подсеть вашего публичного IP eth2
  • сеть, о которой вы не заботитесь/подсеть ppp0

Как это работает:

  • eth1 не нужен IP-адрес, поскольку PPPoE - это фрейм-протокол
  • eth2 получает другой IP в той же подсети, что и ваш публичный IP
  • ppp0 получает IP, который вам не важен (но не конфликтует ни с чем, что вас волнует)
  • когда пакет прибывает из ADSL, его источником будет какой-то другой общедоступный IP-адрес, а его местом назначения будет ваш общедоступный IP-адрес: он будет выходить из eth2 (из-за маршрута №2)
  • когда пакет прибывает из брандмауэра, его источником будет ваш общедоступный IP-адрес, а его местом назначения будет какой-то другой общедоступный IP-адрес: он будет выходить из ppp0 (из-за маршрута по умолчанию)

Пример:

Скажем, ваш общедоступный IP-адрес - 1.1.1.100/24, а ваш шлюз - 1.1.1.1 (наш интернет-провайдер назначил нам что-то вроде этого; насколько я понимаю, вы обычно получаете 1.1.1.100/32 без шлюза). Скажите также, что 172.16.1.0/24 - это сеть, которую вы никогда нигде не будете использовать. Так:

ifconfig ppp0 172.16.1.1/24

ifconfig eth2 up

ifconfig eth2 1.1.1.101/24

ip route delete default

ip route add default dev ppp0

ip route flush cache

Ваша таблица маршрутов:

  • 0.0.0.0/0 ppp0
  • 1.1.1.0/24 eth2
  • 172.16.1.0/24 ppp0

Обратите внимание, что вы назначаете eth2 1.1.1.101, а не 1.1.1.100. Eth2 должен находиться в той же подсети, что и ваш общедоступный IP-адрес, но не сам общедоступный IP-адрес.

Предостережение:

Вам нужно будет использовать либо реальную подсеть, используемую вашим интернет-провайдером (например, 1.1.1.0/24), либо создать фиктивную (и использовать / 30, чтобы уменьшить ее как можно меньше). Другие IP-адреса (обычно это другие клиенты вашего интернет-провайдера) в этой подсети в Интернете станут для вас недоступны.