Канал между linux и cisco (GRE) - всё руками
Добавлено: 07 окт 2014, 11:35
Предпосылки:
- Однажды мой домашний провайдер решил, что пользователей надо защищать, и закрыл 25 порт...
- Часто, в целях безопасности, доступ дают на конкретный IP, а у меня дома динамический адрес...
Задача:
Необходимо связать домашнюю сеть с сервером во вне.
Дано:
- Сервер в интернете под управлением Linux Ubuntu 3.13.0-24
- Домашняя сеть с выходом в интернет через Cisco 1841
Теория:
Самый простой свособ - это создать GRE туннель между 2мя устройствами.
Технология весьма проста, но имеет ряд минусов, а именно:
1) некоторые провайдеры режут GRE, а значит не везде заработает
2) трафик между точка не шифруется, а значит есть вероятность в вашу домашнюю сеть кто нить влезет
Итак, что же мы сделаем? Мы через интернет между 2мя интернетовскими IP
ДОМ (ХХХ.ХХХ.ХХХ.ХХХ)
и
LINUX (YYY.YYY.YYY.YYY)
поднимем туннель
ДОМ (192.168.0.2)
и
LINUX (192.168.0.1) Реализация:
На стороне cisco:
Где FastEthernet0/0 - это интерфейс который смотрит в интернет - то есть тот, что с интернетовским IP адресом.
На стороне linux:
В итоге на линуксе мы имеем
Начнём с малого - сделаем так, что бы сервер видел нашу домашнюю сеть. Циска сама умная, а вот сервер прийдётся пнуть - для того что бы он знал о нашей сети ему надо явно прописать маршрут до неё
Подведём итог этой части - мы сделали тунель между двумя подсетями и теперь можем обмениваться данными с сервером, как в своей локальной сети.
- Однажды мой домашний провайдер решил, что пользователей надо защищать, и закрыл 25 порт...
- Часто, в целях безопасности, доступ дают на конкретный IP, а у меня дома динамический адрес...
Задача:
Необходимо связать домашнюю сеть с сервером во вне.
Дано:
- Сервер в интернете под управлением Linux Ubuntu 3.13.0-24
- Домашняя сеть с выходом в интернет через Cisco 1841
Теория:
Самый простой свособ - это создать GRE туннель между 2мя устройствами.
Технология весьма проста, но имеет ряд минусов, а именно:
1) некоторые провайдеры режут GRE, а значит не везде заработает
2) трафик между точка не шифруется, а значит есть вероятность в вашу домашнюю сеть кто нить влезет
Итак, что же мы сделаем? Мы через интернет между 2мя интернетовскими IP
ДОМ (ХХХ.ХХХ.ХХХ.ХХХ)
и
LINUX (YYY.YYY.YYY.YYY)
поднимем туннель
ДОМ (192.168.0.2)
и
LINUX (192.168.0.1) Реализация:
На стороне cisco:
Код: Выделить всё
interface Tunnel0
ip address 192.168.0.2 255.255.255.0
ip mtu 1420
tunnel source FastEthernet0/0
tunnel destination YYY.YYY.YYY.YYY
На стороне linux:
Код: Выделить всё
root@vps:~# ip tunnel del gre1
root@vps:~# ip tunnel add gre1 mode gre local YYY.YYY.YYY.YYY remote ХХХ.ХХХ.ХХХ.ХХХ ttl 255
root@vps:~# ip link set gre1 up
root@vps:~# ip address add 192.168.0.1/24 dev gre1
Попробуем работоспособность тунеляgre1 Link encap:UNSPEC HWaddr BC-E2-8A-BB-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.0.1 P-t-P:192.168.0.1 Mask:255.255.255.0
inet6 addr: fe80::200:5efe:bce2:8abb/64 Scope:Link
UP POINTOPOINT RUNNING NOARP MTU:1476 Metric:1
RX packets:9 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:836 (836.0 B) TX bytes:1052 (1.0 KB)
Работает теперь надо прописать маршруты, поднять наты и всё такоеroot@vps:~# ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=255 time=59.2 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=255 time=58.5 ms
Начнём с малого - сделаем так, что бы сервер видел нашу домашнюю сеть. Циска сама умная, а вот сервер прийдётся пнуть - для того что бы он знал о нашей сети ему надо явно прописать маршрут до неё
Код: Выделить всё
root@vps:~# /sbin/route add -net 192.168.10.0 netmask 255.255.255.0 gre1