1

У меня есть какой-то Debian server-gateway-zombie, который имеет два сетевых интерфейса: eth0 и wlan0 (да, wlan0 ... Я знаю.).

eth0 подключен к интернет-кабельному модему, который назначает ему адрес IPv6. Давайте предположим, что это назначение только для IPv6. (На самом деле он использует DS Lite, но давайте пока проигнорируем это.)

wlan0 подключен к локальной сети на основе IPv4 с главным шлюзом, который является еще одним кабельным модемом в Интернете. Этот второй кабельный модем получает IPv4-адрес только от провайдера и использует NAT для переадресации портов на локальные компьютеры.

Важная часть /etc/network/interfaces сервера-зомби выглядит следующим образом:

allow-hotplug eth0 iface eth0 inet static
    # Ignore the following IPv4 stuff...
    # I just added this to connect to the cable modem more conveniently
    address 192.168.0.22 
    netmask 255.255.255.0
    gateway 192.168.0.1

auto wlan0 iface wlan0 inet static
    wpa-ssid [ssid] # only required for my wlan connection
    wpa-psk [key] # only required for my wlan connection
    address 192.168.1.22
    netmask 255.255.255.0

    # The following makes sure that the main IPv4 network
    # can be reached from this computer:
    #gateway 192.168.1.1 # can't use this because only one IPv4 gateway is allowed at a time
    post-up ip route add 192.168.1.0/24 dev wlan0 src 192.168.1.22 table rt2
    post-up ip route add default via 192.168.1.1 dev wlan0 table rt2
    post-up ip rule add from 192.168.1.22/24 table rt2
    post-up ip rule add to 192.168.1.22/32 table rt2

Теперь я хочу использовать мой server-gateway-zombie для выполнения следующих действий: Соединения, поступающие от адаптера eth0 IPv6 на определенных портах, должны перенаправляться как соединения IPv4 с компьютерами в сети wlan0 . Как я могу сделать это?


Вот некоторые дополнительные сведения, которые помогут вам понять, почему я хочу это сделать:

Поскольку у меня есть два кабельных модема, один только для IPv4 и один только для IPv6 (по крайней мере, для входящих соединений), я бы хотел выполнить какое-то распределение нагрузки в зависимости от версии IP.

Это означает, что всякий раз, когда клиент может использовать IPv6 для подключения к моей сети, он достигает моего кабельного модема IPv6, который затем перенаправляет трафик на server-gateway-zombie, который затем снова перенаправляет его на сервер в сети IPv4. С другой стороны, всякий раз, когда клиент может использовать только IPv4 для подключения к моей сети, NAT кабельного модема только для IPv4 включает и перенаправляет трафик соответственно.

Это можно сделать, добавив две записи DNS для моего имени хоста: одну для адреса IPv4 и одну для адреса IPv6.

2 ответа2

2

В другом ответе я нашел довольно простое решение для другого направления (IPv4 -> IPv6), которое использует socat .

Основываясь на этом решении, я просто установил демон на server-gateway-zombie для socat со следующими аргументами socat :

TCP6-LISTEN:80,su=nobody,fork,reuseaddr TCP4:192.168.1.23:80

Таким образом, любые входящие пакеты через порт 80 будут переупакованы и затем отправлены на HTTP-сервер только для IPv4. Задача решена!

1

Невозможно пересылать соединения IPv6 (например, соединения, поступающие с адресов IPv6) на хосты IPv4. Поэтому «Соединения, поступающие от адаптера eth0 IPv6 через определенные порты, должны быть переадресованы как соединения IPv4 с компьютерами в сети wlan0», это не делает ошибку. Адреса IPv6 могут взаимодействовать только с другими узлами IPv6, а адреса IPv4 - с другими узлами IPv4.

Но приведенное ниже объяснение делает его более разумным, если я вас правильно понял: соединения, исходящие с адресов IPv6, должны достигать вашего сервера (по одной ссылке), а соединения, приходящие с адресов IPv4, должны достигать вашего сервера (по другой ссылке).

Для этого есть две возможности:

1) сделать ваш сервер двойным стеком (имеющим как локальный IPv4, так и глобальный IPv6-адреса).

В этом случае просто установите для маршрутизатора DNv4 IPv4 на локальный IPv4-адрес сервера (как это было до IPv6) и настройте регулярную маршрутизацию IPv6 от маршрутизатора к серверу. Хосты из Интернета, идущие на IPv6-адрес сервера, поступят на ваш маршрутизатор через интерфейс eth0 и будут перенаправлены на глобальный IPv6-адрес вашего сервера. Хосты из Интернета, идущие на ваш общедоступный адрес IPv4, будут DNAT к локальному адресу локальной сети вашего сервера.

2) пусть ваш сервер останется только IPv4, и установите обратные прокси протокола на маршрутизаторе для каждого протокола, который вам нужен.

В этом случае хосты из Интернета, идущие на ваш общедоступный адрес IPv4, будут подключаться к локальной локальной сети вашего сервера так же, как и выше (и так же, как до того, как у вас был IPv6). Однако хосты, поступающие с адресов IPv6, будут прерваны при работе двухстоечного сервера deamon, работающего на вашем маршрутизаторе (например, на вашем squid с настройкой обратного прокси-сервера для протокола HTTP), а затем сервер deamon создаст новое соединение IPv4 с вашим сервером (и передаст все он возвращается к оригинальным хостам IPv6).

Преимущество (2) заключается в том, что вам не нужно перенастраивать свой сервер, но недостатком является то, что вам нужно реализовать обратный прокси-сервер для каждого протокола, который вы хотите достичь на своем сервере, значительно увеличивая сложность (и мощность), необходимую для вашего маршрутизатора ,

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