Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Internet a sítě => Téma založeno: maniakum 12 Dubna 2015, 18:44:01
-
Používám server, kde běží ubuntu 14.04, jako router, který je připojen k internetu pomocí druhé síťovky přes pppoe protokol. Vše běží jak má, ale jediné co nejde, tak se nemohu připojit z notebooku na ftp v internetu. Ze serveru to funguje.Tady posílám iptables, nat mám povolený. Netuším v čem by mohla být chyba.
root@server:/etc/network# iptables -L -nv
Chain INPUT (policy ACCEPT 13 packets, 809 bytes)
pkts bytes target prot opt in out source destination
66 6276 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
4733 218K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1723 state NEW
0 0 ACCEPT 47 -- * * 0.0.0.0/0 0.0.0.0/0 state NEW
6 304 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 state NEW
804 143K ACCEPT all -- p2p1 * 0.0.0.0/0 0.0.0.0/0 state NEW
0 0 ACCEPT all -- ppp1 * 0.0.0.0/0 0.0.0.0/0 state NEW
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
42545 3289K ACCEPT all -- p2p1 ppp0 0.0.0.0/0 0.0.0.0/0
68862 87M ACCEPT all -- ppp0 p2p1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- ppp1 p2p1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- ppp1 ppp0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- ppp0 ppp1 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 7191 packets, 10M bytes)
pkts bytes target prot opt in out source destination
Internet a všechno ostatní funguje, jen se nemohu píchnout na to ftp.
V čem mám hledat potíž?
-
Problém bude v pasivním režimu FTP klienta, resp. právě v tom, že nastavený není.
Zkus zavést tyto moduly:
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
Pokud to nepomůže, nastav si pasivní režim přenosu na klientovi (předpokládám, že k navázání spojení a autentizaci dojde, jen nejde nic stáhnout, ani seznam souborů)
-
Nn, to si nerozumíme. FTP běží na serveru poskytovatele webového hostingu. Server doma funguje jako router a z NB se nemohu připojit. TCPDUMP v případě pokusů připojení z NB neříká vůbec nic, když se snažím připojit ze serveru, tak TCPDUMP něco vypíše, tudíž mi přijde, že je problém a vstupu a tedy na síťovce. Je možné, aby byla špatná síťovka?
-
Tak jinak - server dělá NAT, z něj a na něm FTP funguje. Kde nefunguje je klient → ven.
Celý problém je, že FTP protokol komunikuje aktivně na obě strany - klient se připojí na portu 21, ověří se, popovídá si se serverem a řekne, že něco chce. A teď nastává problém, protože server se chce připojit na port klienta a data mu poslat. Pasivní režim oproti tomu znamená, že klient serveru řekne, že je looser, co nemá vlastní veřejnou IP, server odpoví, že ok, jsi looser, data máš na portu tom a tom.
Zmiňované moduly natáhni na serveru, který dělá NAT. Starají se o to, že pokud rozpoznají FTP přenos, "poslouchají" komunikaci a ve chvíli, kdy klient vystaví port pro příjem dat, daný port směrem zvenku forwardují, takže komunikace funuguje přesně tak, jako by klient měl veřejnou IP.
Tedy za předpokladu, že je toto problém. Síťovka špatná nebude, to by to nefungovalo ani ze serveru a vůbec by byly chyby v syslogu.
-
Moduly jsem natáhl a situace je stejná.
TCPDUMP na port 21 při připojení z NB nepíše ani ň, při připojení z domácího serveru vypisuje průběh a připojení je OK.
Takže problém musím být někde jinde. Ten přenos ani nezačne, aby se dozvěděl, jestli je nebo není looser.
-
telnet ftp.server.cz 21
Jen pro jistotu na tom serveru:
# iptables-save
-
Iptables jsem zkoušel mít vše ACCEPT, tedy vyloučit problém v iptables a problém stejný.
maniakum@server:~$ telnet 185.28.193.7 21
Trying 185.28.193.7...
Connected to 185.28.193.7.
Escape character is '^]'.
220 ProFTPD 1.3.4a Server (ftp.gransy.com) [185.28.193.7]
maniakum@server:~$ sudo iptables-save
# Generated by iptables-save v1.4.21 on Sun Apr 12 20:56:46 2015
*mangle
:PREROUTING ACCEPT [146638:23853650]
:INPUT ACCEPT [110495:7673242]
:FORWARD ACCEPT [36073:16136110]
:OUTPUT ACCEPT [212338:306251158]
:POSTROUTING ACCEPT [248593:322453633]
COMMIT
# Completed on Sun Apr 12 20:56:46 2015
# Generated by iptables-save v1.4.21 on Sun Apr 12 20:56:46 2015
*filter
:INPUT DROP [23:958]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [212339:306251406]
:syn_flood - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1723 -m state --state NEW -j ACCEPT
-A INPUT -p gre -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT
-A INPUT -i p2p1 -m state --state NEW -j ACCEPT
-A INPUT -i ppp1 -m state --state NEW -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A FORWARD -i p2p1 -o ppp0 -j ACCEPT
-A FORWARD -i ppp0 -o p2p1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ppp1 -o p2p1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ppp1 -o ppp0 -j ACCEPT
-A FORWARD -i ppp0 -o ppp1 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356
COMMIT
# Completed on Sun Apr 12 20:56:46 2015
# Generated by iptables-save v1.4.21 on Sun Apr 12 20:56:46 2015
*nat
:PREROUTING ACCEPT [2847:211979]
:INPUT ACCEPT [528:51460]
:OUTPUT ACCEPT [249:23746]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i p2p1 -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.0.11:21
-A POSTROUTING -s 10.152.2.0/24 -o p2p1 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -o p2p1 -j MASQUERADE
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -o p2p1 -j MASQUERADE
-A POSTROUTING -o ppp0 -j MASQUERADE
-A POSTROUTING -s 10.0.0.0/24 -o ppp0 -j MASQUERADE
-A POSTROUTING -s 10.152.2.0/24 -o p2p1 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -o p2p1 -j MASQUERADE
-A POSTROUTING -j MASQUERADE
COMMIT
# Completed on Sun Apr 12 20:56:46 2015
-
Iptables jsem zkoušel mít vše ACCEPT, tedy vyloučit problém v iptables a problém stejný.
maniakum@server:~$ telnet 185.28.193.7 21
Trying 185.28.193.7...
Connected to 185.28.193.7.
Escape character is '^]'.
220 ProFTPD 1.3.4a Server (ftp.gransy.com) [185.28.193.7]
Takže na FTP server se připojí a ne že ne.
Zkus řádkového klienta:
ftp 185.28.193.7
Pokud projde autentifikace, zadej příkaz "passive" a "ls"
-
S domácího serveru, který funguje jako router ano, ale z NB ne. Tyto příkazy jsem provedl na domácím serveru. Na NB bohužel nemám oprávnění, abych si nainstaloval telnet. Mám jen totalcmd a připojení k FTP.
Ještě jedna věc, na domácím serveru mám FTP také puštěné, když se chci z NB připojit na FTP na domácím serveru, tak to jede.
-
Ok, mám za to, že i Windows mají FTP v řádku, zkus dané příkazy tam, tedy pokud se to vůbec spojí.
-
Nic, už jsem Ti našel chybu.
:FORWARD DROP [0:0]
Máš default policy na forwardu nastaven na drop, a vůbec máš ten forward nějaký divoký.
-
Co je na něm divokého?
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
554 47900 ACCEPT all -- p2p1 ppp0 0.0.0.0/0 0.0.0.0/0
697 793K ACCEPT all -- ppp0 p2p1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- ppp1 p2p1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- ppp1 ppp0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- ppp0 ppp1 0.0.0.0/0 0.0.0.0/0
0 0 TCPMSS tcp -- * * 192.168.0.0/24 0.0.0.0/0 tcp flags:0x17/0x02 TCPMSS set 1356
Jinak, i když mám FORWARD na accept, tak to nejede.
-
Nevím proč vůbec ověřuješ FORWARD na state na NATu. Tohle má smysl u INPUTu, protože na FORWARD stejně nic neprojde (neb jde o NAT)
Dej celý chain FORWARD na ACCEPT a zbytek vyhoď, krom toho TCPMSS, k tomu máš asi důvod ...
-
Ok
Chain FORWARD (policy ACCEPT 2 packets, 80 bytes)
pkts bytes target prot opt in out source destination
0 0 TCPMSS tcp -- * * 192.168.0.0/24 0.0.0.0/0 tcp flags:0x17/0x02 TCPMSS set 1356
Situace ale stejná, z domácího serveru se na ftp přípojím, z NB ne.
-
Ještě jednou iptables-save
-
maniakum@server:~$ sudo iptables-save
# Generated by iptables-save v1.4.21 on Sun Apr 12 21:26:39 2015
*mangle
:PREROUTING ACCEPT [5556:675910]
:INPUT ACCEPT [4159:288637]
:FORWARD ACCEPT [1395:384273]
:OUTPUT ACCEPT [18924:27740124]
:POSTROUTING ACCEPT [20367:28141969]
COMMIT
# Completed on Sun Apr 12 21:26:39 2015
# Generated by iptables-save v1.4.21 on Sun Apr 12 21:26:39 2015
*filter
:INPUT DROP [6:252]
:FORWARD ACCEPT [1395:384273]
:OUTPUT ACCEPT [18925:27740356]
:syn_flood - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1723 -m state --state NEW -j ACCEPT
-A INPUT -p gre -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT
-A INPUT -i p2p1 -m state --state NEW -j ACCEPT
-A INPUT -i ppp1 -m state --state NEW -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356
COMMIT
# Completed on Sun Apr 12 21:26:39 2015
# Generated by iptables-save v1.4.21 on Sun Apr 12 21:26:39 2015
*nat
:PREROUTING ACCEPT [163:13781]
:INPUT ACCEPT [104:9823]
:OUTPUT ACCEPT [44:4930]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i p2p1 -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.0.11:21
-A POSTROUTING -s 10.152.2.0/24 -o p2p1 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -o p2p1 -j MASQUERADE
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -o p2p1 -j MASQUERADE
-A POSTROUTING -o ppp0 -j MASQUERADE
-A POSTROUTING -s 10.0.0.0/24 -o ppp0 -j MASQUERADE
-A POSTROUTING -s 10.152.2.0/24 -o p2p1 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -o p2p1 -j MASQUERADE
-A POSTROUTING -j MASQUERADE
COMMIT
# Completed on Sun Apr 12 21:26:39 2015
-
Trošku se ztrácím v těch síťovkách na tom serveru.
Proč je tam toto?
-A PREROUTING -i p2p1 -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.0.11:21
PS: Tím to říkáš, že jsou validní JEN nové pakety, tj. pokud je spojení návázáno, už jsou pakety ignorované, nicméně je to na INPUTu, takže by to nemělo mít vliv:
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT
-
Toto je proto, abych se z venku mohl připojit na ftp. Klidně to teď všechno vyházím, abych zjistil v čem je problém.
Jak to tedy vyčistit?
-
Tak jinak :)
1) Zazálohuj si aktuální konfiguraci, ať se máš k čemu vrátit
2) Popiš prosím strukturu té sítě - máš tam 3 síťovky (byť ppp) a nevím kam která patří
3) Řekni co chceš aby kde běželo (Soukromý FTP server tedy má běžet uvnitř NATu a ne na serveru?)
-
maniakum@server:~$ sudo iptables-save
# Generated by iptables-save v1.4.21 on Sun Apr 12 21:34:33 2015
*mangle
:PREROUTING ACCEPT [160:16537]
:INPUT ACCEPT [81:10211]
:FORWARD ACCEPT [79:6326]
:OUTPUT ACCEPT [47:9657]
:POSTROUTING ACCEPT [126:15983]
COMMIT
# Completed on Sun Apr 12 21:34:33 2015
# Generated by iptables-save v1.4.21 on Sun Apr 12 21:34:33 2015
*filter
:INPUT ACCEPT [81:10211]
:FORWARD ACCEPT [79:6326]
:OUTPUT ACCEPT [48:9889]
:syn_flood - [0:0]
-A FORWARD -s 192.168.0.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356
COMMIT
# Completed on Sun Apr 12 21:34:33 2015
# Generated by iptables-save v1.4.21 on Sun Apr 12 21:34:33 2015
*nat
:PREROUTING ACCEPT [15:1250]
:INPUT ACCEPT [9:815]
:OUTPUT ACCEPT [5:333]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.0.0/24 -o p2p1 -j MASQUERADE
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -o p2p1 -j MASQUERADE
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT
# Completed on Sun Apr 12 21:34:33 2015
Takhle to jede, takže se hluboce omlouvám a najdu si co mi to dělá. Iptables jsem kopíroval ze starého serveru.. Ještě jednou se omlouvám.
-
Od toho jsme tady, neomlouvej se :)
Asi by to chtělo fakt trochu mrknout na strukturu toho, co to dělá a co to má dělat. Je v tom trošku zmatek.
-
Mno, řešil jsem to tady http://www.abclinuxu.cz/poradna/linux/show/401929, kde jsem se nakonec dobral k funkčnímu řešení, které fungovalo na starém serveru.
Poté přestalo fungovat. Každopádně se na to podívám ještě jednou a děkuji.