(Перенесено изhttps://serverfault.com/questions/895250/setting-up-ubuntu-linux-16-04-as-a-router-with-a-vm)
Я хочу настроить виртуальную машину Ubuntu в качестве маршрутизатора, работающегоаткдпоэтому я могу проводить целевое тестирование одного устройства в различных сетевых условиях. Я заставил части работать, но застрял с тем, чтобы заставить шлюз маршрутизировать мои пакеты.
Суть того, что я попробовал:
- Создайте виртуальную машину Ubuntu 16.04 (
"router"
) на хосте Ubuntu 16.04 ("laptop"
) - Созданы две сетевые карты для виртуальной машины, обе подключены к единственному WiFi-адаптеру хоста.
- Установите первую сетевую карту (
enp0s3
) статически настроенной в качестве шлюза по адресу 192.168.0.199. - Настройте вторую сетевую карту (
enp0s8
) на автоматическую настройку через DHCP, например, по адресу 192.168.0.100. - Использовались следующие
iptables
правила (изздесьиздесь) наrouter
:iptables -t nat -A POSTROUTING -o enp0s8 -j MASQUERADE iptables -A FORWARD -i enp0s8 -o enp0s3 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i enp0s3 -o enp0s8 -j ACCEPT
- Тестируемое устройство/хост (
"test-device"
) настроено на статический IP-адрес 192.168.0.77, настроено на использование 192.168.0.199 в качестве шлюза.
На данный момент я могу подключиться к HTTP-серверу, работающему router
как по 192.168.0.199, так и по 192.168.0.100, с других машин в локальной сети, которые настроены на использование маршрутизатора Wi-Fi в качестве шлюза (192.168.0.1).
test-device
может пинговать хосты в Интернете, однако не может установить TCP-подключения к ним (например, curl www.google.com
выдает ошибку «Назначение недоступно»).
Вот еще несколько вещей, которыми стоит поделиться:
iptables
конфигурация на router
:
root# iptables -L -v
Chain INPUT (policy ACCEPT 12012 packets, 5058K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- enp0s8 enp0s3 anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT all -- enp0s3 enp0s8 anywhere anywhere
Chain OUTPUT (policy ACCEPT 3220 packets, 271K bytes)
pkts bytes target prot opt in out source destination
ip route
записи
root# ip route
default via 192.168.0.1 dev enp0s3 onlink
169.254.0.0/16 dev enp0s3 scope link metric 1000
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.199
192.168.0.0/24 dev enp0s8 proto kernel scope link src 192.168.0.121
Я не знаю, что делать дальше, и мне нужна помощь!
решение1
Тыне активировали IP-переадресациюв sysctl...
Квыполнять IP-маршрутизациюв Ubuntu Linux:
sudo nano sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
sudo sysctl -p