Существует изолированная LAN (полностью изолированный, не получает доступ снаружи и снаружи не может получить доступ к нему). Но один из сервера имеет 2 NICs, один из которых находится на нашей dev LAN и другой в изолированной LAN.
Целью являются от dev LAN до доступа определенные сервисы TCP в изолированной LAN. Например, от dev LAN (например, dev-laptop-01) я хочу получить доступ к сервису SSH сервера в изолированной LAN (например, iso-server-01), сервер, имеющий роль "шлюза" (например, gw-сервер), должны подвергнуть сервис SSH на dev LAN и передать/перенаправить его поставщику услуг на изолированной LAN.
Я хотел использовать iptables
со следующей конфигурацией:
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 10022 -j DNAT --to iso-server-01
iptables -t nat -A POSTROUTING -p tcp -m tcp -s iso-server-01 --sport 22 -j SNAT --to-source gw-server
sysctl net.ipv4.ip_forward=1
Но это не работает. От моего dev-laptop-01, когда я выхожу ssh -p 10022 gw-server
Я получаю a Connection timed out
ошибка.
Что лучший подход к этой проблеме?
PS: я выполняю RHEL 6.6.
iptables istifadə edərək cavab tapa bilmədim.
Ancaq bunlar başqa alternativlərdir:
SSH
Yuxarıda göstərilənlərə nail olmaq üçün ssh əlaqələrini "zəncirləmək" mümkündür. SSH axtarılan xidmət olduğu zaman nəticəsi olur, lakin digər hallarda işləmir.
SSH tunelindən istifadə etmək mümkündür. Aşağıdakı kimi bir şey (gw-serverdə icra ediləcək, gw-server-dev-in dev LAN-ın IP ünvanına yerləşməsini unutmayın):
ssh -f -N -L gw-server-dev:10022:iso-server-01:22 <user>@gw-server-dev
Bu həll təcrid olunmuş xidmət istifadə etməsə də, zərifliyə malikdir. şifrələmə, SSH sayəsində şifrələmədən faydalanırıq. Və hər hansı bir TCP xidmətində işləməlidir.
İşin mənfi tərəfi budur ki, bu əmr qəzaya uğrayırsa, onu yenidən başlamağın asan yolu yoxdur. Lakin ssh kifayət qədər sabitdir.
xinet
Mən də gördüm ki, xinet istifadə edərək istənilən TCP xidməti üçün istədiyimi əldə etmək mümkündür.
Budur bir nümunə sənəd:
service iso-server-01-ssh
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
redirect = iso-server-01 22
log_on_failure += USERID
}
(Bunu etmək lazımdır / etc / services-də iso-server-01-ssh-ə uyğun bir port var. Yuxarıdakı nümunəmizdə 10022 olacaqdır).
iptables
Cavabım yoxdur. Yəni işləyən biriniz varsa cavabınızı qəbul edilmiş cavab olaraq qeyd edəcəyəm. Cavabım bənzər bir həll axtaranlar üçün var, amma alternativlərlə kim yaxşı olar (mən də onlarla yaxşıyam, iptables-ı istədiyimi edə bilməyəcəyim üçün "məyus oldum")) .