Просмотр полной версии : Сервер посылает пакеты вовне со своим локальным адресом (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, а не туда, откуда они пришли). Серваки же эти на разных концах Земли.
Что это за фигня и как быть?
попробуй открыть порт на 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
попробуй открыть порт на my-server и просканировать этот хост с 192.168.100.9
R = RST пакет, пакет сброса соединения отправляется на хост 192.168.100.9
Мм. зачем? Если что, до my-server я сам могу подконнектиться - т.е. порт открыт для всех.
с чего ты так решил?
Ну 192.168.*.* - это локальная сеть и отвечая по такому айпи пакет не уходит в интернет...
PS могу предположить что это из-за фаервола на my-server
Нет, его там нет. делаю на нем nc -l -vv -p 8181 и спокойно коннекчусь со своего компа. А этот 192.168.100.9 не хочет.
Повторюсь.
просканируй хост myserver с 192.168.100.9, напиши его ip адрес и выложи iptables -L -n с myserver.
Повторюсь.
просканируй хост 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
Проблемы с маршутизацией, очевидно.
Сделай 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. Что-то иное - нужно тестировать и смотреть самому.
ghostwizard
Спасибо!. Насколько я знаю, все это требует привелегий рута...
PS Тогда ищется программа, которая может передавать файлы без получения обратных пакетов. Пока нашел hping, но может есть специалньо для этого сделанная программа, которая на обоих хостах запускается и передает файлы?
PPS hping не подходит - требует рута для открытия сырых сокетов.
И еще, почитал - идеальной была бы прога, которая посылает файлы по UDP, однако все, что гугл подсказал все-равно на разных стадиях требуют ответа от получателя. А идеальна была бы та, которая просто посылает все пакеты дважды например, а уж потом можно ей было бы дать команды переслать определённые части за номерами такими-то (которые бы увидел на получателе)...
ghostwizard
11.05.2010, 18:57
И еще, почитал - идеальной была бы прога, которая посылает файлы по UDP, однако все, что гугл подсказал все-равно на разных стадиях требуют ответа от получателя. А идеальна была бы та, которая просто посылает все пакеты дважды например, а уж потом можно ей было бы дать команды переслать определённые части за номерами такими-то (которые бы увидел на получателе)...
Ты ведь как-то попадаешь на 192.168.100.9 по SSH? Бери scp, работает поверх SSH, чтобы копировать файлы. Может поможет.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot