컨텍스트: Wi-Fi VPN 게이트웨이(Linux Ubuntu 컴퓨터)
- 원격 서버(www.example.com)와 클라이언트(Paul, Ubuntu Linux, 게이트웨이)만 있으면 됩니다.연결됨그리고
openVpn
. 서버를 통해 Paul은 인터넷을 검색할 수 있습니다.- Paul의 고객은 Wi-Fi AP를 통해 Paul의 연결을 Jack과 Sophie와 공유하려고 합니다.
질문:Jack & Sophie는 서버 홈페이지(www.example.com)만 탐색할 수 있습니다. domainname.com 서버 또는 IP를 참조하지 않는 다른 모든 요청(IP, ping, nslookup...)은 실패합니다(NO_INTERNET). 그러나 Paul은 원하는 것은 무엇이든 찾아볼 수 있었습니다.
알아채다:IP 전달은 1/활성화됨. VPN 없이 인터넷에 100% 액세스할 수 있습니다.
어떻게 해결할 수 있나요?
IPTABLES
유용하다면 서버
*filter
:INPUT ACCEPT [1623:213921]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [911:146048]
:acctboth - [0:0]
:cphulk - [0:0]
-A INPUT -j cphulk
-A INPUT -j acctboth
-A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT
-A INPUT -i tun+ -j ACCEPT
-A FORWARD -i tun+ -j ACCEPT
-A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -j acctboth
-A OUTPUT -o tun+ -j ACCEPT
-A acctboth -s 3.1.170.110/32 ! -i lo -p tcp -m tcp --dport 80
-A acctboth -d 3.1.170.110/32 ! -i lo -p tcp -m tcp --sport 80
-A acctboth -s 3.1.170.110/32 ! -i lo -p tcp -m tcp --dport 25
-A acctboth -d 3.1.170.110/32 ! -i lo -p tcp -m tcp --sport 25
-A acctboth -s 3.1.170.110/32 ! -i lo -p tcp -m tcp --dport 110
-A acctboth -d 3.1.170.110/32 ! -i lo -p tcp -m tcp --sport 110
-A acctboth -s 3.1.170.110/32 ! -i lo -p icmp
-A acctboth -d 3.1.170.110/32 ! -i lo -p icmp
-A acctboth -s 3.1.170.110/32 ! -i lo -p tcp
-A acctboth -d 3.1.170.110/32 ! -i lo -p tcp
-A acctboth -s 3.1.170.110/32 ! -i lo -p udp
-A acctboth -d 3.1.170.110/32 ! -i lo -p udp
-A acctboth -s 3.1.170.110/32 ! -i lo
-A acctboth -d 3.1.170.110/32 ! -i lo
-A acctboth -s 10.8.0.1/32 ! -i lo -p tcp -m tcp --dport 80
-A acctboth -d 10.8.0.1/32 ! -i lo -p tcp -m tcp --sport 80
-A acctboth -s 10.8.0.1/32 ! -i lo -p tcp -m tcp --dport 25
-A acctboth -d 10.8.0.1/32 ! -i lo -p tcp -m tcp --sport 25
-A acctboth -s 10.8.0.1/32 ! -i lo -p tcp -m tcp --dport 110
-A acctboth -d 10.8.0.1/32 ! -i lo -p tcp -m tcp --sport 110
-A acctboth -s 10.8.0.1/32 ! -i lo -p icmp
-A acctboth -d 10.8.0.1/32 ! -i lo -p icmp
-A acctboth -s 10.8.0.1/32 ! -i lo -p tcp
-A acctboth -d 10.8.0.1/32 ! -i lo -p tcp
-A acctboth -s 10.8.0.1/32 ! -i lo -p udp
-A acctboth -d 10.8.0.1/32 ! -i lo -p udp
-A acctboth -s 10.8.0.1/32 ! -i lo
-A acctboth -d 10.8.0.1/32 ! -i lo
-A acctboth ! -i lo
-A cphulk -s 22.16.21.100/32 -m state --state NEW -m time --datestop 2015-09-16T18:53:55 --utc -j DROP
-A cphulk -s 0.0.0.0/32 -m state --state NEW -m time --datestop 2015-09-17T00:34:27 --utc -j DROP
-A cphulk -s 4.68.02.109/32 -m state --state NEW -m time --datestop 2015-09-17T01:44:56 --utc -j DROP
-A cphulk -s 9.1.218.145/32 -m state --state NEW -m time --datestop 2015-09-17T04:03:24 --utc -j DROP
-A cphulk -s 3.1.4.79/32 -m state --state NEW -m time --datestop 2015-09-17T11:21:00 --utc -j DROP
COMMIT
____VPN 사용 시 라우팅존재하다:
Destination Passerelle Genmask Indic Metric Ref Use Iface
default 10.8.0.77 128.0.0.0 UG 0 0 0 tun0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
10.8.0.1 10.8.0.77 255.255.255.255 UGH 0 0 0 tun0
10.8.0.77 * 255.255.255.255 UH 0 0 0 tun0
13.37.42.0 * 255.255.255.0 U 0 0 0 wlan0
ns350510.ip-37- 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
128.0.0.0 10.8.0.77 128.0.0.0 UG 0 0 0 tun0
link-local * 255.255.0.0 U 1000 0 0 eth0
192.168.0.0 * 255.255.254.0 U 0 0 0 eth0
___ 라우팅(VPN 사용 시)떠나다
Destination Passerelle Genmask Indic Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
13.37.42.0 * 255.255.255.0 U 0 0 0 wlan0
link-local * 255.255.0.0 U 1000 0 0 eth0
192.168.0.0 * 255.255.254.0 U 0 0 0 eth0
답변1
전달을 활성화할 수 있습니다.
echo 1 >/proc/sys/net/ipv4/conf/all/forwarding
또한 NAT/MASQUERADING과 마찬가지로 터널 IP(여기서는 10.0.0.0/8)가 비공개일 수 있습니다.
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE