Рейтинг:1

iptables не перенаправляет http трафик

флаг cn

Я пытаюсь создать закрытый портал, и первое, что нужно сделать, это перенаправить весь трафик на определенный IP-порт.

Я пытался:

iptables -t nat -A ВЫВОД -p tcp --dport 80 -j DNAT --to-destination <мой-ip>:<мой-порт>

Что работает при попытке проверить перенаправление на том же устройстве, которое выступает в качестве точки доступа. Я понял, что запросы от других пользователей проходят через цепочку PREROUTING, поэтому сделал следующее:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination <мой-ip>:<мой-порт>

Теперь, когда я пытаюсь получить доступ к IP ххх.ххх.ххх.ххх с другим устройством я получаю ERR_ADDRESS_UNREACHABLE. Однако, если я попытаюсь достичь <my-ip>, меня перенаправляют на другой <my-port>. Как будто переадресация на другой порт работает, а переадресация на другой IP - нет. В чем тут может быть дело?

Прошил iptables перед экспериментом, все политики ПРИНЯТЫ.

* один из ответов на вопрос о сохранении iptables, вот он:

    # Сгенерировано iptables-save v1.6.1, воскресенье, 20 июня, 20:22:06 2021 г.
*безопасность
:ВВОД ПРИНЯТ [12750:14270713]
:ВПЕРЕД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТ [3688:960149]
СОВЕРШИТЬ
# Завершено вс 20 июня 20:22:06 2021
# Сгенерировано iptables-save v1.6.1, воскресенье, 20 июня, 20:22:06 2021 г.
*сырой
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [0:0]
: ВЫВОД ПРИНЯТЬ [0:0]
:bw_raw_PREROUTING - [0:0]
:clat_raw_PREROUTING - [0:0]
:idletimer_raw_PREROUTING - [0:0]
:nm_mdmprxy_raw_pre - [0:0]
:qcom_htimer_PREROUTING - [0:0]
:tetherctrl_raw_PREROUTING - [0:0]
-A ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -j qcom_htimer_PREROUTING
-A ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -j clat_raw_PREROUTING
-A ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -j bw_raw_PREROUTING
-A PREROUTING -j idletimer_raw_PREROUTING
-A ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -j tetherctrl_raw_PREROUTING
-A bw_raw_PREROUTING -i ipsec+ -j ВОЗВРАТ
-A bw_raw_PREROUTING -m policy --dir in --pol ipsec -j ВОЗВРАТ
-A bw_raw_PREROUTING -m bpf --object-pinned /sys/fs/bpf/prog_netd_skfilter_ingress_xtbpf
-A nm_mdmprxy_raw_pre -p tcp -m многопортовый --ports 5060 -j NOTRACK
-A nm_mdmprxy_raw_pre -p udp -m многопортовый --ports 5060 -j NOTRACK
СОВЕРШИТЬ
# Завершено вс 20 июня 20:22:06 2021
# Сгенерировано iptables-save v1.6.1, воскресенье, 20 июня, 20:22:06 2021 г.
*натуральный
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [0:0]
:ВВОД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТЬ [0:0]
:ОТПРАВКА ПРИНЯТИЯ [0:0]
:oem_nat_pre - [0:0]
:tetherctrl_nat_POSTROUTING - [0:0]
-A ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -j oem_nat_pre
-A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --назначение 192.168.43.11:8080
-A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --назначение 192.168.43.11:8080
-A РАЗМЕЩЕНИЕ -j tetherctrl_nat_POSTROUTING
СОВЕРШИТЬ
# Завершено вс 20 июня 20:22:06 2021
# Сгенерировано iptables-save v1.6.1, воскресенье, 20 июня, 20:22:06 2021 г.
* калечить
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [0:0]
:ВВОД ПРИНЯТЬ [0:0]
:ВПЕРЕД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТЬ [0:0]
:ОТПРАВКА ПРИНЯТИЯ [0:0]
:bw_mangle_POSTROUTING - [0:0]
:idletimer_mangle_POSTROUTING - [0:0]
:nm_mdmprxy_icmp_pkt_marker — [0:0]
:nm_mdmprxy_mark_prov_chain - [0:0]
:nm_mdmprxy_mngl_post - [0:0]
:nm_mdmprxy_mngl_pre - [0:0]
:nm_mdmprxy_mngl_pre_ex - [0:0]
:nm_mdmprxy_mngl_pre_spi - [0:0]
:nm_mdmprxy_mngl_pre_tee - [0:0]
:nm_mdmprxy_pkt_forwarder - [0:0]
:nm_mdmprxy_pkt_marker — [0:0]
:nm_mdmprxy_pkt_skmark - [0:0]
:oem_mangle_post - [0:0]
:qcom_htimer_POSTROUTING - [0:0]
:qcom_qos_filter_POSTROUTING - [0:0]
:qcom_qos_reset_POSTROUTING - [0:0]
:routectrl_mangle_INPUT - [0:0]
:tetherctrl_mangle_FORWARD - [0:0]
:wakeupctrl_mangle_INPUT - [0:0]
-A ВХОД -j wakeupctrl_mangle_INPUT
-A ВХОД -j routectrl_mangle_INPUT
-A ВПЕРЕД -j tetherctrl_mangle_FORWARD
-A ОТПРАВКА -j qcom_htimer_POSTROUTING
-A Публикация -j oem_mangle_post
-A РАЗМЕЩЕНИЕ -j bw_mangle_РАЗМЕЩЕНИЕ РАЗМЕЩЕНИЯ
-A Публикация -j idletimer_mangle_POSTROUTING
-A ОТПРАВКА -j qcom_qos_reset_POSTROUTING
-A ОТПРАВКА -j qcom_qos_filter_POSTROUTING
-A bw_mangle_POSTROUTING -o ipsec+ -j ВОЗВРАТ
-A bw_mangle_POSTROUTING -m policy --dir out --pol ipsec -j ВОЗВРАТ
-A bw_mangle_POSTROUTING -j MARK --set-xmark 0x0/0x100000
-A bw_mangle_POSTROUTING -m bpf --object-pinned /sys/fs/bpf/prog_netd_skfilter_egress_xtbpf
-A nm_mdmprxy_mark_prov_chain -p udp -m socket --transparent --nowildcard --restore-skmark -j nm_mdmprxy_pkt_skmark
-A nm_mdmprxy_mark_prov_chain -p tcp -m socket --transparent --nowildcard --restore-skmark -j nm_mdmprxy_pkt_skmark
-A nm_mdmprxy_mngl_post -m отметка --mark 0xf0002 -j MARK --set-xmark 0x0/0xffffffff
-A nm_mdmprxy_pkt_marker -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A nm_mdmprxy_pkt_marker -j nm_mdmprxy_mngl_pre
-A nm_mdmprxy_pkt_marker -j nm_mdmprxy_mark_prov_chain
-A nm_mdmprxy_pkt_marker -j nm_mdmprxy_mngl_pre_spi
-A nm_mdmprxy_pkt_marker -j nm_mdmprxy_mngl_pre_ex
-A nm_mdmprxy_pkt_marker -p udp -m udp --dport 7275 -j MARK --set-xmark 0xf0002/0xffffffff
-A nm_mdmprxy_pkt_marker -p tcp -m tcp --dport 5060 -j MARK --set-xmark 0xf0002/0xffffffff
-A nm_mdmprxy_pkt_marker -p udp -m udp --dport 5060 -j MARK --set-xmark 0xf0002/0xffffffff
-A nm_mdmprxy_pkt_marker -m отметка --mark 0xf0002 -j nm_mdmprxy_pkt_forwarder
-A nm_mdmprxy_pkt_marker ! -p icmp -m отметка --mark 0xf0002 -j УДАЛИТЬ
-A nm_mdmprxy_pkt_skmark -j ВОЗВРАТ
-A qcom_qos_reset_POSTROUTING -o rmnet_data+ -j MARK --set-xmark 0x0/0xffffffff
-A routectrl_mangle_INPUT -i rmnet_data1 -j MARK --set-xmark 0xf0001/0xffeffffff
-A routectrl_mangle_INPUT -i wlan0 -j MARK --set-xmark 0x30063/0xffeffffff
-A tetherctrl_mangle_FORWARD -p tcp -m tcp --tcp-flags SYN SYN -j TCPMSS --clamp-mss-to-pmtu
СОВЕРШИТЬ
# Завершено вс 20 июня 20:22:06 2021
# Сгенерировано iptables-save v1.6.1, воскресенье, 20 июня, 20:22:06 2021 г.
*фильтр
:ВВОД ПРИНЯТЬ [0:0]
:ВПЕРЕД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТЬ [0:0]
СОВЕРШИТЬ
# Завершено вс 20 июня 20:22:06 2021
bocian85 avatar
флаг cn
эта машина является шлюзом NAT для или хост, на котором вы пытались работать? Чтобы это работало, трафик должен пройти через эту машину. Извините, что констатирую здесь очевидное. Хорошей практикой было бы также добавить источник или место назначения для правила PREROUTING, так как это может также работать в обоих направлениях, что может быть не тем, что вам нужно. Будет ли проблемой для вас показать здесь вывод `iptables-save`, чтобы исключить какое-то предыдущее правило, которое делает это бездействующим? Можете ли вы также указать «ничего не происходит»? Вы имеете в виду, что в браузере есть тайм-аут?
Nikola avatar
флаг cn
— это адрес машины, на которой запущен сервер iptables и http. iptables-save показывает это, я добавлю это к вопросу. Открытие в браузере выдает "ERR_ADDRESS_UNREACHABLE"
bocian85 avatar
флаг cn
Может ли хост, с которого вы пытаетесь подключиться, подключиться к целевому адресу? host unreachable означает, что либо IP-адрес недоступен, либо на этом порту ничего не прослушивается. Вы можете попробовать добавить `-t nat -A POSTROUTING -d : -J MASQUERADE` для устранения первой проблемы
Nikola avatar
флаг cn
Я добавил то, что вы сказали мне без порта (хост/сеть : не найден). Все еще не могу получить доступ к веб-серверу, который работает на моей машине, перейдя на случайный IP-адрес.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.