Адаптивный портал с iptables и локальным DNS-сервером

Я пытаюсь перенаправить весь браузер » s запросы от моего Wi-Fi интерфейса wlan1 к адаптируемому порталу. У меня есть веб-сервер узла, работающий на моей цели на 10.4.30.34:4040.[1234 impression Он должен перенаправить браузер прямо на веб-сервер, на хороший порт, как будто я ввел "10.4.30.34:4040" в месте бар.

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

Кроме того, перенаправление выполняется только тогда, когда цель подключена к Интернету. Я предположил, что это потому, что DNS-сервер отсутствует, когда он отключен, поэтому мне нужно, чтобы мой собственный DNS-сервер работал и перенаправлял запросы DNS.

Вот мои iptables:

# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*nat
:PREROUTING ACCEPT [9574:1494526]
:INPUT ACCEPT [4431:653511]
:OUTPUT ACCEPT [101:17500]
:POSTROUTING ACCEPT [47:8227]
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 80 -j DNAT --to-destination 10.4.30.34:4040
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 443 -j DNAT --to-destination 10.4.30.34:4040
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*mangle
:PREROUTING ACCEPT [47457:9766851]
:INPUT ACCEPT [37596:7677987]
:FORWARD ACCEPT [5111:1392701]
:OUTPUT ACCEPT [16333:6011533]
:POSTROUTING ACCEPT [21605:7471587]
:internet - [0:0]
-A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j internet
-A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j internet
-A internet -j MARK --set-xmark 0x63/0xffffffff
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -j ACCEPT
-A FORWARD -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Tue Mar  8 09:19:04 2016

Мой /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

Я установил dnsmasq & bind, я выполнил это руководство: У меня есть веб-сервер узла, работающий на моей цели на 10.4.30.34:4040.[1234 impression Он должен перенаправить браузер прямо на веб-сервер, на хороший порт, как будто я ввел "10.4.30.34:4040" в месте бар.

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

Кроме того, перенаправление выполняется только тогда, когда цель подключена к Интернету. Я предположил, что это потому, что DNS-сервер отсутствует, когда он отключен, поэтому мне нужно, чтобы мой собственный DNS-сервер работал и перенаправлял запросы DNS.

Вот мои iptables:

# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*nat
:PREROUTING ACCEPT [9574:1494526]
:INPUT ACCEPT [4431:653511]
:OUTPUT ACCEPT [101:17500]
:POSTROUTING ACCEPT [47:8227]
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 80 -j DNAT --to-destination 10.4.30.34:4040
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 443 -j DNAT --to-destination 10.4.30.34:4040
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*mangle
:PREROUTING ACCEPT [47457:9766851]
:INPUT ACCEPT [37596:7677987]
:FORWARD ACCEPT [5111:1392701]
:OUTPUT ACCEPT [16333:6011533]
:POSTROUTING ACCEPT [21605:7471587]
:internet - [0:0]
-A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j internet
-A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j internet
-A internet -j MARK --set-xmark 0x63/0xffffffff
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -j ACCEPT
-A FORWARD -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Tue Mar  8 09:19:04 2016

Мой /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

Я установил dnsmasq & bind, я выполнил это руководство: У меня есть веб-сервер узла, работающий на моей цели на 10.4.30.34:4040.[1234 impression Он должен перенаправить браузер непосредственно на веб-сервер, на хороший порт, как будто я ввел «10.4.30.34:4040» в месте бар.

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

Кроме того, перенаправление выполняется только тогда, когда цель подключена к Интернету. Я предположил, что это потому, что DNS-сервер отсутствует, когда он отключен, поэтому мне нужно, чтобы мой собственный DNS-сервер работал и перенаправлял запросы DNS.

Вот мои iptables:

# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*nat
:PREROUTING ACCEPT [9574:1494526]
:INPUT ACCEPT [4431:653511]
:OUTPUT ACCEPT [101:17500]
:POSTROUTING ACCEPT [47:8227]
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 80 -j DNAT --to-destination 10.4.30.34:4040
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 443 -j DNAT --to-destination 10.4.30.34:4040
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*mangle
:PREROUTING ACCEPT [47457:9766851]
:INPUT ACCEPT [37596:7677987]
:FORWARD ACCEPT [5111:1392701]
:OUTPUT ACCEPT [16333:6011533]
:POSTROUTING ACCEPT [21605:7471587]
:internet - [0:0]
-A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j internet
-A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j internet
-A internet -j MARK --set-xmark 0x63/0xffffffff
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -j ACCEPT
-A FORWARD -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Tue Mar  8 09:19:04 2016

Мой /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

Я установил dnsmasq & bind, я выполнил это руководство: на хорошем порту, как будто я ввел «10.4.30.34:4040» в адресную строку.

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

Кроме того, перенаправление выполняется только тогда, когда цель подключена к Интернету. Я предположил, что это потому, что DNS-сервер отсутствует, когда он отключен, поэтому мне нужно, чтобы мой собственный DNS-сервер работал и перенаправлял запросы DNS.

Вот мои iptables:

# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*nat
:PREROUTING ACCEPT [9574:1494526]
:INPUT ACCEPT [4431:653511]
:OUTPUT ACCEPT [101:17500]
:POSTROUTING ACCEPT [47:8227]
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 80 -j DNAT --to-destination 10.4.30.34:4040
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 443 -j DNAT --to-destination 10.4.30.34:4040
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*mangle
:PREROUTING ACCEPT [47457:9766851]
:INPUT ACCEPT [37596:7677987]
:FORWARD ACCEPT [5111:1392701]
:OUTPUT ACCEPT [16333:6011533]
:POSTROUTING ACCEPT [21605:7471587]
:internet - [0:0]
-A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j internet
-A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j internet
-A internet -j MARK --set-xmark 0x63/0xffffffff
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -j ACCEPT
-A FORWARD -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Tue Mar  8 09:19:04 2016

Мой /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

Я установил dnsmasq & bind, я выполнил это руководство: на хорошем порту, как будто я ввел «10.4.30.34:4040» в адресную строку.

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

Кроме того, перенаправление выполняется только тогда, когда цель подключена к Интернету. Я предположил, что это потому, что DNS-сервер отсутствует, когда он отключен, поэтому мне нужно, чтобы мой собственный DNS-сервер работал и перенаправлял запросы DNS.

Вот мои iptables:

# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*nat
:PREROUTING ACCEPT [9574:1494526]
:INPUT ACCEPT [4431:653511]
:OUTPUT ACCEPT [101:17500]
:POSTROUTING ACCEPT [47:8227]
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 80 -j DNAT --to-destination 10.4.30.34:4040
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 443 -j DNAT --to-destination 10.4.30.34:4040
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*mangle
:PREROUTING ACCEPT [47457:9766851]
:INPUT ACCEPT [37596:7677987]
:FORWARD ACCEPT [5111:1392701]
:OUTPUT ACCEPT [16333:6011533]
:POSTROUTING ACCEPT [21605:7471587]
:internet - [0:0]
-A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j internet
-A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j internet
-A internet -j MARK --set-xmark 0x63/0xffffffff
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -j ACCEPT
-A FORWARD -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Tue Mar  8 09:19:04 2016

Мой /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

Я установил dnsmasq & bind, я выполнил это руководство: вроде перенаправляет только первый запрос.

Кроме того, перенаправление выполняется только тогда, когда цель подключена к Интернету. Я предположил, что это потому, что DNS-сервер отсутствует, когда он отключен, поэтому мне нужно, чтобы мой собственный DNS-сервер работал и перенаправлял запросы DNS.

Вот мои iptables:

# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*nat
:PREROUTING ACCEPT [9574:1494526]
:INPUT ACCEPT [4431:653511]
:OUTPUT ACCEPT [101:17500]
:POSTROUTING ACCEPT [47:8227]
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 80 -j DNAT --to-destination 10.4.30.34:4040
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 443 -j DNAT --to-destination 10.4.30.34:4040
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*mangle
:PREROUTING ACCEPT [47457:9766851]
:INPUT ACCEPT [37596:7677987]
:FORWARD ACCEPT [5111:1392701]
:OUTPUT ACCEPT [16333:6011533]
:POSTROUTING ACCEPT [21605:7471587]
:internet - [0:0]
-A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j internet
-A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j internet
-A internet -j MARK --set-xmark 0x63/0xffffffff
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -j ACCEPT
-A FORWARD -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Tue Mar  8 09:19:04 2016

Мой /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

Я установил dnsmasq & bind, я выполнил это руководство: вроде перенаправляет только первый запрос.

Кроме того, перенаправление выполняется только тогда, когда цель подключена к Интернету. Я предположил, что это потому, что DNS-сервер отсутствует, когда он отключен, поэтому мне нужно, чтобы мой собственный DNS-сервер работал и перенаправлял запросы DNS.

Вот мои iptables:

# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*nat
:PREROUTING ACCEPT [9574:1494526]
:INPUT ACCEPT [4431:653511]
:OUTPUT ACCEPT [101:17500]
:POSTROUTING ACCEPT [47:8227]
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 80 -j DNAT --to-destination 10.4.30.34:4040
-A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 443 -j DNAT --to-destination 10.4.30.34:4040
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*mangle
:PREROUTING ACCEPT [47457:9766851]
:INPUT ACCEPT [37596:7677987]
:FORWARD ACCEPT [5111:1392701]
:OUTPUT ACCEPT [16333:6011533]
:POSTROUTING ACCEPT [21605:7471587]
:internet - [0:0]
-A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j internet
-A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j internet
-A internet -j MARK --set-xmark 0x63/0xffffffff
COMMIT
# Completed on Tue Mar  8 09:19:04 2016
# Generated by iptables-save v1.4.21 on Tue Mar  8 09:19:04 2016
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -j ACCEPT
-A FORWARD -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Tue Mar  8 09:19:04 2016

Мой /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

Я установил dnsmasq & bind, я выполнил это руководство: http://openexhibits.org/wp-content/uploads/2012/05/CaptivePortalHowto.pdf

Но это не сработало ...

Спасибо

0
задан 8 March 2016 в 11:35
1 ответ

Вот решение :

1- Установить связывающий сервер в качестве локального dns, который всегда будет возвращать один и тот же IP-адрес

2- Перенаправить DNS-запросы на привязку.

iptables -A PREROUTING -i br0 -p tcp -m mark --mark 0x63 -m tcp --dport 53 -j DNAT --to 10.4.30.34
iptables -A PREROUTING -i br0 -p udp -m mark --mark 0x63 -m udp --dport 53 -j DNAT --to 10.4.30.34
iptables -A PREROUTING -i br0 -p tcp -m tcp --dport 53 -j internet
iptables -A PREROUTING -i br0 -p udp -m udp --dport 53 -j internet
iptables -A internet -j MARK --set-xmark 0x63/0xffffffff

3- Установите lighttpd, который будет перенаправлять все интернет-запросы на определенный URL

/etc/lighttpd.conf : 

server.modules          = ( "mod_redirect", "mod_rewrite" )
server.document-root    = "/www/pages/"
server.port             = 80

url.redirect = ( "^/(.*)$" => "http://10.4.30.34:4040" )
0
ответ дан 5 December 2019 в 10:40

Теги

Похожие вопросы