Сначала задача:
Сделать так, чтобы люди из удаленного офиса (ну и я из дома) могли подключаться к внутренней сетке конторы и работать на терминальном сервере.
Имеется:
Головной офис.
Сеть из ~20 компов + шлюз в интернет (со SQUID'ом, поднятом, кстати, тоже по статье lissyar'ы) на базе FreeBSD 7.0. Шлюз имеет внутренний IP 192.168.0.100, все остальные (192.168.0.2 - 192.168.0.99) работают через непрозрачный проксик с аутентификацией по паролю и с НАТом на icq, почту и т.п. У шлюза есть вторая сетевуха с внешним (белым) IP адресом от провайдера.
Удаленный офис:
Два компа под виндой (XP Pro) – один выполняет роль шлюза с подключением к интернету по модему SkyLink. Его внутренний IP – 192.168.1.1. Внешний – провайдерский от модема. Второй подключается к инету через первый, IP – 192.168.1.2.
Мой дом:
Небольшая сеть на 3 машины, сидим за ADSL-роутером на NAT’e. IP моей машины – 192.168.1.2. Она под WinXP.
Излагаю суть проблемы:
Настроил сервер входящих VPN-подключений под FreeBSD 7.0 на основе PoPToP. Настраивал все по статье lissyar'ы - http://www.lissyara.su/?id=1073. В принципе, когда я учел замечания из комментариев, это чудо заработало. Я долго радовался, что могу рулить серваками из дома, пока не подключил удаленный офис (собственно, ради чего все это и было задуманно). В общем, в удаленном офисе не могут одновременно оба компа подключится к сетке. Точнее, подключится-то они могут, но в итге работает только тот, что первый подключился. Со второго не уходят пинги, не приходят к нему и, естественно, никакие другие удаленные приложения (RDP, например) тоже не работают.
Как я понял, суть такой проблемы в неумении PoPToP (а точнее GRE) работать за НАТ’ом нескольким клиентам одновременно. Но, может быть, эту проблему я бы и решил, но вот что непонятно. Даже если машины не находятся за одним НАТовым роутером, все равно, не могут подключится вдвоем. Эффект тот же. Само VPN-подключение устанавливается, а дальше не идет ничего на второй по счету подключившейся машине (Для первой все ОК). Причем, даже туннельный интерфейс для нее не поднимается. Выглядит, как и обычно:
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1398
inet 192.168.0.200 --> 192.168.0.201 netmask 0xffffffff
Opened by PID 96196
tun1: flags=8010<POINTOPOINT,MULTICAST> metric 0 mtu 1500
Короче, сейчас есть две сложности. Во-первых, сделать возможным одновременную работу с внутренними ресурсами сети для двух машин, сидящих за разными роутерами (вообще никак не связанных). Во-вторых, то же, что и в предыдущем пункте, но для машин, находящихся за одним роутером с NAT.
Теперь конфиги:
pptpd.conf
Код: Выделить всё
ppp /usr/sbin/ppp
noipparam
ppp.conf
Код: Выделить всё
default:
disable ipv6cp
disable ipv6
pptp:
enable proxy
enable MSChapV2
set timeout 0
set dns 192.168.0.2
set mppe 128 stateless
set ifaddr 192.168.0.200 192.168.0.201-192.168.0.210 255.255.255.255
Код: Выделить всё
cc ********** 192.168.0.201
denny ********** 192.168.0.202
ivanov ********** 192.168.0.203
olga ********** 192.168.0.204
sly ********** 192.168.0.205
Код: Выделить всё
#!/bin/sh
# Simple config
# Vars
FwCMD="/sbin/ipfw -q "
LanOut="vr0"
LanIn="xl0"
IpOut="xxx.xxx.xxx.xxx"
IpIn="192.168.0.100"
NetMaskIn="24"
NetMaskOut="27"
NetIn="192.168.0.0"
NetOut="xxx.xxx.xxx.0"
# Init
${FwCMD} -f flush
# HZ
${FwCMD} add 100 check-state
# Loopback
${FwCMD} add 1100 allow ip from any to any via lo0
${FwCMD} add 1200 deny ip from any to 127.0.0.0/8
${FwCMD} add 1300 deny ip from 127.0.0.0/8 to any
# Forbid internal network on external interface
${FwCMD} add 2100 deny ip from ${NetIn}/${NetMaskIn} to any in via ${LanOut}
# Forbid external network on internal interface
${FwCMD} add 2200 deny ip from ${NetOut}/${NetMaskOut} to any in via ${LanIn}
# Forbid private networks
${FwCMD} add 3100 deny ip from any to 10.0.0.0/8 in via ${LanOut}
${FwCMD} add 3200 deny ip from any to 172.16.0.0/12 in via ${LanOut}
${FwCMD} add 3300 deny ip from any to 192.168.0.0/16 in via ${LanOut}
${FwCMD} add 3400 deny ip from any to 0.0.0.0/8 in via ${LanOut}
# Forbid frag icmp
${FwCMD} add 4100 deny icmp from any to any frag
# Forbid broadcast icmp
${FwCMD} add 5100 deny log icmp from any to 255.255.255.255 in via ${LanOut}
${FwCMD} add 5200 deny log icmp from any to 255.255.255.255 out via ${LanOut}
# Transparent squid
#${FwCMD} add 6100 fwd 127.0.0.1,3128 tcp from ${NetIn}/${NetMaskIn} to any 80 via ${LanOut}
# Forbid non-proxy http traffic
${FwCMD} add 7100 allow all from ${IpOut} to any 80 via ${LanOut}
${FwCMD} add 7200 allow all from ${IpOut} to any 443 via ${LanOut}
${FwCMD} add 7300 allow all from ${IpOut} to any 21 via ${LanOut}
${FwCMD} add 7400 allow all from any to ${IpIn} 3128 via ${LanIn}
${FwCMD} add 7500 deny all from ${NetIn}/${NetMaskIn} to not ${NetIn}/${NetMaskIn} 80,21,443
#${FwCMD} add 7600 deny all from ${NetIn}/${NetMAskIn} to any 80 via ${LanOut}
# NAT
${FwCMD} add 8100 divert natd ip from ${NetIn}/${NetMaskIn} to any out via ${LanOut}
${FwCMD} add 8200 divert natd ip from any to ${IpOut} in via ${LanOut}
# PPTP access
${FwCMD} add 8500 allow tcp from any to me 1723
${FwCMD} add 8600 allow gre from any to any
${FwCMD} add 8700 allow ip from any to any via tun0
${FwCMD} add 8710 allow ip from any to any via tun1
${FwCMD} add 8720 allow ip from any to any via tun2
${FwCMD} add 8730 allow ip from any to any via tun3
${FwCMD} add 8740 allow ip from any to any via tun4
# Forbid private networks
${FwCMD} add 9100 deny ip from 10.0.0.0/8 to any out via ${LanOut}
${FwCMD} add 9200 deny ip from 172.16.0.0/12 to any out via ${LanOut}
${FwCMD} add 9300 deny ip from 192.168.0.0/16 to any out via ${LanOut}
${FwCMD} add 9400 deny ip from 0.0.0.0/8 to any out via ${LanOut}
# Traffic counters
# Outgoing SMTP
${FwCMD} add 10100 count tcp from any to any 25 out via ${LanOut}
# Incoming POP3
${FwCMD} add 10200 count tcp from any 110 to any in via ${LanOut}
# Incoming Web
${FwCMD} add 10300 count tcp from any 80,443 to any in via ${LanOut}
# ICQ traffic
${FwCMD} add 10400 count all from any 5190 to any via ${LanOut}
# Incoming All
${FwCMD} add 10700 count all from any to any in via ${LanOut}
# Outgoing All
${FwCMD} add 10800 count all from any to any out via ${LanOut}
# Incoming + Outgoing All
${FwCMD} add 10900 count all from any to any via ${LanOut}
# Allow established
${FwCMD} add 12100 allow tcp from any to any established
# Allow all for gateway
${FwCMD} add 13100 allow ip from ${IpOut} to any out xmit ${LanOut}
# Allow DNS request
${FwCMD} add 14100 allow udp from any 53 to any via ${LanOut}
# Allow time synchronization
${FwCMD} add 14200 allow udp from any to any 123 via ${LanOut}
# Allow pings
${FwCMD} add 14300 allow icmp from any to any icmptypes 0,8,11
# Allow SMTP server
${FwCMD} add 14400 allow tcp from any to ${IpOut} 25 via ${LanOut}
${FwCMD} add 14500 allow tcp from any to 192.168.0.2 25 via ${LanOut}
# Allow SSH
${FwCMD} add 14600 allow tcp from any to ${IpOut} 22 via ${LanOut}
${FwCMD} add 14700 allow tcp from any to ${IpIn} 22 via ${LanIn}
# Allow POP3 server
${FwCMD} add 14800 allow tcp from any to ${IpOut} 110 via ${LanOut}
${FwCMD} add 14900 allow tcp from any to 192.168.0.2 110 via ${LanOut}
# Allow internal traffic
${FwCMD} add 16100 allow ip from any to any via ${LanIn}
# Allow ICQ
${FwCMD} add 16200 allow all from ${NetIn}/${NetMaskIn} to any 5190 in via ${LanIn} setup
# Allow outgoing SMTP
${FwCMD} add 16300 allow all from ${NetIn}/${NetMaskIn} to any 25 in via ${LanIn} setup
# Allow DNS request
${FwCMD} add 16400 allow all from ${NetIn}/${NetMaskIn} to any 53 in via ${LanIn} setup
# Allow NTP syncronization
${FwCMD} add 16500 allow tcp from ${NetIn}/${NetMaskIn} to any 123 in via ${LanIn} setup
Код: Выделить всё
interface vr0
same_ports
unregistered_only
redirect_port tcp 192.168.0.2:25 25
redirect_port tcp 192.168.0.2:110 110
ppp.log (ПОДКЛЮЧЕНИЕ)
Код: Выделить всё
Oct 31 00:43:31 gateway ppp[96299]: Phase: Using interface: tun0
Oct 31 00:43:31 gateway ppp[96299]: Phase: deflink: Created in closed state
Oct 31 00:43:31 gateway ppp[96299]: Phase: PPP Started (direct mode).
Oct 31 00:43:31 gateway ppp[96299]: Phase: bundle: Establish
Oct 31 00:43:31 gateway ppp[96299]: Phase: deflink: closed -> opening
Oct 31 00:43:31 gateway ppp[96299]: Phase: deflink: Connected!
Oct 31 00:43:31 gateway ppp[96299]: Phase: deflink: opening -> carrier
Oct 31 00:43:31 gateway ppp[96299]: Phase: deflink: carrier -> lcp
Oct 31 00:43:31 gateway ppp[96299]: Phase: bundle: Authenticate
Oct 31 00:43:31 gateway ppp[96299]: Phase: deflink: his = none, mine = CHAP 0x81
Oct 31 00:43:31 gateway ppp[96299]: Phase: Chap Output: CHALLENGE
Oct 31 00:43:31 gateway ppp[96299]: Phase: Chap Input: RESPONSE (49 bytes from cc)
Oct 31 00:43:31 gateway ppp[96299]: Phase: Chap Output: SUCCESS
Oct 31 00:43:31 gateway ppp[96299]: Phase: deflink: lcp -> open
Oct 31 00:43:31 gateway ppp[96299]: Phase: bundle: Network
Oct 31 00:43:31 gateway ppp[96299]: Warning: ff02:4::/32: Change route failed: errno: Network is unreachable
Oct 31 00:43:31 gateway ppp[96299]: Warning: ff02:4::/32: Change route failed: errno: Network is unreachable
Код: Выделить всё
Oct 31 00:45:04 gateway ppp[96299]: Phase: deflink: open -> lcp
Oct 31 00:45:04 gateway ppp[96299]: Warning: ff02:4::/32: Change route failed: errno: Network is unreachable
Oct 31 00:45:04 gateway ppp[96299]: Phase: bundle: Terminate
Oct 31 00:45:04 gateway ppp[96299]: Phase: deflink: read (0): Got zero bytes
Oct 31 00:45:04 gateway ppp[96299]: Phase: deflink: Disconnected!
Oct 31 00:45:04 gateway ppp[96299]: Phase: deflink: Connect time: 93 secs: 1282 octets in, 504 octets out
Oct 31 00:45:04 gateway ppp[96299]: Phase: deflink: 21 packets in, 15 packets out
Oct 31 00:45:04 gateway ppp[96299]: Phase: total 19 bytes/sec, peak 646 bytes/sec on Fri Oct 31 00:43:32 2008
Oct 31 00:45:04 gateway ppp[96299]: Phase: deflink: lcp -> closed
Oct 31 00:45:04 gateway ppp[96299]: Phase: bundle: Dead
Oct 31 00:45:04 gateway ppp[96299]: Phase: PPP Terminated (normal).
Код: Выделить всё
gateway_enable="YES"
Код: Выделить всё
sshd_enable="YES"
mysql_enable="YES"
apache_enable="YES"
squid_enable="YES"
samsd_enable="YES"
firewall_enable="YES"
firewall_type="/etc/rc.firewall"
firewal_logging="YES"
natd_enable="YES"
# natd_interface="vr0"
natd_flags="-f /etc/natd.conf"
Помогите, пожалуйста