Есть сеть в фирме с роутером на FreeBSD, есть внешний сервер в другой стране на CentOS.
Задача: обеспечить себе доступ из любого места к сети фирмы.
Данные: Сеть предприятия — 192.168.0.0, находится за роутером на FreeBSD c bge0(192.168.0.111) и re0(192.168.1.2 — в одной подсети с модемом, что впрочем, не так уж важно). Внешний сервер — xx.xx.xx.xx Адрес FreeBSD в OpenVPN-сети — 192.168.255.6, адрес CentOS-сервера — 192.168.255.1
Проблема: нет доступа к внутренней сети с внешнего сервера (доступ к FreeBSD-роутеру есть), зато есть доступ из внутренней сети к внешнему серверу посредством OpenVPN. Т.е. мне необходимо получить доступ с внешнего сервера к ресурсам внутренней сети.
Конфиг openvpn на внешнем CentOS-сервере:
dev tun
port 1194
proto udp
mode server
tls-server
server 192.168.255.0 255.255.255.0
push "route 192.168.255.0 255.255.255.0"
route 192.168.0.0 255.255.255.0 192.168.255.2
push "dhcp-option DNS 192.168.255.1"
client-config-dir /etc/openvpn/ccd
client-to-client
ifconfig-pool-persist addr_list
comp-lzo
tun-mtu 1500
keepalive 10 60
persist-key
persist-tun
cipher DES-EDE3-CBC
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
tls-auth /etc/openvpn/ta.key 0
status openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 4
Конфиг FreeBSD-роутера:
client
proto udp
dev tun
remote xx.xx.xx.xx 1194
comp-lzo
resolv-retry infinite
persist-tun
persist-key
ca /usr/local/etc/openvpn/ca.crt
cert /usr/local/etc/openvpn/freebsd-client.crt
key /usr/local/etc/openvpn/freebsd-client.key
dh /usr/local/etc/openvpn/dh1024.pem
tls-auth /usr/local/etc/openvpn/ta.key 1
tls-client
cipher DES-EDE3-CBC # Triple-DES
verb 4
route-method exe
route-delay 2
ping 100
ping-restart 200
Содержимое /etc/openvpn/ccd/freebsd-client:
push "route 192.168.255.0 255.255.255.0"
iroute 192.168.0.0 255.255.255.0
На FreeBSD:
/sbin/natd -n re0
/sbin/natd -n tun0 -p 8669
# ipfw show
00039 12203 876046 fwd 192.168.0.111,80 tcp from 192.168.0.0/24 to 192.168.0.111 dst-port 80
00040 322269 40046856 fwd 192.168.0.111,3128 tcp from 192.168.0.0/24 to any dst-port 80,433,8080
00050 2885463 1611968772 divert 8668 ip4 from any to any via re0
00060 5675 1094008 divert 8669 ip from any to any via tun0
00100 28440 2126360 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
65000 4241769 2426143908 allow ip from any to any
65535 1 78 deny ip from any to any
# netstat -nr -finet
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.1 UGS 22 3312575 re0
127.0.0.1 link#4 UH 0 56564 lo0
192.168.0.0/24 link#1 U 3 166750211 bge0
192.168.0.111 link#1 UHS 0 12 lo0
192.168.1.0/24 link#2 U 1 235840 re0
192.168.1.2 link#2 UHS 0 36 lo0
192.168.255.0/24 192.168.255.5 UGS 0 20 tun0
192.168.255.5 link#5 UH 0 0 tun0
192.168.255.6 link#5 UHS 0 0 lo0
На CentOS:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.255.2 * 255.255.255.255 UH 0 0 0 tun0
xx.xx.xx.0 * 255.255.255.0 U 0 0 0 eth0
xx.xx.yy.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 192.168.255.2 255.255.255.0 UG 0 0 0 tun0
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
192.168.255.0 192.168.255.2 255.255.255.0 UG 0 0 0 tun0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default xx.xx.xx.1 0.0.0.0 UG 0 0 0 eth0