Назад | Перейти на главную страницу

Linux как шлюз (без NAT)

Я пытаюсь настроить Linux-сервер как шлюз / маршрутизатор, но не могу заставить его работать, и вся информация, которую мне удалось найти, связана с NAT.

У меня есть общедоступный IP-блок для шлюза и устройств за ним, поэтому я хочу, чтобы шлюз просто перенаправлял пакеты в Интернет - опять же: без NAT!

Мне удалось получить шлюз для успешного доступа в Интернет (это было всего лишь вопросом настройки IP и GW), и компьютеры, стоящие за ним, могут связываться с ним.

[РЕДАКТИРОВАТЬ: подробнее]

Фактически это блок IPv6 (2800:40:403::0/48) (но я обнаружил, что большинство утилит и инструкций можно легко адаптировать с IPv4 на IPv6 без особых усилий).

На сервере тоже есть порты:

Один из компьютеров позади него подключен к нему через переключатель;

Интерфейс WAN на сервере может без проблем ping6 www.google.com. Интерфейс локальной сети на сервере и клиенте может без проблем взаимно пинговать друг друга (а также SSH и т. Д.).

Я попытался установить сервер в качестве шлюза по умолчанию для клиента, но безуспешно:

client # route -A inet6 add default gw 2800:40:403::3 dev eth1

server # cat /proc/sys/net/ipv6/conf/all/forwarding 
1

Мне не нужны никакие фильтры / брандмауэры и т. Д., Просто маршрутизация.

Спасибо.

Включена ли пересылка?

echo 1 >  /proc/sys/net/ipv4/ip_forward

Я предполагаю, что у вас есть один общедоступный IP-адрес для вашей стороны WAN и блок для стороны LAN, примерно так:

ISP-----ROUTER ETH0/ROUTER ETH1------SWITCH------PCs

Вам НЕОБХОДИМО иметь общедоступный IP-адрес для интерфейса WAN, интернет-провайдер будет маршрутизировать подсеть, которую они вам предоставили, через этот IP-адрес.

Просто вам нужно установить бит пересылки на 1

echo 1 > /proc/sys/net/ipv4/ip_forward

Чтобы сделать его постоянным, вам нужно отредактировать /etc/sysctl.conf, найти эту строку:

net.ipv4.ip_forward=0

и измените его на

net.ipv4.ip_forward=1

Не забудьте раскомментировать его, если он прокомментирован.

Теперь все, что вам нужно сделать, это настроить шлюз вашего компьютера по умолчанию так, чтобы он указывал на маршрутизатор Linux, и предполагая, что интернет-провайдер выполнил свою работу, направив блок через общедоступный IP-адрес для вашей локальной сети.

Сейчас. Если все, что у вас есть, это блок общедоступных адресов ... вы не изучаете маршрутизацию, просто подключите ISP к коммутатору, а все ПК к коммутатору, и это должно быть сделано. Если вы укажете более подробную информацию, мы сможем вам больше помочь.


Редактировать:

Вы говорите, что ваши интерфейсы настроены следующим образом:

wan: 2800:40:403::1/48
lan: 2800:40:403::3/48

Какой у вас шлюз по умолчанию? Я думаю, 2800: 40: 403 :: 2/48

Это не должно так работать. Я еще не работал с IPv6, но у вас есть два интерфейса в одной подсети, я думаю, я позволю вам настроить это, но скажу, что маршрутизатор Cisco по крайней мере предупредит вас о перекрытии

Самое простое решение - все ПК подключены к коммутатору, подключенному к провайдеру.

Реальное решение - попросить интернет-провайдера предоставить вам 1 публичный адрес в своем адресном пространстве для WAN и направить блок через этот адрес. Затем все, что вам нужно сделать, это настроить:

wan: ip-from-their-space
lan: 2800:40:403::1/48

И все локальные ПК должны указывать на него по умолчанию.

У вас очень большое адресное пространство, что вы можете сделать, это разбить его на подсети.


Редактировать:

Если вы действительно хотите соединить интерфейсы, вы можете сделать это без каких-либо привязок к IP. Таким образом, у вас будет только один интерфейс с IP-адресом.

Все, что вам нужно сделать, это установить bridge-utils, а затем настроить его следующим образом:

ip add flush dev eth0
ip add flush dev eth1
brctl addbr br0
brctl addif br0 eth0 eth1
ip link set dev br0 up

Затем настройте свой IPv6-адрес на br0, и теперь у вас есть прозрачный мост. Это все еще не решает вашу проблему с IPv4, но вы можете решить ее следующим образом:

Настройте публичный и частный адрес IPv4 на br0 и NAT следующим образом:

iptables -t nat -A ПОСТРОУТИРОВАНИЕ -j SNAT -s / --to-source