1

здравствуйте
Забрел в тупик с iptables и nat, дакументации перечитал массу, может от этого совсем запутался
Суть в следующем
есть 2 VPN сервера
на первый ( server1 ), коннектимся клиентом, в туннеле поднимается сеть 10.0.0.0, серверный конец туннеля получает 10.0.0.1, клмент 10.0.0.2
добавляем правило
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to ВНЕШНИЙ_ИП
попадаем в инет
теперь поднимаем второй туннель, между VPN серверами, сеть 10.10.0.0, ( сетевуха одна, просто на других портах )
конец второго туннеля на server1 получает 10.10.0.1 на втором сервере 10.10.0.2
собственно затык как завернуть трафик из первого туннеля, во второй, а там на выход
все пытался сделать через SNAT, DNAT, вероятно этого не достаточно ?
извиняюсь если путано, набросал схемку

http://img12.imageshost.ru/img/2011/01/21/image_4d39b006de0b3.jpg

заранее спасибо

2 (21.01.2011 21:25:14 отредактировано Kettler)

Для начала зачем 1 подсеть на 2 тунеля?
или vpn 2 это доступ в интернет.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

3 (22.01.2011 09:15:04 отредактировано sergey_)

Kettler, почему одна ?
там 2 подсети, от клиента до server1- 10.0.0.0 и между VPN'ами 10.10.0.0
это не локальные VPN, то в их задачу не входит пускать/не пускать в интернет, нужно что-бы точкой входа был первый VPN а точкой выхода второй
теоретически это должно работать, но на практике не получается трафик разрулить

4

Теперь понял можно посмотреть сам скрипт?

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

5

Kettler,  так нет никакого скрипта ab
если речь о фаервольном скрипте, я что-бы ничего не мешало, на голый фаервол правила добавлял, то есть все цепочки открыты в факр ничего не загружено
или речь не об этом ?
максимум чего я добился, это пингов с клиентской машины наружу, но запросы nslookup почему-то через все это не пролезли
то есть пингуешь DNS, все в норме, а делаешь nslookup ya.ru 8.8.8.8, выдает:

*** Can't find server name for address 8.8.8.8: No response from server
Server:  UnKnown
Address:  8.8.8.8

6 (22.01.2011 10:48:58 отредактировано Kettler)

Где vpn1 ifconfig можно и route -n? Ток чтоб все соедининения впн были подняты.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

7 (22.01.2011 12:47:21 отредактировано sergey_)

Kettler, tun0 - это от клиента до vpn1

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:39813 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26249 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:2379587 (2.2 MiB)  TX bytes:2829034 (2.6 MiB)

tun1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.4.0.1  P-t-P:10.4.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:570 errors:0 dropped:0 overruns:0 frame:0
          TX packets:683 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:37152 (36.2 KiB)  TX bytes:39243 (38.3 KiB)


Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
10.4.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun1
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
192.0.2.0       0.0.0.0         255.255.255.0   U     0      0        0 venet0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 venet0
0.0.0.0         192.0.2.1       0.0.0.0         UG    0      0        0 venet0

PS, там на схемке немного другие IP

10.0.0.0/24 - это 10.8.0.0/24
10.10.0.0/24 - это 10.4.0.0/24

8 (22.01.2011 16:10:40 отредактировано Kettler)

такс вам надо чтоб 10.10.0.0/24 ходила в 194.10.10.10 ?
venet0 - ?

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

9

Kettler, не, трафик приходит из туннеля 10.8.0.1, заворачивается в подсеть второго туннеля 10.4.0.1, и уже со второго сервера в инет, ну и обратный маршрут ab

10 (22.01.2011 18:16:20 отредактировано Kettler)

ок шас разберусь ядром помогу.
на точке vpn 2 нат поднят?

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

11

Kettler, ага

12 (22.01.2011 19:06:41 отредактировано Kettler)

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -F -t nat
iptables -F -t mangle

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#Маскардинг в локалку
iptables --table nat --append POSTROUTING --out-interface tun1 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface tun0 -j MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Давай начнём с данного скрипта на vpn1. Потом от клиента пинг до vpn 2 будет?
Если не заведёться замени на "iptables --table nat --append POSTROUTING --out-interface tun1 -j MASQUERADE"
iptables -t nat -A PREROUTING -s 10.8.0.0/24 -j DNAT --to-destination 10.4.0.2
И ещё что за интерфейс venet0 ?

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

13

Kettler, ага, спасибо большое, только терь жду когда хостеры модули iptables поправят, часть не разрешены в контейнере
venet0 это 2 интнрфейсы с внешними IP и один я для проверки создавал 192.168.10.1

14

так завелось или нет?

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

15

да, с

iptables --table nat --append POSTROUTING --out-interface tun1 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface tun0 -j MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

vpn2 пингуется
попробовал на него добавить
iptables -t nat -A POSTROUTING -s 10.4.0.0/24 -o tun1 -j MASQUERADE
внешние хосты пока не пингуются

кстати
[root@30001176 ~]# echo "1" > /proc/sys/net/ipv4/ip_dynaddr
bash: /proc/sys/net/ipv4/ip_dynaddr: Operation not permitted

16 (23.01.2011 12:44:21 отредактировано Kettler)

теперь на vpn2 покажи nat
на vpn2 надо попробовать добавить
iptables -t nat -A PREROUTING -i tun1 -j DNAT --to-destination  ВНЕШНИЙ_ИП
или
iptables -t nat -A PREROUTING -i tun0 -j DNAT --to-destination  ВНЕШНИЙ_ИП

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

17

Kettler, не уверен что нужно показать)

tun1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.4.0.2  P-t-P:10.4.0.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:720 (720.0 b)  TX bytes:1312 (1.2 KiB)

из iptables я пока все убрал

18

))) ну вроде теперь должно всё завестись как показал выше ну если ток у вас не что запретит.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

19 (23.01.2011 14:02:19 отредактировано sergey_)

Kettler, не, не взлетело
внешние хосты начали пинговаться с клиента при таком раскладе
на 1 VPN

Chain PREROUTING (policy ACCEPT 473 packets, 28607 bytes)
 pkts bytes target     prot opt in     out     source               destination
   39  2337 DNAT       all  --  *      *       10.8.0.0/24          0.0.0.0/0           to:10.4.0.2

Chain POSTROUTING (policy ACCEPT 107 packets, 6866 bytes)
 pkts bytes target     prot opt in     out     source               destination
  209 12698 SNAT       all  --  *      *       10.8.0.0/24          0.0.0.0/0           to:10.4.0.1

при пинге с клиента:
[root@30001176 ~]# tcpdump -n -t -i tun1
IP 10.4.0.1 > 10.4.0.2: ICMP echo request, id 1024, seq 54528, length 40
IP 10.4.0.2 > 10.4.0.1: ICMP echo reply, id 1024, seq 54528, length 40
IP 10.4.0.1 > 10.4.0.2: ICMP echo request, id 1024, seq 54784, length 40
IP 10.4.0.2 > 10.4.0.1: ICMP echo reply, id 1024, seq 54784, length 40
IP 10.4.0.1 > 10.4.0.2: ICMP echo request, id 1024, seq 55040, length 40

на tun0 ( это клиент<--->VPN 1 ), тоже в нормне

на 2 VPS сейчас такие правила

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       all  --  10.4.0.0/24          0.0.0.0/0           to:80.67.3.98
DNAT       all  --  0.0.0.0/0            80.67.3.98          to:10.4.0.1

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       all  --  10.4.0.0/24          0.0.0.0/0           to:80.67.3.98
SNAT       all  --  80.67.3.98           0.0.0.0/0           to:10.4.0.2

при этом опять-же nslookup через все это не проходит не проходит
сейчас попробую за втором tcpdump'ом посмотреть, что происходит

в общем из 4 правил на 2 VPN срабатывает только
DNAT       all  --  10.4.0.0/24          0.0.0.0/0           to:80.67.3.98
судя по счетчикам ab

20

пока не увижу правила на vpn2 не что сказать не могу.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.