설정:
- DHCP(isc-dhcp-server) 및 DNS(bind9) 서버(라우터 역할)로 설정된 서버가 있습니다.
- eth0 장치를 사용하여 pppoe(ppp0)를 통해 인터넷에 연결합니다.
- eth1은 액세스 포인트 역할을 하는 라우터에 연결됩니다.
- 액세스 포인트를 통해 클라이언트는 이더넷이나 WiFi를 통해 연결할 수 있습니다.
- 여기에 정의된 iptables를 사용하여 eth1에서 ppp0으로 트래픽을 전달합니다(인터넷 장치와 일치하도록 일부 수정).https://killtacknine.com/building-an-ubuntu-16-04-router-part-3-firewalls/.
- IPV6도 같은 방식으로 설정됩니다.
- ufw는 "어디서나 192.168.1.0/24 허용" 규칙을 통해서도 활성화됩니다.
- 서버는 또한 ppp0을 통해 VPN(PPTP)에 연결하고 연결되면 장치 이름으로 ppp1을 얻습니다.
내가 원하는 것은 eth1 장치를 통해 ppp1을 통해 VPN에 연결된 특정 클라이언트의 인터넷 트래픽(IP 또는 MAC 주소 기반)을 전달하는 것입니다.
다음 규칙을 사용하여 iptables 설정을 시도했습니다.
iptables -A INPUT -i ppp1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -s 192.168.1.113 -o ppp1 -j ACCEPT
iptables -A FORWARD -i ppp1 -o eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE
하지만 작동하지 않는 것 같습니다. 제가 무엇을 놓치고 있는지 모르겠습니다. iptables에 대한 지식이 거의 0입니다.
답변1
1) AP가 eth1을 통해 연결되어 있는지 확인하십시오.다리자체 이더넷 인터페이스를 WLAN 인터페이스에 연결하십시오. 그렇지 않으면 DHCP는 쓸모가 없으며 NAT(많은 홈 라우터의 기본값)를 수행하는 경우 클라이언트의 IP 주소를 볼 수 없습니다.
2) 라우팅을 수행할 필요가 없습니다 iptables
(나의 사소한 불만입니다. 어떤 이유로 인터넷의 많은 사람들은 라우팅에 방화벽 규칙이 필요하다고 생각합니다...). 특히, NAT를 수행할 필요가 없습니다(VPN이 어떤 이유로 요구하지 않는 한, 질문에 이를 결정하는 정보가 없습니다).
네가 원한다면노선데이터 팩~에서당신에게 필요한 특정 고객정책 라우팅(구글에 많은 튜토리얼이 있습니다). 기본적으로는 그렇습니다.
ip rule add from <source address> lookup <table name>
그런 다음 경로(귀하의 경우) ppp1
및 이와 연결된 게이트웨이를 정의하는 테이블을 추가합니다.
ip route get <dest address>
운영 체제가 패킷이 어디로 가야 한다고 생각하는지 알려줄 것입니다. 방화벽 규칙을 디버깅하는 것보다 훨씬 쉽습니다.
3) wireshark
(또는 tcpdump
별도의 창에서 관심 있는 각 네트워크 인터페이스에 대해 하나씩)을 사용하여 모든 것을 디버깅합니다. 어떤 패킷이 어떤 주소를 사용하여 어디로 가는지 실제로 확인하지 않고서는 무엇이 잘못되었는지 알기가 어렵습니다.