Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   *nix (https://forum.antichat.xyz/forumdisplay.php?f=43)
-   -   Сервер посылает пакеты вовне со своим локальным адресом (192.168.x.x). (https://forum.antichat.xyz/showthread.php?t=201070)

budden 02.05.2010 13:31

Сервер посылает пакеты вовне со своим локальным адресом (192.168.x.x).
 
Странная ситуация.
Имеется сервер, вывод его ifconfig:
Код:

eth0 Link encap:Ethernet HWaddr XXXXXXXXXXXX
 inet addr:192.168.100.9 Bcast:192.168.100.255 Mask:255.255.255.0

Пытаюсь через скулю сделать бекконнект. Сначала пинг до моего сервера (на котором слушаю порт):

Код:

root@my-server:~# tcpdump icmp
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
04:47:29.934287 IP 192.168.100.9 > my-server: ICMP echo request, id 30517, seq 1, length 64
04:47:29.934331 IP my-server > 192.168.100.9: ICMP echo reply, id 30517, seq 1, length 64

Далее запускаю бекконнет до моего my-server - соединение не приходит, пускаю на этот же порт tcpdump и снова делаю бекконнект:

Код:

root@my-server:~# tcpdump port 6600
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
04:46:04.163231 IP 192.168.100.9.34061 > my-server.6600: S 3056761821:3056761821(0) win 5840 <mss 1460,sackOK,timestamp 261712146 0,nop,wscale 2>
04:46:04.163269 IP my-server.6600 > 192.168.100.9.34061: R 0:0(0) ack 3056761822 win 0
04:46:07.159753 IP 192.168.100.9.34061 > my-server.6600: S 3056761821:3056761821(0) win 5840 <mss 1460,sackOK,timestamp 261715146 0,nop,wscale 2>
04:46:07.159792 IP my-server.6600 > 192.168.100.9.34061: R 0:0(0) ack 1 win 0
04:46:13.160604 IP 192.168.100.9.34061 > my-server.6600: S 3056761821:3056761821(0) win 5840 <mss 1460,sackOK,timestamp 261721146 0,nop,wscale 2>
04:46:13.160631 IP my-server.6600 > 192.168.100.9.34061: R 0:0(0) ack 1 win 0
04:46:25.161872 IP 192.168.100.9.34061 > my-server.6600: S 3056761821:3056761821(0) win 5840 <mss 1460,sackOK,timestamp 261733146 0,nop,wscale 2>
04:46:25.161900 IP my-server.6600 > 192.168.100.9.34061: R 0:0(0) ack 1 win 0

Как видно, от сервака приходят пакеты с айпи 192.168.100.9 - соотв-но как я понимаю, обратно пакеты уходят в никуда (ну точнее в локалку my-server, а не туда, откуда они пришли). Серваки же эти на разных концах Земли.

Что это за фигня и как быть?

(Dm) 02.05.2010 15:01

попробуй открыть порт на my-server и просканировать этот хост с 192.168.100.9
Цитата:

04:46:07.159792 IP my-server.6600 > 192.168.100.9.34061: R 0:0(0) ack 1 win 0
R = RST пакет, пакет сброса соединения отправляется на хост 192.168.100.9

Цитата:

обратно пакеты уходят в никуда (ну точнее в локалку my-server, а не туда, откуда они пришли).
с чего ты так решил?

PS могу предположить что это из-за фаервола на my-server

budden 02.05.2010 15:10

Цитата:

Сообщение от (Dm)
попробуй открыть порт на my-server и просканировать этот хост с 192.168.100.9

R = RST пакет, пакет сброса соединения отправляется на хост 192.168.100.9

Мм. зачем? Если что, до my-server я сам могу подконнектиться - т.е. порт открыт для всех.

Цитата:

Сообщение от (Dm)
с чего ты так решил?

Ну 192.168.*.* - это локальная сеть и отвечая по такому айпи пакет не уходит в интернет...
Цитата:

Сообщение от (Dm)
PS могу предположить что это из-за фаервола на my-server

Нет, его там нет. делаю на нем nc -l -vv -p 8181 и спокойно коннекчусь со своего компа. А этот 192.168.100.9 не хочет.

(Dm) 02.05.2010 15:17

Повторюсь.
просканируй хост myserver с 192.168.100.9, напиши его ip адрес и выложи iptables -L -n с myserver.

budden 02.05.2010 15:23

Цитата:

Сообщение от (Dm)
Повторюсь.
просканируй хост myserver с 192.168.100.9, напиши его ip адрес и выложи iptables -L -n с myserver.

поясни, что значит "просканируй"? У меня как бы доступ к нему не совсем прямой.

PS RST пакет был потому, что когда я делал tcpdump в это время netcat не слушал порт.
Т.е. nc -l -p 8080 - коннекта нет, вырубал его, и делал tcpdump port 8080



Код:

root@my-server:~# iptables -L -n
Chain INPUT (policy ACCEPT)
target    prot opt source              destination       
          tcp  --  0.0.0.0/0            0.0.0.0/0          tcp dpt:25
          tcp  --  0.0.0.0/0            0.0.0.0/0          tcp dpt:143
          tcp  --  0.0.0.0/0            0.0.0.0/0          tcp dpt:110
          tcp  --  0.0.0.0/0            0.0.0.0/0          tcp dpt:80
          all  --  0.0.0.0/0            0.0.0.0/0         

Chain FORWARD (policy ACCEPT)
target    prot opt source              destination       

Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination       
          tcp  --  0.0.0.0/0            0.0.0.0/0          tcp spt:25
          tcp  --  0.0.0.0/0            0.0.0.0/0          tcp spt:143
          tcp  --  0.0.0.0/0            0.0.0.0/0          tcp spt:110
          tcp  --  0.0.0.0/0            0.0.0.0/0          tcp spt:80
          all  --  0.0.0.0/0            0.0.0.0/0


ghostwizard 06.05.2010 22:10

Сделай netstat -nr
Проблемы с маршутизацией, очевидно.

budden 07.05.2010 11:07

Цитата:

Сообщение от ghostwizard
Сделай netstat -nr
Проблемы с маршутизацией, очевидно.

Так понятно :)

Раз даже пинги обратно не приходят:
PING 88.1.8.5 (88.1.8.5) 56(84) bytes of data.

--- 88.1.8.5 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

Вот netstat -nr:

Код:

Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.100.8 192.168.100.4 255.255.255.255 UGH 0 0 0 eth0
192.168.100.3 192.168.100.4 255.255.255.255 UGH 0 0 0 eth0
192.168.100.1 192.168.100.4 255.255.255.255 UGH 0 0 0 eth0
192.168.100.5 192.168.100.4 255.255.255.255 UGH 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.100.4 0.0.0.0 UG 0 0 0 eth0

Исправить как-нибудь можно, пусть даже временно? Привелегий рута нет.

ghostwizard 07.05.2010 18:39

Вобщем, судя по всему у тебя на 192.168.100.4 стоит просто NAT без переименовывания заголовков (аля тупо форвардинг пакетов), это причина того, что тебе приходят пакеты с IP твоей машины (192.168.100.9) вместо внешнего IP от машины с 192.168.100.4 адресом.

Идем дальше, допустим твой my-server знает маршут до 192.168.100.9 (не суть как). Тогда 192.168.100.4 должен знать куда перенаправить пакет, т.е. к тебе на 192.168.100.9. Поскольку обычно делают port-forwarding, а доступ на прямую к машинам в локальных сетях предоставляют только по vpn, в твоем случае нужно чтобы на 192.168.100.4 был правильно сконфигурирован NAT.

Для линукса:
iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -j SNAT --to-source ${EXT_IP_OF_192.168.100.4}
iptables -A FORWARD -j ACCEPT

Метод port-forwarding (прямой коннект к 192.168.100.9, порт 44555 через внешний IP 192.168.100.4, порт 34555):
iptables -t nat -I PREROUTING -p tcp -m tcp --dport 34555 -d ${EXT_IP_OF_192.168.100.4} -i ${EXT_IFACE_OF_192.168.100.4} -j DNAT --to 192.168.100.9:44555

Также есть вероятность, что для forwarding-пакетов на 192.168.100.4 закрыты определенные порты или протоколы (т.е. icmp у тебя может успешно проходить все остальное - нет). Следовательно можно попробовать завесить иницирование открытие стандартных портов (22, 25, 80, 110, 33434-33523) на 192.168.100.9. Тогда есть вероятность, что 192.168.100.4 пропустить пакеты до твоей машины.

Случай, когда ты коннектишься к 192.168.100.4 через vpn:
1. OpenVPN, нужно чтобы сервер выдавал тебе (my-server) таблицу маршутизации к своей сети (192.168.100.0/24). Делается это в конфиге openvpn. Тупое прописывание у себя такого маршута ни к чему не приведет, openvpn жестко отслеживает подобное.
2. vtun - тут можно и самому прописать соответствующий маршут.
3. Что-то иное - нужно тестировать и смотреть самому.

budden 08.05.2010 09:53

ghostwizard
Спасибо!. Насколько я знаю, все это требует привелегий рута...

PS Тогда ищется программа, которая может передавать файлы без получения обратных пакетов. Пока нашел hping, но может есть специалньо для этого сделанная программа, которая на обоих хостах запускается и передает файлы?

PPS hping не подходит - требует рута для открытия сырых сокетов.

И еще, почитал - идеальной была бы прога, которая посылает файлы по UDP, однако все, что гугл подсказал все-равно на разных стадиях требуют ответа от получателя. А идеальна была бы та, которая просто посылает все пакеты дважды например, а уж потом можно ей было бы дать команды переслать определённые части за номерами такими-то (которые бы увидел на получателе)...

ghostwizard 11.05.2010 18:57

Цитата:

Сообщение от budden
И еще, почитал - идеальной была бы прога, которая посылает файлы по UDP, однако все, что гугл подсказал все-равно на разных стадиях требуют ответа от получателя. А идеальна была бы та, которая просто посылает все пакеты дважды например, а уж потом можно ей было бы дать команды переслать определённые части за номерами такими-то (которые бы увидел на получателе)...

Ты ведь как-то попадаешь на 192.168.100.9 по SSH? Бери scp, работает поверх SSH, чтобы копировать файлы. Может поможет.


Время: 20:52