LINUX.ORG.RU
ФорумAdmin

как провести пакет?

 ,


0

1

Здравствуйте. Помогите провести пакет от 61000 порта на vps до 6665 порта LAN

Схема: https://yadi.sk/i/R_O_3RN8ryXFg

iptables на vps

# Generated by iptables-save v1.4.21 on Wed May 25 11:41:52 2016
*nat
:PREROUTING ACCEPT [4:220]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [3:156]
-A PREROUTING -d 185.60.X.X/32 -p tcp -m tcp --dport 61000 -j DNAT --to-destination 192.168.0.3:6665
-A POSTROUTING -d 192.168.0.0/24 -p tcp -m tcp --dport 6555 -j SNAT --to-source 185.60.X.X:61000
COMMIT
# Completed on Wed May 25 11:41:52 2016
# Generated by iptables-save v1.4.21 on Wed May 25 11:41:52 2016
*filter
:INPUT DROP [236:15480]
:FORWARD ACCEPT [54:2736]
:OUTPUT ACCEPT [5310:832319]
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 7786 -j ACCEPT #ssh
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 61000 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A INPUT -s 192.168.0.0/24 -i tun0 -j ACCEPT
-A FORWARD -s 10.15.0.0/24 -d 192.168.0.0/24 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -d 10.15.0.0/24 -j ACCEPT
COMMIT
# Completed on Wed May 25 11:41:52 2016

при этом, находясь на vps, telnet на 192.168.0.1:61000 работает

iptables на gate

# Generated by iptables-save v1.6.0 on Wed May 25 16:07:53 2016
*nat
:PREROUTING ACCEPT [71975:7328759]
:INPUT ACCEPT [27204:2804587]
:OUTPUT ACCEPT [14682:1031229]
:POSTROUTING ACCEPT [16690:1119725]
-A POSTROUTING -s 192.168.0.0/24 -o enp0s29f7u4 -j MASQUERADE
-A POSTROUTING -s 10.15.0.0/24 -o tun0 -j MASQUERADE
COMMIT
# Completed on Wed May 25 16:07:53 2016
# Generated by iptables-save v1.6.0 on Wed May 25 16:07:53 2016
*filter
:INPUT ACCEPT [5618:648487]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1518:241899]
-A INPUT -i lo -j ACCEPT
-A FORWARD -i enp1s3 -o enp0s29f7u4 -j ACCEPT
-A FORWARD -i enp0s29f7u4 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i enp0s29f7u4 -o enp1s3 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.0.0/24 -d 10.15.0.0/24 -j ACCEPT
-A FORWARD -s 10.15.0.0/24 -d 192.168.0.0/24 -j ACCEPT
-A FORWARD -s 10.15.0.0/24 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.0.0/24 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -j ACCEPT
COMMIT
# Completed on Wed May 25 16:07:53 2016

Когда из интренета клиент подключается к 61000 порту vps'a, на gate tcpdump показывает это -

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
15:41:30.197239 IP dnm.44.77.185.178.dsl.xxxx.ru.33114 > 192.168.0.3.6665: Flags [S], seq 3326009501, win 8192, options [mss 1366,nop,wscale 2,nop,nop,sackOK], length 0
15:41:33.220809 IP dnm.44.77.185.178.dsl.xxxx.ru.33114 > 192.168.0.3.6665: Flags [S], seq 3326009501, win 8192, options [mss 1366,nop,wscale 2,nop,nop,sackOK], length 0
15:41:39.220415 IP dnm.44.77.185.178.dsl.xxxx.ru.33114 > 192.168.0.3.6665: Flags [S], seq 3326009501, win 8192, options [mss 1366,nop,nop,sackOK], length 0
tcpdump: pcap_loop: The interface went down
3 packets captured
3 packets received by filter
0 packets dropped by kernel

Насколько я понимаю vps пересылает пакет не меняя исходящий адрес пакета. Куда смотреть?



Последнее исправление: maxon861 (всего исправлений: 3)

Таблица маршрутизации на VPS какая?
Дай вывод:

ip r
или
route -n
Судя по tcpdump, пакеты на 192.168.0.3 уходят.

demsi
()
Последнее исправление: demsi (всего исправлений: 2)
Ответ на: комментарий от demsi
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gw.msk.ispsyste 0.0.0.0         UG    0      0        0 eth0
10.15.0.2       *               255.255.255.255 UH    0      0        0 tun0
localnet        *               255.255.255.128 U     0      0        0 eth0
192.168.0.0     10.15.0.2       255.255.255.0   UG    0      0        0 tun0

И да, похоже адрес источника пакета не меняется

maxon861
() автор топика
Ответ на: комментарий от maxon861

Попробуем проследить цепочку пакетов:

44.77.185.178:33114 -> VPS:61000 (eth0)
Первым делом попадает в цепочку PREROUTING таблицы nat
Меняется адрес назначения. Итого пакет становится таким
44.77.185.178:33114 -> 192.168.0.3.6665
Затем пакет попадает в цепочку INPUT таблицы filter
В этой цепочки правил для таких пакетов нет, в итоге получается он дропается.
Попробуйте добвить в INPUT -d 192.168.0.0/24 -j ACCEPT

demsi
()
Последнее исправление: demsi (всего исправлений: 1)
Ответ на: комментарий от demsi

А стоп, ошибся, он должен попасть в цепочку FORWARD, и пройти. Если там стоит действие по умолчанию ACCEPT. Кстати нет смысла твоих правил в FORWARD так как там уже стоит ACCEPT.

хм, получается пакет успешно должен проходить FORWARD идти в POSTROUTING

44.77.185.178:33114 -> 192.168.0.3.6665
Тут его адрес назначения меняется на
VPS:61000 -> 192.168.0.3.6665
И получается он должен идти в шлюз (10.15.0.2) через интерфейс tun0.

Попробуй слушать tcpdump'ом этот интерфейс. Там должны быть пакеты:

VPS:61000 -> 192.168.0.3.6665

demsi
()
Последнее исправление: demsi (всего исправлений: 1)
Ответ на: комментарий от demsi

tcpdump на vps'e идентичен gate'y

13:28:36.610688 IP 178.185.клиент.45319 > 185.60.VPSка.61000: Flags [S], seq 2835308625, win 8192, options [mss 1452,nop,nop,sackOK], length 0
ии тишина

maxon861
() автор топика
Ответ на: комментарий от maxon861

ХМ непонятно почему SNAT не отрабатывает.
Попробуй в POSTROUTING такое правило На VPS:

-A POSTROUTING -d 192.168.0.0/24 -j MASQUERADE
И cюда вывод tcpdump с gate. В этом случае

И еще хотелось бы все таки узнать:

ip a
На VPS

demsi
()
Последнее исправление: demsi (всего исправлений: 2)
Ответ на: комментарий от demsi
-A POSTROUTING -d 192.168.0.0/24 -j MASQUERADE

Заработало! Спасибо огромное. ))) Остался один вопрос - почему оно заработало? )))))

maxon861
() автор топика
Ответ на: комментарий от maxon861

tcpdump

listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
14:12:36.945941 IP 10.15.0.1.50485 > 192.168.0.3.6665: Flags [S], seq 4177394111, win 8192, options [mss 1452,nop,wscale 2,nop,nop,sackOK], length 0
14:12:37.071708 IP 192.168.0.3.6665 > 10.15.0.1.50485: Flags [S.], seq 1211638614, ack 4177394112, win 8192, options [mss 1366,nop,wscale 8,nop,nop,sackOK], length 0
14:12:37.134686 IP 10.15.0.1.50485 > 192.168.0.3.6665: Flags [.], ack 1, win 16392, length 0
14:12:52.343785 IP 192.168.0.3.6665 > 10.15.0.1.50485: Flags [F.], seq 1, ack 1, win 256, length 0
14:12:52.368120 IP 10.15.0.1.50485 > 192.168.0.3.6665: Flags [P.], seq 1:2, ack 1, win 16392, length 1
14:12:52.406728 IP 10.15.0.1.50485 > 192.168.0.3.6665: Flags [.], ack 2, win 16392, length 0
14:12:52.516966 IP 192.168.0.3.6665 > 10.15.0.1.50485: Flags [R.], seq 2, ack 2, win 0, length 0
14:12:56.895495 IP 10.15.0.1.50508 > 192.168.0.3.6665: Flags [S], seq 3522294113, win 8192, options [mss 1452,nop,wscale 2,nop,nop,sackOK], length 0
14:12:57.036563 IP 192.168.0.3.6665 > 10.15.0.1.50508: Flags [S.], seq 1122116872, ack 3522294114, win 8192, options [mss 1366,nop,wscale 8,nop,nop,sackOK], length 0
14:12:57.093375 IP 10.15.0.1.50508 > 192.168.0.3.6665: Flags [.], ack 1, win 16392, length 0
14:12:58.308412 IP 10.15.0.1.50508 > 192.168.0.3.6665: Flags [P.], seq 1:2, ack 1, win 16392, length 1
14:12:58.437158 IP 192.168.0.3.6665 > 10.15.0.1.50508: Flags [F.], seq 1, ack 2, win 256, length 0
14:12:58.494151 IP 10.15.0.1.50508 > 192.168.0.3.6665: Flags [.], ack 2, win 16392, length 0
14:12:58.494240 IP 10.15.0.1.50508 > 192.168.0.3.6665: Flags [F.], seq 2, ack 2, win 16392, length 0
14:12:58.606730 IP 192.168.0.3.6665 > 10.15.0.1.50508: Flags [.], ack 3, win 256, length 0

maxon861
() автор топика
Ответ на: комментарий от maxon861

Заработало! Спасибо огромное. ))) Остался один вопрос - почему оно заработало? )))))

Потому что вместо

-A POSTROUTING -d 192.168.0.0/24 -p tcp -m tcp --dport 6555 -j SNAT --to-source 185.60.X.X:61000
Нужно
-A POSTROUTING -d 192.168.0.0/24 -p tcp -m tcp --dport 6555 -j SNAT --to-source 10.15.0.1
Потому что у вас в сеть tun0 уходит внешний адрес 185.60.X.X, в итоге ответ от 192.168.0.3 уходит обратно не по внутренней сети, а на интерфейс eth0 VPS'ки

А вот это можно удалить

-A POSTROUTING -d 192.168.0.0/24 -j MASQUERADE
Но можно и оставить. Просто по старому правилу, у вас критерии более жесткие, именно по порту. Наверное лучше старое и оставить. Вообще SNAT и MASQUERADE одно и тоже. Просто в SNAT нужно вручную указывать ип адрес. А MASQUERADE делает это автоматически. Поэтому можно сделать так:
-A POSTROUTING -d 192.168.0.0/24 -p tcp -m tcp --dport 6555 -j MAQUERADE

demsi
()
Последнее исправление: demsi (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.