У меня есть брандмауэр / шлюз 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, которое может быть более чистым решением.