-<html><head><title>ðÏ ssh ÞÅÒÅÚ firewall-Ù</title></head>
-<meta name="description" content="óËÒÉÐÔ ÄÌÑ ÈÏÖÄÅÎÉÑ ÐÏ ssh ×ÎÕÔÒØ
-ÌÏËÁÌØÎÙÈ ÓÅÔÅÊ, ÅÓÌÉ Õ ×ÁÓ ÅÓÔØ ÌÏÇÉÎ ÎÁ gateway">
+<html><head><title>По ssh через firewall-ы</title></head>
+<meta name="description" content="Скрипт для хождения по ssh внутрь
+локальных сетей, если у вас есть логин на gateway">
<body>
-<h1>ðÏ ssh ÞÅÒÅÚ firewall-Ù</h1>
+<h1>По ssh через firewall-ы</h1>
<p>
-îÅÔ ÎÉÞÅÇÏ ÓÌÏÖÎÏÇÏ × ÔÏÍ, ÞÔÏÂÙ ÚÁÊÔÉ ÐÏ ssh ÎÁ ÍÁÛÉÎÕ ÚÁ ÆÁÊÒ×ÏÌÌ-ÏÍ Ó
-NAT, ÅÓÌÉ Õ ×ÁÓ ÅÓÔØ ÌÏÇÉÎ ÎÁ ÓÁÍ firewall. ïÓÏÂÅÎÎÏ, ÅÓÌÉ ÎÁ ÜÔÏÍ
-firewall-Å ÕÓÔÁÎÏ×ÌÅÎ netcat.
+Нет ничего сложного в том, чтобы зайти по ssh на машину за файрволл-ом с
+NAT, если у вас есть логин на сам firewall. Особенно, если на этом
+firewall-е установлен netcat.
</p>
<p>
-õ openssh ÅÓÔØ ÐÏÌÅÚÎÁÑ ÏÐÃÉÑ ProxyCommand, ËÏÔÏÒÁÑ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ
-ÄÌÑ ÜÔÏÊ ÃÅÌÉ. îÁÐÒÉÍÅÒ ÍÏÖÎÏ ÎÁÐÉÓÁÔØ × Ó×ÏÊ <tt>.ssh/config</tt>
+У openssh есть полезная опция ProxyCommand, которая может быть использована
+для этой цели. Например можно написать в свой <tt>.ssh/config</tt>
</p><pre> Host *.intranet.mycompany.com
ProxyCommand ssh firewall.mycompany.com nc -q 0 %h 22
</pre>
<p>
-ðÏÓÌÅ ÜÔÏÇÏ ÐÒÉ ÐÏÐÙÔËÅ ÐÏÊÔÉ ÐÏ ssh ÎÁ ÌÀÂÏÊ ÈÏÓÔ × ÄÏÍÅÎÅ
-intranet.mycompany.com ÂÕÄÅÔ ÐÒÏÉÚ×ÏÄÉÔØÓÑ ÚÁÐÕÓË netcat ÎÁ ÍÁÛÉÎÅ
-firewall.mycompany.com, ËÏÔÏÒÙÊ É ÂÕÄÅÔ ÄÏÓÔÁ×ÌÑÔØ ÉÎÆÏÒÍÁÃÉÀ ÏÔ ×ÁÛÅÇÏ
-ssh ÎÁ 22 ÐÏÒÔ ÔÒÅÂÕÅÍÏÊ ÍÁÛÉÎÙ (ÏÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ ÎÁ ÏÐÃÉÀ -q 0).
+После этого при попытке пойти по ssh на любой хост в домене
+intranet.mycompany.com будет производиться запуск netcat на машине
+firewall.mycompany.com, который и будет доставлять информацию от вашего
+ssh на 22 порт требуемой машины (обратите внимание на опцию -q 0).
</p>
<p>
-ðÒÏÂÌÅÍÙ ×ÏÚÎÉËÁÀÔ ÅÓÌÉ ×ÁÛÁ ÍÁÛÉÎÁ — ÎÏÕÔÂÕË, É ÎÁÈÏÄÉÔÓÑ ÔÏ ×
-ËÏÒÐÏÒÁÔÉ×ÎÏÍ ÉÎÔÒÁÎÅÔÅ, ÔÏ ÔÏÌØËÏ ÓÎÁÒÕÖÉ.
+Проблемы возникают если ваша машина — ноутбук, и находится то в
+корпоративном интранете, то только снаружи.
</p>
-<p> îÉÖÅÐÒÉ×ÅÄÅÎÎÙÊ ÛÅÌÌÏ×ÓËÉÊ ÓËÒÉÐÔ ÜÔÕ ÐÒÏÂÌÅÍÕ ÒÅÛÁÅÔ. ë ÎÅÍÕ
-ÉÍÅÅÔÓÑ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ, × ËÏÔÏÒÏÍ ÏÐÉÓÙ×ÁÅÔÓÑ ÓÐÉÓÏË nat-ÓÅÔÅÊ, ×
-ËÏÔÏÒÙÅ ÈÏÞÅÔÓÑ ÈÏÄÉÔØ ÐÏ ssh.
+<p> Нижеприведенный шелловский скрипт эту проблему решает. К нему
+имеется файл конфигурации, в котором описывается список nat-сетей, в
+которые хочется ходить по ssh.
</p><p>
-ðÒÅÄÕÓÍÏÔÒÅÎÙ Ä×Å ÄÉÒÅËÔÉ×Ù:
+Предусмотрены две директивы:
</p><dl>
<dt>add_domain <i>domain</i> <i>host...</i>
-</dt><dd>úÁÄÁÅÔ ÓÐÉÓÏË ÈÏÓÔÏ×, ËÏÔÏÒÙÅ ÐÒÉÎÁÄÌÅÖÁÔ ÎÅËÏÔÏÒÏÊ ÓÅÔÉ. ÷ ÓÌÕÞÁÅ
-ÅÓÌÉ ÓËÒÉÐÔ ×ÙÚ×ÁÎ Ó ÕËÁÚÁÎÉÅÍ ÏÄÎÏÇÏ ÉÚ ÜÔÉÈ ÈÏÓÔÏ× ÂÅÚ ÄÏÍÅÎÁ,
-ÓÞÉÔÁÔØ, ÞÔÏ ÈÏÓÔ ÐÒÉÎÁÄÌÅÖÉÔ ÕËÁÚÁÎÎÏÍÕ ÄÏÍÅÎÕ
+</dt><dd>Задает список хостов, которые принадлежат некоторой сети. В случае
+если скрипт вызван с указанием одного из этих хостов без домена,
+считать, что хост принадлежит указанному домену
</dd><dt>proxy <i>proxy_host</i> <i>domain_mask</i>
-</dt><dd>õËÁÚÙ×ÁÅÔ ÎÁ ËÁËÏÊ ÍÁÛÉÎÅ ÓÌÅÄÕÅÔ ÚÁÐÕÓËÁÔØ netcat ÄÌÑ ÄÏÓÔÕÐÁ Ë
-ÈÏÓÔÁÍ ÕËÁÚÁÎÎÏÇÏ ÄÏÍÅÎÁ. <i>domain_mask</i> ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ Ú×ÅÚÄÏÞËÉ É
-ÄÒÕÇÉÅ ÍÅÔÁÓÉÍ×ÏÌÙ, ÄÏÐÕÓÔÉÍÙÅ × ËÏÍÁÎÄÅ <b>case</b> shell. ó ÍÁÓËÏÊ
-ÓÏÐÏÓÔÁ×ÌÑÀÔÓÑ ÉÍÅÎÁ ÈÏÓÔÏ×, ÄÏÐÏÌÎÅÎÎÙÅ ÄÏÍÅÎÎÙÍÉ ÉÍÅÎÁÍÉ ×
-ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ËÏÍÁÎÄÏÊ add_domain.
+</dt><dd>Указывает на какой машине следует запускать netcat для доступа к
+хостам указанного домена. <i>domain_mask</i> может содержать звездочки и
+другие метасимволы, допустимые в команде <b>case</b> shell. С маской
+сопоставляются имена хостов, дополненные доменными именами в
+соответствии с командой add_domain.
</dd>
<table border="0"><tbody><tr>
<td bgcolor="#000000">
</pre></font>
</td></tr></tbody></table>
-æÁÊÌ .rsrc ÍÏÖÅÔ ×ÙÇÌÑÄÅÔØ, ÎÁÐÒÉÍÅÒ, ×ÏÔ ÔÁË:
+Файл .rsrc может выглядеть, например, вот так:
<table border="0"><tbody><tr>
<td bgcolor="#000000">
</pre></font>
</td></tr></tbody></table>
-÷ ÒÅÚÕÌØÔÁÔÅ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÔÁËÏÇÏ ÆÁÊÌÁ
+В результате использования такого файла
<ol>
-<li> ëÏÒÏÔËÉÅ ÉÍÅÎÁ ÈÏÓÔÏ× dragon, vasilisk É hydra ÂÕÄÕÔ ÒÁÓÛÉÒÑÔÓÑ
-ÄÏ dragon.home.ru, vasilisk.home.ru etc, ÎÅÚÁ×ÉÓÉÍÏ ÏÔ ÔÏÇÏ, × ËÁËÏÊ
-ÓÅÔÉ ÓÅÊÞÁÓ ÍÁÛÉÎÁ.
-</li><li> áÎÁÌÏÇÉÞÎÏ ÉÍÅÎÁ ÈÏÓÔÏ× elk, ibex etc ÂÕÄÕÔ ÉÓËÁÔØÓÑ × ÄÏÍÅÎÅ
+<li> Короткие имена хостов dragon, vasilisk и hydra будут расширятся
+до dragon.home.ru, vasilisk.home.ru etc, независимо от того, в какой
+сети сейчас машина.
+</li><li> Аналогично имена хостов elk, ibex etc будут искаться в домене
kontora.ru
-</li><li> ïÂÒÁÝÅÎÉÑ Ë ÈÏÓÔÁÍ ÄÏÍÅÎÁ kontora.ru ÂÕÄÅÔ ÐÒÏÉÓÈÏÄÉÔØ ÞÅÒÅÚ ÐÒÏËÓÉ
-gw.kontora.ru, ÅÓÌÉ ÔÏÌØËÏ ÍÙ ÎÅ × ÌÏËÁÌØÎÏÊ ÓÅÔÉ ËÏÎÔÏÒÙ (É ÐÏ dhcp ÎÁÍ
-ÎÅ ÏÔÄÁÌÉ ÄÏÍÅÎÎÏÅ ÉÍÑ kontora.ru)
-</li><li> ïÂÒÁÝÅÎÉÑ Ë ÈÏÓÔÁÍ home.ru ÂÕÄÕÔ ÐÒÏÉÓÈÏÄÉÔØ ÞÅÒÅÚ gw.home.ru, ÅÓÌÉ
-ÔÏÌØËÏ ÍÙ ÎÅ × ÌÏËÁÌØÎÏÊ ÓÅÔÉ home.ru
+</li><li> Обращения к хостам домена kontora.ru будет происходить через прокси
+gw.kontora.ru, если только мы не в локальной сети конторы (и по dhcp нам
+не отдали доменное имя kontora.ru)
+</li><li> Обращения к хостам home.ru будут происходить через gw.home.ru, если
+только мы не в локальной сети home.ru
</li></ol>
</dl></body></html>