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

Перенаправить трафик на другой ip с помощью iptables

У меня есть брандмауэр / шлюз debian linux, соединяющий мой WAN и LAN, работающий с iptables. у меня есть eth1 как WAN с динамическим адресом 190.200.229.102 прикреплен к somehost.com через DYNDNS и eht0 как лан с адресом 192.168.128.2. Все работает как положено. Входящий трафик отклоняется для всех портов, кроме тех, которые указаны с помощью ACCEPT, и переадресация портов работает, как ожидалось, перенаправляя трафик на внутренние машины.

Проблема в том, что когда я пытаюсь подключиться к somehost.com из внутренней сети меня не перенаправляют на внутренние машины, как я ожидал. Мои правила брандмауэра для перенаправления портов привязаны к интерфейсу WAN (eth1). Я предполагаю, что когда я пытаюсь подключиться к somehost.com Я иду по локальной сети, поэтому перенаправление не работает. Я безуспешно экспериментировал с тегами REDIRECT, DNAT, INPUT и другими. Любые подсказки о том, как этого добиться?

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

iptables -t nat -A POSTROUTING -s 192.168.128.0/24 -o eth0 -j MASQUERADE

в противном случае ответные пакеты будут приходить к вам от самих внутренних хостов, которые видят внутренние адреса и отправляют пакеты напрямую обратно. Итак, вы отправляете запросы на 190.200.229.102, но получаете ответы от 192.168.128.x, это вполне нормально, что ваша машина не знает, что с ними делать :)

Я не знаю ответа на твой вопрос. Однако в качестве решения, почему бы вместо этого не иметь фальшивую запись DNS внутри для somehost.com, указывающую на IP-адрес LAN?

Вы должны попробовать добавить локальную запись DSN, как указано г-ном Джоэлом Мэнсфордом, в Debian отредактируйте файл:

/ etc / hosts

добавить записи в этом формате:

10.10.10.10 dyndns.com 11.11.11.11 someother.com other.sameline.com

;)

Я могу предположить, что проблема в том, что вы выполняете маскировку IP (SNAT) и DNAT для пакетов.

Допустим, вы подключаетесь с внутреннего хоста 192.168.128.3.

Исходный пакет будет:

192.168.128.3 -> somehost.com (190.200.229.102)

Тогда из-за DNAT он будет переведен на:

190.200.229.102 -> somehost.com (190.200.229.102)

Думаю, вот в чем проблема: адреса отправителя и получателя совпадают.

Вы должны запустить tcpdump или tshark на подключающейся машине, на каждом интерфейсе межсетевого экрана и на принимающей машине. Затем попробуйте подключиться и посмотреть, в каком интерфейсе теряются пакеты, а также какие адреса отправляются и отправляются по мере их перевода.

Как только вы это поймете, вы можете создать фильтр для решения этой конкретной проблемы в правильном интерфейсе.

В противном случае вы можете использовать решение DNS, указанное joelmansford, которое может быть более чистым решением.