Милости прошу к нашему сервашу.
По долгу службы, да и на благо родины + ради саморазвития решил я изучить фряху и ее возможности роутинга.
Вот тривиальная задача - есть роутер на фре с двумя провайдерами, за которым через свитч подрублены 2 тачки (172.16.0.2 и 172.16.0.3)
На роутере есть 2 интернета - первый работает через дефолтный шлюз, у второго openvpn интерфейса (tap0) айпи адрес 10.0.0.2 и шлюз 10.0.0.1
Нужно чтоб первая клиентская тачка (172.16.0.2) ходила через первый инет (дефолтный шлюз), и вторая (172.16.0.3) через второй. При этом нужно чтоб машина с IP 172.16.0.3 могла заходить по ssh на роутер наш фряшный (172.16.0.1) и получать доступ к сервисам на нем (ssh, proxy etc).
Таки запилил, ничего сложного.
1) Пересобираем ядро ОС с нужными нам параметрами, устанавливаем, ребутаемся.
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=16
options DUMMYNET
options HZ="1000"
options IPFIREWALL_DEFAULT_TO_ACCEPT
2) Настраиваем сеть.
3) Настраиваем IPFW
Конфиг IPFW, его нужно разбить на 2 части и 1 часть исполнять после загрузки ос и поднятия интерфейса em0, вторую часть после загрузки и поднятия интерфейса tap0 (тама где двойка + последняя строка касается интерфейса tap0), последних 2 строки тоже исполнять после поднятия tap0
#!/bin/sh
/sbin/ipfw -q flush
/sbin/ipfw disable one_pass
/sbin/ipfw nat 1 config if em0 reset same_ports
/sbin/ipfw nat 2 config if tap0 reset same_ports
/sbin/ipfw add nat 1 ip from 172.16.0.2 to any out
/sbin/ipfw add nat 2 ip from 172.16.0.3 to any out via em0
/sbin/ipfw add nat 1 ip from not me to any in
/sbin/ipfw add nat 2 ip from not me to any in via tap0
/sbin/ipfw add fwd 10.0.0.1 ip from 172.16.0.3 to not me
поднимаем SOCKS5 прокси для второго провайдера (VPN)!!!
копируем /etc/ssh/sshd_config в /etc/ssh/sshd_config_fib1
редактируем конфиг sshd_config_fib1, задаем порт отличный от стандартного ssh (например 23), и listen 127.0.0.1
используя команду setfib, прокладываем маршрут по 1 шлюзу через tap0
setfib 1 route add default 10.0.0.1
По долгу службы, да и на благо родины + ради саморазвития решил я изучить фряху и ее возможности роутинга.
Вот тривиальная задача - есть роутер на фре с двумя провайдерами, за которым через свитч подрублены 2 тачки (172.16.0.2 и 172.16.0.3)
На роутере есть 2 интернета - первый работает через дефолтный шлюз, у второго openvpn интерфейса (tap0) айпи адрес 10.0.0.2 и шлюз 10.0.0.1
Нужно чтоб первая клиентская тачка (172.16.0.2) ходила через первый инет (дефолтный шлюз), и вторая (172.16.0.3) через второй. При этом нужно чтоб машина с IP 172.16.0.3 могла заходить по ssh на роутер наш фряшный (172.16.0.1) и получать доступ к сервисам на нем (ssh, proxy etc).
Таки запилил, ничего сложного.
1) Пересобираем ядро ОС с нужными нам параметрами, устанавливаем, ребутаемся.
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=16
options DUMMYNET
options HZ="1000"
options IPFIREWALL_DEFAULT_TO_ACCEPT
3) Настраиваем IPFW
Конфиг IPFW, его нужно разбить на 2 части и 1 часть исполнять после загрузки ос и поднятия интерфейса em0, вторую часть после загрузки и поднятия интерфейса tap0 (тама где двойка + последняя строка касается интерфейса tap0), последних 2 строки тоже исполнять после поднятия tap0
#!/bin/sh
/sbin/ipfw -q flush
/sbin/ipfw disable one_pass
/sbin/ipfw nat 1 config if em0 reset same_ports
/sbin/ipfw nat 2 config if tap0 reset same_ports
/sbin/ipfw add nat 1 ip from 172.16.0.2 to any out
/sbin/ipfw add nat 2 ip from 172.16.0.3 to any out via em0
/sbin/ipfw add nat 1 ip from not me to any in
/sbin/ipfw add nat 2 ip from not me to any in via tap0
/sbin/ipfw add fwd 10.0.0.1 ip from 172.16.0.3 to not me
и не забываем добавить в /etc/rc.conf
gateway_enable="YES" (врубаем форвардинг пакетов в ядре)
в /etc/sysctl.conf
net.inet.ip.fastforwarding=1 (врубаем быстрый фовардинг - будет пахать быстрее на 20-30%, но может побить фреймы IPSec, если он используется.
в /etc/sysctl.conf
net.inet.ip.fastforwarding=1 (врубаем быстрый фовардинг - будет пахать быстрее на 20-30%, но может побить фреймы IPSec, если он используется.
проверил на машинах 172.16.0.2 и 172.16.0.3 действительно первая ходит через первый инет вторая через второй
поднимаем SOCKS5 прокси для второго провайдера (VPN)!!!
копируем /etc/ssh/sshd_config в /etc/ssh/sshd_config_fib1
редактируем конфиг sshd_config_fib1, задаем порт отличный от стандартного ssh (например 23), и listen 127.0.0.1
используя команду setfib, прокладываем маршрут по 1 шлюзу через tap0
setfib 1 route add default 10.0.0.1
запускаем после подключения к интерфейсу tap0
setfib 1 /usr/sbin/sshd -f /etc/ssh/sshd_config_fib1
и сопсно запускаем соксик:
nohup sshpass -p [пароль_рута] ssh -p 23 -N -D 192.168.0.250:1089 root@localhost &
можно создать отдельного юзера и от него запускать сокс
все, на интерфейсе 192.168.0.250 на 1089 появился соксик пятый который виден из локалки и пашет через 2 провайдера.
чтоб поднять сокс для 1 прова нужно просто выполнить
nohup sshpass -p [пароль_рута] ssh -p 22 -N -D 192.168.0.250:1090 root@localhost &
все, на интерфейсе 192.168.0.250 на 1089 появился соксик пятый который виден из локалки и пашет через 1 провайдера.
это если ssh дефолтный висит на 22 порту (а это как бы не круто, не забываем его перевесить на 2244 хотя бы).
Комментариев нет:
Отправить комментарий