Сетевой мост +nat на Ubuntu Maverick
У меня есть три машины Ubuntu Maverick и точка доступа. Я хочу иметь возможность настроить следующий сценарий:
Установка выглядит следующим образом:
- 192.168.0.1 - точка доступа
- 192.168.0.2 - беспроводное соединение на ноутбуке с точкой доступа
- 192.168.0.3 - это беспроводное соединение на компьютере 2 с точкой доступа
- 192.168.0.4 - проводное соединение компьютера 1 с компьютером 2
- 192.168.0.5 - проводное соединение на компьютере 2 с компьютером 1
- 123.45.67.89 - проводное соединение на компьютере 2 с Интернетом
- 123.1.1.1 - интернет-шлюз
На этой картинке я хочу сделать следующее:
- SSH с ноутбука на компьютер 1 (без необходимости сначала SSH к компьютеру 2)
- выход в интернет с компьютера 1 (предположительно через компьютер 2)
Я думал, что смогу соединить проводные и беспроводные соединения на компьютере 2, чтобы все интерфейсы 192.168.0.* Находились в одной подсети и были доступны друг для друга напрямую, но я играл с brctl (bridge-utils) и /etc/network/interfaces весь день и не заставили его работать.
Что касается доступа в Интернет с компьютера 1 через компьютер 2, я вполне уверен, что могу настроить NAT и переадресацию IP на компьютере 2 в соответствии с этими инструкциями (я делал это раньше.), Но я был озадачен мост и больше не рисковал.
1 ответ
Проблема, скорее всего, в том, что ваш беспроводной интерфейс на компьютере2 не поддерживает мостовые соединения. Вот объяснение того, что причины могут быть.
Это хорошо известная проблема, и во многих случаях Linux не может обеспечить решение (фактически, она вряд ли будет работать в Windows).
Однако есть и другие решения для этого. Они включают использование отдельных сегментов сети и некоторую маршрутизацию, но они дадут вам то, что вы хотите. По сути, вам нужно настроить компьютер2 в качестве маршрутизатора. Для правильной работы я бы рекомендовал использовать отдельные подсети в сегментах проводной и беспроводной сети.
РЕДАКТИРОВАТЬ: добавление подсетей на диаграмму выше, чтобы показать решение, а также сценарий запуска для настройки сети. Скрипт также позволяет интернет с компьютера 1 через NAT на компьютере 2.
#!/bin/bash
PATH=/usr/sbin:/sbin:/bin:/usr/bin
WAN=wlan0
WAN2=eth1
LAN=eth2
LANIP=192.168.0.5
ifconfig ${LAN} ${LANIP} netmask 255.255.255.254 up
iptables -F
iptables -t nat -F
iptables -A INPUT -i lo -j ACCEPT
iptables -I INPUT 1 -m state --state NEW -i ${LAN} -j ACCEPT
iptables -I INPUT 1 -m state --state NEW -i ${WAN} -j ACCEPT
iptables -A FORWARD -i ${WAN2} -o ${LAN} -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ${LAN} -o ${WAN} -j ACCEPT
iptables -A FORWARD -i ${WAN} -o ${LAN} -j ACCEPT
iptables -A FORWARD -i ${LAN} -o ${WAN2} -j ACCEPT
iptables -t nat -A POSTROUTING -o ${WAN2} -j MASQUERADE
iptables -A FORWARD -i ${WAN} -o ${WAN} -j REJECT
iptables -A FORWARD -i ${WAN2} -o ${WAN2} -j REJECT
for file in ${LAN} ${WAN} ${WAN2}; do
echo "1" > /proc/sys/net/ipv4/conf/${file}/proxy_arp
echo "1" > /proc/sys/net/ipv4/conf/${file}/forwarding
done
echo 1 > /proc/sys/net/ipv4/ip_forward