
현재 가상 네트워크 인터페이스용 게이트웨이를 구성하는 데 몇 가지 문제가 있습니다.
내가 한 일은 다음과 같습니다.
가상 네트워크 인터페이스를 만들었습니다.
# brctl addbr lxc0
# brctl setfd lxc0 0
# ifconfig lxc0 192.168.0.1 promisc up
# route add -net default gw 192.168.0.1 lxc0
의 결과는 ifconfig
내가 원하는 것을 제공했습니다.
lxc0 Link encap:Ethernet HWaddr 22:4f:e4:40:89:bb
inet adr:192.168.0.1 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: fe80::88cf:d4ff:fe47:3b6b/64 Scope:Lien
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:623 errors:0 dropped:0 overruns:0 frame:0
TX packets:7412 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:50329 (49.1 KiB) TX bytes:335738 (327.8 KiB)
dnsmasq
DNS 서버(기본값 : 사용 192.168.1.1
)와 DHCP 서버를 제공하도록 구성했습니다 .
그런 다음 내 LXC 게스트는 다음과 같이 구성됩니다.
lxc.network.type=veth
lxc.network.link=lxc0
lxc.network.flags=up
모든 것이 완벽하게 작동하고 있으며 내 컨테이너에는 IP( 192.168.0.57
및 192.168.0.98
)가 있습니다. 컨테이너와 호스트에서 호스트와 컨테이너를 ping할 수 있습니다.
(host)# ping -c 3 192.168.0.114
PING 192.168.0.114 (192.168.0.114) 56(84) bytes of data.
64 bytes from 192.168.0.114: icmp_req=1 ttl=64 time=0.044 ms
64 bytes from 192.168.0.114: icmp_req=2 ttl=64 time=0.038 ms
64 bytes from 192.168.0.114: icmp_req=3 ttl=64 time=0.043 ms
--- 192.168.0.114 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.038/0.041/0.044/0.007 ms
(guest)# ping -c 3 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_req=1 ttl=64 time=0.048 ms
64 bytes from 192.168.0.1: icmp_req=2 ttl=64 time=0.042 ms
64 bytes from 192.168.0.1: icmp_req=3 ttl=64 time=0.042 ms
--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.042/0.044/0.048/0.003 ms
이제 호스트를 네트워크의 게이트웨이로 구성할 차례입니다 192.168.0.0/24
.
#!/bin/sh
# Clear rules
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -A FORWARD -i lxc0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o lxc0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
최종 테스트는 완전히 실패했습니다. 외부에 ping이 발생했습니다.
(guest)# ping -c 3 google.fr
PING google.fr (173.194.67.94) 56(84) bytes of data.
From 192.168.0.1: icmp_seq=3 Redirect Host(New nexthop: wi-in-f94.1e100.net (173.194.67.94))
From 192.168.0.1 icmp_seq=1 Destination Host Unreachable
From 192.168.0.1 icmp_seq=2 Destination Host Unreachable
From 192.168.0.1 icmp_seq=3 Destination Host Unreachable
--- google.fr ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2017ms
내가 뭔가를 놓쳤나요?
답변1
마침내 다음 iptables 규칙을 사용하여 작동하게 만들었습니다.
#!/bin/sh
# Clear rules
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
옵션이 -s src_net
누락되었습니다.