qemu i brak przekierowania portów w iptables
: 27 września 2011, 22:29
Witam!
Dawno tu mnie nie było - być może dlatego, że udawało mi się rozwiązywać napotkane problemy. Niedawno jednak napotkałem problem, którego nie mogę rozgryźć, ani przeskoczyć. Mianowicie chodzi o przekierowanie paru portów. Pewnie zaraz pojawią się głosy, że temat wałkowany tysiąc razy itp, a jednak problem występuje. Grzebałem już po tym forum, innych oraz przetrzepałem kieszenie wujkowi Google i nic.
Może teraz parę szczegółów. Postawiłem sobie serwer, w którym zainstalowałem qemu. Stworzyłem wirtualną maszynę poprzez qemu z serwerem www apache2. Próbuję przekierować port 80 z eth0 na port 9001 na br0. Teraz podam więcej informacji:
Adresów mac nie podałem ze względów bezpieczeństwa.
moj firewall
Logując się na serwer przez ssh mogę bez problemu wywołać następujące polecenie:
ale jak próbuję uruchomić stronę z zewnątrz to się nie uruchamia. Próbowałem już wielu sposobów na przekierowanie portu, bo tu chyba występuje problem, ale to nie działa jak należy. Co dziwne jak wywołuje polecenie:
to pojawia się informacja, że jakieś pakiety są przekierowywane:
Używałem także innej opcji:
ale także nie skutkuje.
Jeśli ktoś ma jakiś pomysł jak sprawdzić co jest nie tak lub, nawet lepiej, jak rozwiązać ten problem to czekam na propozycje.
Dawno tu mnie nie było - być może dlatego, że udawało mi się rozwiązywać napotkane problemy. Niedawno jednak napotkałem problem, którego nie mogę rozgryźć, ani przeskoczyć. Mianowicie chodzi o przekierowanie paru portów. Pewnie zaraz pojawią się głosy, że temat wałkowany tysiąc razy itp, a jednak problem występuje. Grzebałem już po tym forum, innych oraz przetrzepałem kieszenie wujkowi Google i nic.
Może teraz parę szczegółów. Postawiłem sobie serwer, w którym zainstalowałem qemu. Stworzyłem wirtualną maszynę poprzez qemu z serwerem www apache2. Próbuję przekierować port 80 z eth0 na port 9001 na br0. Teraz podam więcej informacji:
Kod: Zaznacz cały
ifconfig
br0 Link encap:Ethernet HWaddr xxx
inet addr:10.168.10.1 Bcast:192.168.255.255 Mask:255.255.0.0
inet6 addr: xxx Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:964 errors:0 dropped:0 overruns:0 frame:0
TX packets:512 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:187556 (183.1 KiB) TX bytes:172383 (168.3 KiB)
eth0 Link encap:Ethernet HWaddr xxx
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: xxx Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6761 errors:0 dropped:0 overruns:0 frame:0
TX packets:6101 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:812145 (793.1 KiB) TX bytes:1101365 (1.0 MiB)
Interrupt:17 Base address:0xec00
eth1 Link encap:Ethernet HWaddr xxx
inet6 addr: xxx Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:977 errors:0 dropped:0 overruns:0 frame:0
TX packets:512 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:202696 (197.9 KiB) TX bytes:174225 (170.1 KiB)
Interrupt:16 Base address:0x2800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:227 errors:0 dropped:0 overruns:0 frame:0
TX packets:227 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:24896 (24.3 KiB) TX bytes:24896 (24.3 KiB)
tap0 Link encap:Ethernet HWaddr xxx
inet6 addr: xxx Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Kod: Zaznacz cały
netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
10.168.0.0 * 255.255.0.0 U 0 0 0 br0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
Kod: Zaznacz cały
iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT udp -- anywhere anywhere udp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT udp -- anywhere anywhere udp dpt:www
ACCEPT tcp -- 10.168.10.0/24 anywhere tcp dpt:domain
ACCEPT udp -- 10.168.10.0/24 anywhere udp dpt:domain
ACCEPT udp -- 10.168.10.0/24 anywhere udp dpt:bootps
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
ACCEPT tcp -- o1 anywhere tcp dpt:ftp
ACCEPT tcp -- o1 anywhere tcp dpt:www
ACCEPT tcp -- o1 anywhere tcp dpt:7171
ACCEPT tcp -- o1 anywhere tcp dpt:7171
ACCEPT icmp -- o1 anywhere icmp echo-request
ACCEPT tcp -- anywhere anywhere tcp dpt:9001
ACCEPT tcp -- anywhere anywhere tcp dpt:www
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT udp -- anywhere anywhere udp dpt:www
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT udp -- anywhere anywhere udp dpt:ssh
Kod: Zaznacz cały
iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 422 packets, 40670 bytes)
pkts bytes target prot opt in out source destination
12 720 DNAT tcp -- * * 0.0.0.0/0 192.168.1.2 tcp dpt:80 to:10.168.10.1:9001
Chain POSTROUTING (policy ACCEPT 44 packets, 8691 bytes)
pkts bytes target prot opt in out source destination
352 24871 SNAT all -- * eth0 0.0.0.0/0 0.0.0.0/0 to:192.168.1.2
Chain OUTPUT (policy ACCEPT 325 packets, 24959 bytes)
pkts bytes target prot opt in out source destination
Kod: Zaznacz cały
#!/bin/sh
# Czyszczenie tablic NAT-a i filtrowania
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
iptables -A FORWARD -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED
iptables -t filter -A FORWARD -p tcp -s 10.168.10.2/32 --dport 21 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -s 10.168.10.2/32 --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -s 10.168.10.2/32 --dport 7171 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -s 10.168.10.2/32 --dport 7171 -j ACCEPT
iptables -t filter -A FORWARD -s 10.168.10.2/32 -p icmp --icmp-type echo-request -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth0 --dport 9001 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i br0 --sport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source=192.168.1.2
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.2 --dport 80 -j DNAT --to-destination 10.168.10.1:9001
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A INPUT -s 0/0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 0/0 -p udp --dport 22 -j ACCEPT
iptables -A INPUT -s 0/0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 0/0 -p udp --dport 80 -j ACCEPT
iptables -A INPUT -s 10.168.10.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -s 10.168.10.0/24 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s 10.168.10.0/24 -p udp --dport 67 -j ACCEPT
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -s 0/0 -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -s 0/0 -p udp --dport 80 -j ACCEPT
iptables -A OUTPUT -s 0/0 -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -s 0/0 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -s 0/0 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 0/0 -p udp --dport 22 -j ACCEPT
Kod: Zaznacz cały
telnet 10.168.10.1 9001
Trying 10.168.10.1...
Connected to 10.168.10.1.
Escape character is '^]'.
GET /index.html
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
Connection closed by foreign host.
Kod: Zaznacz cały
iptables -t nat -L -n -v
Kod: Zaznacz cały
12 720 DNAT tcp -- * * 0.0.0.0/0 192.168.1.2 tcp dpt:80 to:10.168.10.1:9001
Kod: Zaznacz cały
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-port 9001
Jeśli ktoś ma jakiś pomysł jak sprawdzić co jest nie tak lub, nawet lepiej, jak rozwiązać ten problem to czekam na propozycje.