Здравствуйте!
Помогите, пожалуйста, разобраться в ситуации.Есть маленькая локальная сеть с одним выходом в интернет.
Есть компьютер "А", который работает шлюзом (две сетевые, ipfw, nat, proxy).
Есть компьютер "Б", который работает веб-сервером (одна сетевая).
Есть компьютер "В", который просто компьютер (одна сетевая).
Компьютер "А" даёт доступ компьютерам "Б" и "В" наружу, и переадресует http запросы снаружи на веб-сервер "Б". Всё прекрасно работает, интернет есть, веб-сайт извне виден. Проблема в том, к этому самому сайту не получается получить доступ с компьютера "В".
То есть, получается запрос от компьютера "В" сначала проходит через первый nat, а потом должен пройти через второй, который сделает "redirect_port" и где-то вот тут что-то и происходит.
По условиям задачи, обращаться к внутреннему веб-сайту можно только по внешнему адресу.
Задача сейчас вроде бы решена прописыванием в hosts компьютера "В" соответствия между внешним dns-именем веб-сервера и его внутренним (локальным) адресом. Интересует, может ли она решаться без этого.
====
Внешний адрес шлюза: 53.54.55.56
Внутренний адрес шлюза: 192.168.0.150
Внутренний адрес веб-сервера "Б": 192.168.0.221
Внутренний адрес просто компьютера "В": 192.168.0.200
====
#!/bin/sh
ipfw -q -f flush
cmd="ipfw -q add"
skip="skipto 800"
pif="rl0"
pip="53.54.55.56"
prnet="192.168.0.0/24"
ipfw -q nat 1 config log if $pif
ipfw -q nat 2 config if rl0 same_ports redirect_port tcp 192.168.0.200:3389 33333 redirect_port tcp 192.168.0.221:80 80 redirect_port tcp 192.168.0.221:9123 9123 redirect_port tcp 192.168.0.221:1935 1935
ipfw -q table 0 flush
ipfw -q table 0 add 8.8.8.8
ipfw -q table 0 add 8.8.8.8
ipfw -q table 0 add 8.8.8.8
ipfw -q table 1 flush
ipfw -q table 1 add 26.27.28.29
ipfw -q table 1 add 26.27.28.30
ipfw -q table 1 add 26.27.28.31
$cmd 005 allow all from any to any via vr0
$cmd 008 fwd 127.0.0.1,3128 ip from 192.168.0.0/24 to any dst-port 80,8080 out xmit rl0
$cmd 010 allow all from any to any via lo0
$cmd 014 nat 2 tcp from table\(1\) to $pip 33333 in recv rl0
$cmd 015 nat 2 tcp from 192.168.0.200 3389 to any out xmit rl0
$cmd 016 nat 2 tcp from any to $pip 80,9123,1935 in recv rl0
$cmd 017 nat 2 tcp from 192.168.0.221 80,9123,1935 to any out xmit rl0
$cmd 019 nat 1 ip from any to $pip in recv rl0
$cmd 050 allow tcp from $pip to any 80 out xmit $pif
$cmd 055 allow tcp from $pip to any 443 out xmit $pif
$cmd 060 allow tcp from $pip to table\(0\) 53 out xmit $pif
$cmd 065 allow udp from $pip to table\(0\) 53 out xmit $pif
$cmd 070 allow tcp from $pip to any out xmit $pif uid root
$cmd 075 allow icmp from $pip to any out xmit $pif
$cmd 080 allow tcp from $pip 53133 to table\(1\) out xmit $pif
$cmd 081 allow tcp from $pip 33333 to table\(1\) xmit $pif
$cmd 082 allow tcp from 192.168.0.200 3389 to any out xmit rl0
$cmd 083 allow tcp from 192.168.0.221 80,9123,1935 to any out xmit rl0
$cmd 084 allow tcp from $pip 80 to any out xmit $pif
$cmd 085 skipto 800 tcp from 192.168.0.200 to any 25,110,443,6669,53134 out xmit rl0
$cmd 0100 allow tcp from table\(0\) 53 to $pip in recv $pif
$cmd 0101 allow udp from table\(0\) 53 to $pip in recv $pif
$cmd 0105 allow tcp from any 80 to $pip in recv $pif
$cmd 0110 allow tcp from any 443 to $pip in recv $pif
$cmd 0115 allow tcp from table\(1\) to $pip 53133 in recv $pif
$cmd 0120 allow icmp from any to $pip in recv $pif
$cmd 320 deny tcp from any to any 137 in recv $pif
$cmd 321 deny tcp from any to any 138 in recv $pif
$cmd 322 deny tcp from any to any 139 in recv $pif
$cmd 323 deny tcp from any to any 81 in recv $pif
$cmd 400 deny log all from any to any in recv $pif
$cmd 450 deny log all from any to any out xmit $pif
$cmd 800 nat 1 ip from $prnet to any out xmit $pif
$cmd 801 allow ip from any to any
$cmd 999 deny log all from any to any