Чи можна перенаправляти/пересилати трафік TCP на зовнішній пункт призначення на основі правил?

Я навіть не впевнений, що це можливо ... Крім того, будь ласка, пробачте моє незнання з цього питання.

Що я шукаю для "щось", що дозволить мені перенаправити весь трафік TCP, що надходить на хост А для хоста B, але на основі деяких правил.

Скажімо, хост A (посередник) отримує запит (наприклад, простий HTTP-запит) від хоста з доменом X. У цьому випадку він дозволяє проходити через нього, а сам він обробляється.

Тепер давайте припустимо, що хост A отримує інший HTTP-запит від хоста з доменом Y, але цього разу, через деяких настроюваних правил, хост A перенаправляє весь трафік на хост B, а хост B здатний обробляти його так, ніби він прийшов безпосередньо З домену Y. І, в цей момент, і хост B, і хост з доменом Y здатні вільно спілкуватися (звичайно, мислений хост A).

ПРИМІТКА. Всі ці хости знаходяться в Інтернеті, а не в локальній мережі.

Будь ласка, дайте мені знати, якщо пояснення недостатньо зрозумілі.

2
Що саме ви намагаєтеся зробити?
додано Автор Michael Hampton, джерело
Це цілком можливо. Чи можна вказати, якщо ви бажаєте зробити це лише за допомогою HTTP або з іншими службами (ssh, ftp і т.д.). Також який веб-сервер ви використовуєте? Apache, nginx, IIS?
додано Автор Kevin Davis, джерело
Якщо ви збираєтеся його скасувати, то навіщо витрачати час на налаштування його на маршрут до іншого хосту? Існує багато динамічних DNS-рішень для тих, хто не має статичних IP-адрес. Ви повинні зробити перемикання між хостами за допомогою DNS.
додано Автор Kevin Davis, джерело
@xfx домен X, означає, що вхідний трафік або домен x розміщується в хості A? будь ласка, поясніть більше.
додано Автор Rahul Patil, джерело
Якщо машина перенаправлення була linux, я б відповідь для вас, як я зробив саме те, що ви просите, використовуючи правила iptables працювати навколо ISP блокування портів питань і відсутність статичного IP. Чи має машина перенаправлення мати сервер 2008 або є шанс, що ви можете використовувати linux?
додано Автор hoss, джерело
@DavidHoude: Тому що я буду (тимчасово) розміщувати всі ці веб-сайти на локальному комп'ютері. Потім я використовую сервер (хост А), до якого я маю повний доступ, щоб перенаправляти трафік, що надходить з моїх доменів на мій локальний комп'ютер (хост B). Я міг би скористатися "PlusService", але це не означає, що всі мої домени з NetSol можна перенести на no-ip.com, а також матимуть додаткову (хоча і невелику) плату.
додано Автор xfx, джерело
Домен XRahulPatil X розміщений за межами хоста A. Подумайте про домен X як google.com, наприклад.
додано Автор xfx, джерело
@MichaelHampton: у мене є декілька веб-сайтів, розміщених на некерованому сервері, який я збираюся скасувати, з причин, які не стосуються цієї теми. Тому я хотів би мати змогу повторно налаштувати всі мої домени (зареєстровані в NetSol), щоб вони вказували на машину зі статичним IP-адресою (це буде хост A), а потім перенаправляти весь трафік на локальний (внутрішній) комп'ютер (хост B), який, на жаль, має динамічну IP-адресу. Це в основному це.
додано Автор xfx, джерело
@DavidHoude: Якщо можливо, я б не хотів обмежувати будь-який протокол, але якщо це було необхідно, я був би щасливий з www, ftp, ssh і smpt. Що стосується сервера, я запускаю Apache, але це "цільова" машина (B); машина, що обробляє перенаправлення (A), працює під керуванням Windows Server 2008R2.
додано Автор xfx, джерело

7 Відповіді

Що ви описуєте в Проксі-сервері TCP . Якщо ви прагнете перенаправити з'єднання HTTP, вам знадобиться лише HTTP-проксі .

Найчастіше використовується проксі-сервер TCP rinetd .

Від debian-administration.org :

Пакет rinetd містить простий інструмент, який може бути налаштований для прослуховування з'єднань на машині, і мовчки перенаправляти їх до нового призначення. Коротше кажучи, він працює як простий у налаштуванні TCP-проксі.

Це не має значення, якщо ви знаходитесь в Інтернеті або в локальній мережі, доки ви можете прокласти маршрут до нового IP-адреси, і жоден брандмауер не потрапить у ваш шлях.

5
додано
rinetd дозволяє перенаправляти стільки портів, скільки хочете.
додано Автор scuba_mike, джерело
rinetd також працює на Windows Server 2008R2.
додано Автор scuba_mike, джерело
Будь-яка особлива причина, чому ви хочете використовувати імена хостів, а не IP-адреси?
додано Автор riz, джерело
Це звучить багатообіцяючим. Як щодо підтримки додаткових портів, таких як 25, 110 і т.д. ...?
додано Автор xfx, джерело
Я почав грати з rinetd, і він робить саме те, що ви описуєте, на жаль, він не дозволяє імена хостів у розділі правил; з сторінки man: Імена хостів не дозволені в дозволених і заборонених правилах ... і без правил на основі хоста, я не зможу досягти того, що шукаю.
додано Автор xfx, джерело
У мене є кілька доменів, розміщених на сервері. Всі вони вказують на IP-адресу сервера, але мені потрібно мати можливість перенаправити цей трафік (деяких з цих доменів) на інший сервер, і це потрібно зробити, не змінюючи IP-адресу, на який спрямовуються ці домени .
додано Автор xfx, джерело

Ви можете використовувати haproxy , налаштувавши один інтерфейс із декількома серверами на основі ваших правил:

frontend my_front
    mode http
    bind :80
    option forwardfor
    use_backend backend1 if 
    use_backend backend2 if 

backend backend1
    mode http
    server server1 localhost:8000

backend backend2
    mode http
    server server2 remote_server:8000

You can read more about it on haproxy site: http://haproxy.1wt.eu/

2
додано
Я думаю це це !!! На перший погляд він схожий на rinetd з втраченими потужними правилами, включаючи деякі, які можуть бути засновані на доменному імені, що саме це мені потрібно. Спасибі, Міхай!
додано Автор xfx, джерело

Можливо, ви могли б скористатися сокатами?

socat TCP-LISTEN:80,fork TCP:my.newservername.com:80
1
додано
Насправді, це зворотне. Я б хотів ТІЛЬКИ перенаправити, на основі вхідного імені хоста. Наприклад, якщо serverfault.com намагається підключитися, то всім трафіку дозволяється переходити до сервера, що обробляє маршрутизацію/перенаправлення. Але якщо виявлено mydomain.tld, то я хочу, щоб весь трафік був переадресований на xxx.xxx.xxx.xxx
додано Автор xfx, джерело

Якщо те, що ви бачите, є загальним рішенням рівня TCP, то ви повинні прийняти Відповідь Еколітана як правильна, і нагородують нагороду. Я бачу, що ви проявили певний інтерес до перенаправлення інших послуг.

Якщо ви зацікавлені тільки в HTTP, або rinetd не зробить все, що потрібно, тоді відповідь nandoP про використання .htaccess знаходиться по правильних лініях (однак, будь-яке рішення), але потрібно знати трохи більше. Крім того, ви можете використовувати спеціальне програмне забезпечення-проксі, як лак або squid. Якщо ви знайомі з Apache, ви можете також дотримуватися цього.

Apacherule перенаправляє, наприклад, http://www.example.com/foo на http://hostb.example.com/foo , а тоді, якщо ви щось не зробите, hostB побачить запит приходить як до цього домену. Залежно від вашого веб-сайту, вам, швидше за все, потрібно буде виправити ситуацію на hostB, аби не розпочати надсилання сторінок з URL-адресами, які посилаються на hostb.example.com.

Якщо у вас старіша версія Apache, можливо, доведеться виправити заголовок хоста на hostB, але, як і на Apache 2.0.31, існує директива ProxyPreserveHost (див. документи для mod_proxy), які можна поставити на hostA.

Минуло багато часу, оскільки мені це було потрібно, і я просто дізнався про ProxyPreserveHost. Схоже, вам потрібно щось подібне до hostA (не перевірено):


  Servername www.example.com

  RewriteEngine on
  ProxyPreserveHost on

  RewriteCond %{REMOTE_ADDR}       ^123\.45\.67\.[0-9]*$
  RewriteRule    ^(.*)$  http://hostb.example.com/$1  [P]

  ...


Можна додати декілька доменів у цю серверну конфігурацію, але, напевно, краще налаштувати, як зазначено вище, окремо для кожного домену.

Якщо RewriteCond не збігається, то він оброблятиме інші правила у конфігурації віртуального хоста.

0
додано

Більшість апаратних/програмних рішень брандмауера може зробити цю роботу для вас на основі джерела IP.

Якщо ви хочете прийняти рішення на основі вихідного домену, ніж наступні апаратні брандмауери, безумовно, можна це зробити: DLINK серія DFL (хоча б старші моделі), CheckPoint, Cisco ASA.

Люди також кажуть, що програмне забезпечення FW Comodo може це зробити ( http://www.wilderssecurity.com /showthread.php?t=245901 ). Але я не впевнений.

Візьміть до уваги, що будь-яке програмне рішення, яке не входить у вікно, яке вам пощастить знайти, також можна розгорнути як віртуальну машину на вашому Windows 2008R2.

0
додано

Я шукаю "щось", що дозволить мені перенаправляти весь трафік TCP, що надходить на хост А, на хост B, але на основі деяких правил.

iptables найкраще (незважаючи на ненависників)

Пропонуємо хост A (посередник) отримує запит (наприклад, простий HTTP-запит) від хосту з доменом X. У цьому випадку він пропускає, і він обробляється самим хостом А.

щоб зробити це твердження має сенс, їм вгадувати ви маєте на увазі хост А працює http на tcp/80. існує ще один хост, що переходить від Інтернету до хоста A, і ви направляєте 0.0.0.0/0 до хоста A: 80. якщо ви маєте на увазі хост A в прямому ефірі в Інтернеті, не робіть цього, поки ви не знаєте, що iptables добре: P

Тепер давайте припустимо, що хост A отримує інший HTTP-запит від хоста з доменом Y, але цього разу, через деяких настроюваних правил, хост A перенаправляє весь трафік на хост B, а хост B може обробляти його як якщо прийшов безпосередньо з домену Y. І, в цей момент, і хост B, і хост з доменом Y здатні вільно спілкуватися (звичайно, мислений хост A).

ОК, так що тепер я не думаю, що ви говорите про шар 3/4 тут, але шар 7 переписувати ... спробуйте .htacess на Apache або навіть краще nginx (чи є інший вибір?)

ПРИМІТКА. Усі ці хости знаходяться в Інтернеті, а не в локальній мережі.

d00d читати те, що я сказав вище. дізнатися швидко iptables. захистити себе.

Будь ласка, повідомте мені, якщо пояснення недостатньо зрозумілі.

пояснення недостатньо зрозуміле. спробуйте спочатку g00gle.

0
додано
Можливо, відповідь, яку я дав RSchulze (вище), трохи легше зрозуміти.
додано Автор xfx, джерело

Я знайшов наступну вбудовану функціональність Windows відмінно працював для моїх потреб, краще ніж TCPTunnel або навіть FPipe

http://www.sysbiosis.com/blog/set-tcp-proxy- вікна

For example, to open the redirection tunnel, use the following: netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport

And to close/stop it, use the following: netsh interface portproxy delete v4tov4 listenaddress=localaddress listenport=localport

0
додано
Ви повинні поставити резюме кроків, щоб завершити у відповідь, а не просто посилання на інший сайт. Ця сторінка може зникнути в будь-який час у майбутньому, і тоді ця відповідь буде марною.
додано Автор Miles Rout, джерело
tx, тільки оновив мою посаду.
додано Автор anzenketh, джерело