Linux

從一個 VLAN 訪問 WAN

  • October 24, 2012

我想VLAN為 3 個來賓虛擬機創建一個。我已經有了它,每個虛擬機都可以ping互相使用,但問題是任何客人都無法訪問網際網路

主機中的網路配置

# /etc/network/interfaces
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
   address 188.165.x.x            <------ Internet's public ip
   netmask 255.255.255.0
   network 188.165.255.0
   broadcast 188.165.255.255
   gateway 188.165.y.y            <------- Internet's public gateway
   bridge_ports eth0
   bridge_fd 0
   bridge_stp on

auto eth0.3
iface eth0.3 inet manual
       mtu 1500
       vlan_raw_device eth0

auto vlan3
iface vlan3 inet static
       bridge_ports eth0.3
       bridge_maxwait 0
       bridge_stp off
       address 172.69.0.1
       netmask 255.255.255.0
       network 172.69.0.0
       broadcast 172.69.0.255

主機中的路由列表route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.69.0.0      0.0.0.0         255.255.255.0   U     0      0        0 vlan3
188.165.255.0   0.0.0.0         255.255.255.0   U     0      0        0 br0
0.0.0.0         188.165.y.y 0.0.0.0         UG    0      0        0 br0

brctl show主機

bridge name bridge id       STP enabled interfaces
br0     8000.e840f20acc28   yes     eth0
                           tap10.0
                           vif10.0
                           vif7.0
vlan3   8000.e840f20acc28   no      eth0.3
                                   log01

Ping 客人 -> 主機工作

PING 172.69.0.1 (172.69.0.1) 56(84) bytes of data.
64 bytes from 172.69.0.1: icmp_req=1 ttl=64 time=0.155 ms
64 bytes from 172.69.0.1: icmp_req=2 ttl=64 time=0.100 ms

Traceroute 到例如 Google 的 DNS ip

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1  172.69.0.1 (172.69.0.1)  0.198 ms  0.237 ms  0.209 ms
2  * * *

如您所見,它在主機 ip(網關)中死亡。

我不知道我做錯了什麼

您需要通過將 /proc/sys/net/ipv4/ip_forward 更改為 1 來啟用 IP 轉發。

您還需要對虛擬機應用 iptables-rule 進行 NAT。(這應該在主機上應用)

iptables -t nat -A POSTROUTING -o <your external interface on the Host> -j MASQUERADE

引用自:https://serverfault.com/questions/441942