Просмотр Исходного

Смотреть рекомендуется в максимально доступном разрешении. (~1080px) - откройте видео на полный экран, play, шестерёнка \-> 1080hd.
\---\-{widget:url=https://www.youtube.com/watch?v=VZTQnRMzIAA}
----
Настройки сети следующие:


h2. Хост система

гипервизор libvirt + kvm:

Имеются два bridge:

br0 - мост, через который виртуалки ходят в интернет.

br1 - мост без доступа в сеть, "псевдолокалка".

h2. Carbon XGE Router 5

Имеет два интерфейса:

eth0 в br0, ip адрес - 10.90.140.70/16, он же - канал к вышестоящему провайдеру.

eth1 в br1, ip адрес - 192.168.70.1/24, он же - интерфейс для подключения абонентов.

h2. Carbon Billing 5

eth0 в br0, ip адрес - 10.90.140.71/16, он же - локальный интерфейс биллинга, через него он общается и с Carbon XGE Router 5.

h2. Пользователь

eth0 в br0, ip адрес только для подключения к нему по ssh - 10.70.140.222/16, без доступа в сеть.

eth1 в br1, ip адрес 192.168.70.3/24, шлюз - 192.168.70.1, то есть Carbon XGE Router 5.

В качестве DNS - публичные DNS гугла (8.8.8.8 / 8.8.4.4).

h1. Настройка связки


h2. XGE

В XGE Router нужно указать IP адрес биллинга в качестве:

* Radius сервера авторизации.
* Radius сервера аккаунтинга.
* CoA клиента.

!xge_set01.png|border=1!

* Коллектора для нетфлоу статистики.


!xge_set02.png|border=1!


После чего применить и сохранить изменения.

h2. Биллинг

В веб-интерфейсе биллинга

Добавляем XGE Router во вкладке оборудование > маршрутизаторы.

# создаём маршрутизатор, называем как-нибудь (не переусердствуйте со спецсимволами)
# прописываем его IP
# выбираем тип Carbon XGE Router 5.
# указываем скрипта для отправки команд xge_router.sh (в следующих версиях будет автоматически прописываться при выборе нужного типа).
!xge.png|border=1!
# включаем radius auth проверку для VPN по login, для ip+web дополнительно ставим ip.
# указываем пароли radius secret / user_psw / coa_pass аналогичные указанным в настройках XGE Router (смс настройки radius), я использовал пароль по умолчанию, в идеале стоит сменить.
# сохраняем.

h6. {info}Для того, чтобы на xge работала штатная синхронизация с биллингом, на биллинге необходимо добавить следующие правила (в примере 192.168.20.1 - адрес XGE, адрес 169.254.30.50 менять не нужно):
{info}
{code}
iptables -t nat -A asr_billing_prerouting -p tcp -s 192.168.20.1/32 --dport 3050 -j DNAT --to-destination 169.254.30.50:3050
iptables -A nas_clients -s 192.168.20.1/32 -p tcp -m tcp --dport 3050 -j ACCEPT
{code}
Так же эти правила необходимо добавить в [hooks|http://docs.carbonsoft.ru/x/PQAFAw]
Помимо этого необходимо на XGE в web интерфейсе - Настройки файрвола" и в пункте "IP адрес для перенаправления" указать ip адрес биллинга, который доступен с xge.

!xge_firewall.png|border=1!


Теперь абонент:
# Создаём абонента, 
# указываем ему какой-нибудь IP (в принципе можно было создать пул для динамической выдачи IP адреса).
# включаем галочку "разрешить переподключение".
# я на всякий случай поменял ему логин и пароль с автоматически сгенерированных на username/username.
# закидываем ему немного денег.
# ставим авторизацию по radius.
# пробуем подключиться.

h2. Пользователь

На Linux я воспользовался следующей командой:

{code}
sudo pppd nobsdcomp nodeflate defaultroute nomppe pty 'pptp 192.168.70.1 --nolaunchpppd' user username password username
{code}
через пару секунд смотрим вывод ip addr и ip route.





{code}
[root@centosuser ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:7f:0b:31 brd ff:ff:ff:ff:ff:ff
    inet 10.70.140.222/16 brd 10.70.255.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:13:0d:fa brd ff:ff:ff:ff:ff:ff
    inet 192.168.70.3/16 brd 192.168.255.255 scope global eth1
18: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UNKNOWN qlen 3
    link/ppp 
    inet 10.128.0.5 peer 10.128.0.1/32 scope global ppp0
[root@centosuser ~]# ip r
192.168.70.1 dev eth1  scope link  src 192.168.70.3 
10.128.0.1 dev ppp0  proto kernel  scope link  src 10.128.0.5 
10.70.0.0/16 dev eth0  proto kernel  scope link  src 10.70.140.222 
169.254.0.0/16 dev eth0  scope link  metric 1002 
169.254.0.0/16 dev eth1  scope link  metric 1003 
192.168.0.0/16 dev eth1  proto kernel  scope link  src 192.168.70.3 
default dev ppp0  scope link 
{code}вуаля, авторизация прошла успешно.

на всякий случай проверяем:

доступ в сеть:

{code}
[root@centosuser ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=48 time=51.8 ms

{code}
работающий dns

{code}
[root@centosuser ~]# ping ya.ru
PING ya.ru (93.158.134.3) 56(84) bytes of data.
64 bytes from www.yandex.ru (93.158.134.3): icmp_seq=1 ttl=55 time=27.8 ms
^C
--- ya.ru ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 365ms
rtt min/avg/max/mdev = 27.886/27.886/27.886/0.000 ms
{code}
что разрешён не только icmp:

{code}
wget ya.ru
{code}радуемся что всё замечательнейшим образом работает\!

h2. Примечания

Q: Почему не надо настраивать radius атрибуты?

A: Потому что и Carbon Billing 5 и Carbon XGE Router 5 - наши продукты, делать с ними в целях удобства мы можем что угодно (хо-хо), поэтому Radius атрибуты зашиты в тип маршрутизатора Carbon XGE Router.
По умолчанию отправляются команды:

{code}
ip forward_allow add Framed-IP-Address
ip snat add Framed-IP-Address $snat_ip
ip redirect $overlimit Framed-IP-Address
policy set Framed-IP-Address in $rate_in $ceil_in out $rate_out $ceil_out
{code}