Настройка Ubuntu Linux 16.04 в качестве маршрутизатора внутри виртуальной машины

Настройка Ubuntu Linux 16.04 в качестве маршрутизатора внутри виртуальной машины

(Перенесено из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

Связанный контент