(에서 마이그레이션됨https://serverfault.com/questions/895250/setting-up-ubuntu-linux-16-04-as-a-router-within-a-vm)
Ubuntu VM을 실행 중인 라우터로 설정하고 싶습니다.atcd다양한 네트워크 조건에서 단일 장치에 대한 타겟 테스트를 수행할 수 있습니다. 부품이 작동하지만 게이트웨이가 패킷을 라우팅하도록 하는 데 문제가 있습니다.
내가 시도한 것의 요점은 다음과 같습니다.
"router"
Ubuntu 16.04 호스트( )에서 Ubuntu 16.04 VM("laptop"
) 생성- VM용으로 두 개의 NIC를 생성했으며 둘 다 호스트의 단일 WiFi 어댑터에 브리지되었습니다.
enp0s3
192.168.0.199에서 게이트웨이로 정적으로 구성할 첫 번째 NIC( )를 설정합니다.- 두 번째 NIC(
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를 게이트웨이로 사용하도록 구성되었습니다.
router
이 시점에서 Wi-Fi 라우터를 게이트웨이(192.168.0.1)로 사용하도록 구성된 LAN의 다른 컴퓨터에서 192.168.0.199와 192.168.0.100을 통해 실행되는 HTTP 서버에 연결할 수 있습니다 .
test-device
인터넷에서 호스트를 ping할 수 있지만 해당 호스트에 대한 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 라우팅 수행우분투 리눅스에서:
sudo nano sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
sudo sysctl -p