Как решение, решил быстро поднять gre тунель между ними.
Сервер_1 (в 1 офисе), на слаке, подключен к инету через pppoe, выдается реальник X.X.X.X, а в локалку смотрит как 192.168.3.1/29
Сервер_2 (во 2 офисе), тоже на слаке, подключен к инету напрямую (на интерфейсе висит реальник Y.Y.Y.Y), в локалку смотрит как 192.168.0.1/28, но он стоит за сервером openbsd, т.е. на obsd висит реальник и за этот реальник проручена другая реальная сетка, в которой стоит Сервер_2
На сервере_1 gre поднимается вот так:
Код: Выделить всё
#!/bin/sh
#
# Start tunnel
#
tnl_name=tnl_office
remote_ip=Y.Y.Y.Y
local_ip=X.X.X.X
ip=192.168.3.1
remote_range=192.168.0.0/28
tunnel_start() {
insmod ip_gre
ip tunnel add $tnl_name mode gre remote $remote_ip local $local_ip ttl 255
ip addr add $ip dev $tnl_name
ip link set $tnl_name up
ip route add $remote_range dev $tnl_name
}
tunnel_stop() {
ip tunnel del $tnl_name
rmmod ip_gre
}
case "$1" in
'start')
tunnel_start
;;
'stop')
tunnel_stop
;;
*)
echo "usage $0 start|stop"
esac
На сервере_2 тунель поднимается аналогично:
Код: Выделить всё
#!/bin/sh
#
# Start tunnel
#
tnl_name=tnl_client
remote_ip=X.X.X.X
local_ip=Y.Y.Y.Y
ip=192.168.0.1
remote_range=192.168.3.0/29
tunnel_start() {
insmod ip_gre
ip tunnel add $tnl_name mode gre remote $remote_ip local $local_ip ttl 255
ip addr add $ip dev $tnl_name
ip link set $tnl_name up
ip route add $remote_range dev $tnl_name
}
tunnel_stop() {
ip tunnel del $tnl_name
rmmod ip_gre
}
case "$1" in
'start')
tunnel_start
;;
'stop')
tunnel_stop
;;
*)
echo "usage $0 start|stop"
esac
Поднимается все отлично, и тут возникает 1 проблема:
Через некоторое время, с сервера_1 не работает тунель (не пингуются удаленные машины и т.д.), как только с сервера_2 я даю пинг или любое другое обращение к тунелю - то все начинает нормально работать в оба конца. Иногда, такое происходит сразу после поднятия тунеля. В чем проблема - не пойму. Фаерволы отключал - не помогает, пробовал играться с mtu - успехов не принесло. Пока проблему решаю тем, что в crontab висит на выполнение кажд 10 мин пинг в сторону сервера_1. В чем может быть трабл?
Проблема 2 - это openbsd =)
Ну тут вся проблема в pf я так думаю, т.е. при поднятии pf, работает только пинг, остальное ничего
[root@mail /root]# uname -srm
OpenBSD 4.0 i386
[root@mail /root]# cat /etc/pf.conf
# $OpenBSD: pf.conf,v 1.31 2006/01/30 12:20:31 camield Exp $
#
#
# Interface
ext_if = "nfe0"
ext_ip = "Z.Z.Z.Z/32"
int_if = "rl0"
int_ip = "Y.Y.Y.G/32"
ns_ip = "Y.Y.Y.Y/32"
#
# My services for all
tcp_svc = "smtp domain pop3 pop3s"
udp_svc = "domain"
# NS services for all
tcp_ns = "domain pptp ftp 2000><2100"
udp_ns = "domain"
#
# Services not for all
table <allow_ssh> const {192.168.0.0/16}
#
# Spam daemon
table <spamd> persist
table <spamd-white> persist
table <spamd-whitelist> persist file "/etc/postfix/filters/whitelist.txt"
table <spamd-whitegroup> { }
scrub in
#no rdr inet proto tcp from <spamd-whitelist> to port smtp
#no rdr inet proto tcp from <spamd-whitegroup> to port smtp
#rdr pass on $ext_if proto tcp from <spamd> to port smtp -> 127.0.0.1 port spamd
#rdr pass on $ext_if proto tcp from !<spamd-white> to port smtp -> 127.0.0.1 port spamd
pass quick on { lo }
antispoof quick for { lo $ext_if }
block on $ext_if
block return-rst in on $ext_if proto tcp
#
# Outgoing policy for all
pass out on $ext_if inet proto icmp icmp-type echoreq code 0 keep state
pass out on $ext_if proto udp keep state
pass out on $ext_if proto tcp flags S/SA keep state
#
# Incoming policy not for all
pass in proto tcp from <allow_ssh> to any port ssh keep state
#
# Incoming policy for all to me
pass in on $ext_if inet proto icmp icmp-type echoreq code 0 keep state
pass in on $ext_if proto udp from any to self port { $udp_svc } keep state
pass in on $ext_if proto tcp from any to self port { $tcp_svc } flags S/SA keep state
#
# Incoming policy for all to NS
pass in on $ext_if proto udp from any to $ns_ip port { $udp_ns } keep state
pass in on $ext_if proto tcp from any to $ns_ip port { $tcp_ns } flags S/SA keep state
#
# GRE between Сlient and Office
pass proto gre from any to any
За pf - сильно не ругайте, с obsd знаком небольше месяца, только учусь.