특별한 소프트웨어를 설치하지 않고도 모든 장치에서 VPN에 연결할 수 있도록 홈 서버를 OpenVPN 게이트웨이로 설정하려고 합니다. 내 서버에서 Ubuntu 14.04를 실행 중입니다.
호스트에는 3개의 인터페이스가 있습니다.
- eth0 - IP 주소 10.0.1.253은 게이트웨이가 아닌 내부 NAT 네트워크에 있습니다(게이트웨이는 인터넷 연결을 제공하는 10.0.1.1입니다).
- wlan0 - VPN을 통해 제공하려는 무선 LAN의 소유자/게이트웨이인 IP 주소 10.0.2.1입니다. Hostapd 및 isc-dhcp-server는 이 인터페이스에서 클라이언트를 관리하는 데 사용됩니다.
- tun0 - IP 주소 10.8.8.86, 이는 VPN 연결입니다.
"정상적인" 인터넷 액세스를 허용하려는 서버에서 실행 중인 일부 프로세스가 있기 때문에 서버의 기본 경로를 VPN으로 변경하는 것을 원하지 않습니다.
다음 명령을 사용하여 VPN 네트워크의 기본 경로를 설정했습니다(표시된 모든 명령은 sudo를 통해 루트로 실행됩니다).
echo "201 vpn" >> /etc/iproute2/rt_tables
ip rule add fwmark 1 table vpn
ip route add default via 10.8.8.86 table vpn
ip route flush cache
그리고 다음과 같이 위장합니다:
echo 1 | tee /proc/sys/net/ipv4/ip_forward
iptables -A PREROUTING -i wlan0 -t mangle \! -d 10.0.1.0/24 -j MARK --set-mark 1
iptables -t nat -A POSTROUTING -s 10.0.2.0/24 \! -d 10.0.1.0/24 -o tun0 -j MASQUERADE
나도 추가해봤는데
iptables -A FORWARD -i tun0 -j ACCEPT
그러나 이것은 아무런 차이가 없는 것 같습니다.
내가 본 것은 트래픽이 tun0 장치로 라우팅되고 올바르게 위장되었지만 반환 메시지가 사라지고 wlan0 요청으로 다시 라우팅되지 않는다는 것입니다.
예제를 첨부하여 문제를 찾기 위해 tcpdump를 실행했습니다. 이는 wlan0 네트워크의 장치에서 웹 사이트를 요청할 때 발생합니다.
wlan0 쪽:
tcpdump -n -i wlan0 not port mdns
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
17:54:18.703395 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)
17:54:19.706732 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)
17:54:22.714178 IP 10.0.2.2.53203 > 8.8.4.4.53: 46870+ A? www.whatismyip.com. (36)
17:54:23.717681 IP 10.0.2.2.53203 > 8.8.4.4.53: 46870+ A? www.whatismyip.com. (36)
17:54:26.725358 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)
17:54:32.081146 ARP, Request who-has 10.0.2.1 tell 10.0.2.2, length 28
17:54:32.081192 ARP, Reply 10.0.2.1 is-at 80:1f:02:49:47:a0, length 28
17:54:35.744061 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)
DNS 요청이 표시되지만 응답이 없습니다.
tun0 측에서:
tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
17:54:18.703494 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:19.011244 IP resolver1.opendns.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.15, A 141.101.120.14 (68)
17:54:19.706815 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:20.009089 IP resolver1.opendns.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.14, A 141.101.120.15 (68)
17:54:22.714279 IP 10.8.8.86.53203 > google-public-dns-b.google.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:23.075728 IP google-public-dns-b.google.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.15, A 141.101.120.14 (68)
17:54:23.717755 IP 10.8.8.86.53203 > google-public-dns-b.google.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:24.059747 IP google-public-dns-b.google.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.15, A 141.101.120.14 (68)
17:54:26.725404 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:35.744099 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:36.046371 IP resolver1.opendns.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.14, A 141.101.120.15 (68)
이는 VPN 연결에서 DNS 응답이 반환되었음을 나타냅니다.
내가 놓친 것에 대한 제안이 있습니까?