Здравствуйте,подскажите пожалуйста,как реализовать связку 2х серверов через VPN
Тобишь,у нас 2 сервера:
192.168.0.1
192.168.1.1
На 192.168.1.1 к примеру развернут apache2. Нужно что бы при переходе на 192.168.0.1 (в браузере,не важно в общем,как) открывался веб-сервер расположенный на 192.168.1.1.
Другими словами,выполнить некое туннелирование,что бы первый сервер работал как фильтр для второго.
VPN
Заплати людям и всё настроют.
Заплати людям и всё настроют.
"Заплати" - это не проблема.
Мне нужно самому понять,как такое организовать.
Читай про OpenSSH туннелирование. Если чисто 80 порт надо, то проброс порта через ssh:
Для примера:
http://www.freebsd.org/doc/ru/books/handbook/openssh.html там пункт14.11.8
Если честный туннель, то man ssh -w
курить цепочку PREROUTING (iptables)
-A PREROUTING -d 192.168.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80
-A PREROUTING -d 192.168.0.1 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.1:8080
курить цепочку PREROUTING (iptables)
-A PREROUTING -d 192.168.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80
-A PREROUTING -d 192.168.0.1 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.1:8080
Это я уже раскурил,и пыхчу уже как год)
Но проблема вся в том,что нужно что бы IP адреса,которые коннектяться к 192.168.0.1 корректно отображались на 192.168.1.1,а то через эти правила,все что приходит на 192.168.1.1 имеет IP адрес - 192.168.0.1.
В этом случае,если к примеру банить по IP на сервере 192.168.1.1,через iptables,то это напряг..
На 192.168.0.1 сделайте:
[console]ssh -2 -N -f -L 80:192.168.1.1:8080 user@192.168.1.1 [/console]
тогда, все что придет на 192.168.0.1:80 уйдет на 192.168.1.1:8080, а туда apache вешайте. Можно наверняка и просто на 80 пробросить.
[quote=Kettler]курить цепочку PREROUTING (iptables)
-A PREROUTING -d 192.168.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80
-A PREROUTING -d 192.168.0.1 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.1:8080
Это я уже раскурил,и пыхчу уже как год)
Но проблема вся в том,что нужно что бы IP адреса,которые коннектяться к 192.168.0.1 корректно отображались на 192.168.1.1,а то через эти правила,все что приходит на 192.168.1.1 имеет IP адрес - 192.168.0.1.
В этом случае,если к примеру банить по IP на сервере 192.168.1.1,через iptables,то это напряг..[/quote]
Плохо курим.
А зачем делать SNAT или Маскардинг на интерфейс? На скок я понял вы VPN интерфейс пропустили через SNAT отсюда у вас и весь гемор.
В моём случае radmin.

[console]iptables -t nat -A PREROUTING -p tcp --dport XXX -j DNAT --to-destination 192.168.4.100:XXX[/console]
На 192.168.0.1 сделайте:
[console]ssh -2 -N -f -L 80:192.168.1.1:8080 user@192.168.1.1 [/console]
тогда, все что придет на 192.168.0.1:80 уйдет на 192.168.1.1:8080, а туда apache вешайте. Можно наверняка и просто на 80 пробросить.
Всё рулиться через iptables и ssh совсем не нужен для таких задач.
SSH разобрался. И все кстати на ура работает.
Но вот теперь постал вопрос,что использовать лучше iptables или ssh туннелирование,если нагрузка на подобные вещи будет не малая (до 50 мбит/с пропускной как минимум).
MAS От себя советую объедини две сети нормально и убери ssh он лишен.
Покажи правила iptables с обеих серверов тогда помогу. А так явно где то лишний nat.
Вообще ssh узким местом не станет при хорошем cpu, а так да и NAT дорогостоящая операция.
Можно посмотреть в сторону такой технологии: пересылать пакеты на интерфейс с которого стучимся на 192.168.1.1, не подменяя Destination в пакете (пусть остается 192.168.0.1), но тогда на 192.168.1.1 надо поднять виртуальный сетевой интерфейс с ip 192.168.0.1,чтобы ядро неотбрасывало пакеты. Такая штука используется при балансировке нагрузки, но вообще это костыль =)
Что-то наподобие вот этого:
http://metalcandy.ru/how-to-forge-centos/465-efficient-high-available-loadbalanced-cluster-on-centos
Не претендую на безапелляционность мнения.
А можно ли как то,что бы конечный сервер,корректно видел IP подключающихся. А то на apache2 у всех - 192.168.1.1.
И получается что более 10000 подключений,от IP 192.168.1.1 к 192.168.1.1 (сам к себе) - это такое через SSH туннелирование.
А можно ли как то,что бы конечный сервер,корректно видел IP подключающихся. А то на apache2 у всех - 192.168.1.1.
И получается что более 10000 подключений,от IP 192.168.1.1 к 192.168.1.1 (сам к себе) - это такое через SSH туннелирование.
Я уже писал где то лишний nat. Показывайте правила с обоих серверов.
То куда туннелируем:
Показать
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
NameServer:~# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
От куда туннелируем:
iptables -L
Показать
target prot opt source destination
ACCEPT all -- static.xxxxxxxxxxx.clients.your-server.de anywhere
ACCEPT all -- xxxxxxxxxxxxxxx.ptr.ihc.ru anywhere
DROP tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:www
DROP tcp -- anywhere anywhere tcp dpt:www #conn/32 > 50
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@xxxxx:~# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Ах,да,может это более точно объяснит ситуацию,веб-сервер - nginx + apache2.
[console]iptables -L -n -v[/console] ещё [console]ifconfig[/console] с обоих серверов.
Или лучше сами скрипты.