무선 핫스팟을 실행하는 Linux 장치가 있습니다.
my laptop (LAN only: 192.168.1.100)
|
LAN
|
wireless hotspot laptop (LAN: 192.168.1.101, wireless hotspot: 10.42.0.1, VMs: 10.254.2.x)
|
wireless printer (wifi: 10.42.0.67)
내 노트북에서는 LAN IP(192.168.1.101)를 사용하여 무선 핫스팟 노트북에 ping/연결할 수 있습니다.
내 노트북에 다음 경로를 추가한 후 무선 핫스팟 IP(10.42.0.1)에 핑/연결할 수도 있었습니다.
ip route add to 10.42.0.0/24 via 192.168.1.101
다음 라우팅 규칙을 추가하면 랩톱의 VM에 핑/연결할 수도 있습니다.
ip route add to 10.254.2.0/24 via 192.168.1.101
그러나 무선 네트워크(10.42.0.0/24) 내의 모든 장치에 대한 핑/연결 - 주사위가 없어 "대상 포트에 연결할 수 없음"이 표시됩니다.
# ping 10.42.0.67
PING 10.42.0.67 (10.42.0.67) 56(84) bytes of data.
From 192.168.1.101 icmp_seq=1 Destination Port Unreachable
From 192.168.1.101 icmp_seq=2 Destination Port Unreachable
^C
--- 10.42.0.67 ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1001ms
무선 핫스팟 노트북에 다음 MASQUERADE 규칙을 추가하면 노트북이 8.8.8.8과 통신할 수 있습니다.
iptables -t nat -A POSTROUTING -s 192.168.1.100 -j MASQUERADE
무선 핫스팟 노트북의 tcpdump는 내 노트북에서 8.8.8.8로의 트래픽이 이를 통과하고 있음을 보여줍니다.
# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=44.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=46.9 ms
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 44.425/45.668/46.912/1.243 ms
여전히 10.42.0.67(무선 핫스팟 뒤의 무선 프린터)에 연결 - 주사위 없음(아래는 무선 핫스팟의 tcpdump입니다):
01:25:20.901823 enp1s0 In IP (tos 0x0, ttl 64, id 37541, offset 0, flags [DF], proto ICMP (1), length 84)
192.168.1.100 > 10.42.0.67: ICMP echo request, id 216, seq 16, length 64
01:25:20.902038 enp1s0 Out IP (tos 0xc0, ttl 64, id 11555, offset 0, flags [none], proto ICMP (1), length 112)
192.168.1.101 > 192.168.1.100: ICMP 10.42.0.67 protocol 1 port 12067 unreachable, length 92
IP (tos 0x0, ttl 63, id 37541, offset 0, flags [DF], proto ICMP (1), length 84)
192.168.1.100 > 10.42.0.67: ICMP echo request, id 216, seq 16, length 64
Linux가 라우팅하거나 NAT를 원하지 않는 Wi-Fi에 특별한 것이 있습니까?
현재 nftables 규칙은 다음과 같습니다. lxd
일부는 nm-shared-wlp2s0
무선 핫스팟과 관련되어 있으며 iptables 규칙은 없습니다(위 예에서는 MASQUERADE가 없습니다).
table inet lxd {
chain pstrt.lxdbr0 {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 10.254.2.0/24 ip daddr != 10.254.2.0/24 masquerade
}
chain fwd.lxdbr0 {
type filter hook forward priority filter; policy accept;
ip version 4 oifname "lxdbr0" accept
ip version 4 iifname "lxdbr0" accept
}
chain in.lxdbr0 {
type filter hook input priority filter; policy accept;
iifname "lxdbr0" tcp dport 53 accept
iifname "lxdbr0" udp dport 53 accept
iifname "lxdbr0" icmp type { destination-unreachable, time-exceeded, parameter-problem } accept
iifname "lxdbr0" udp dport 67 accept
}
chain out.lxdbr0 {
type filter hook output priority filter; policy accept;
oifname "lxdbr0" tcp sport 53 accept
oifname "lxdbr0" udp sport 53 accept
oifname "lxdbr0" icmp type { destination-unreachable, time-exceeded, parameter-problem } accept
oifname "lxdbr0" udp sport 67 accept
}
}
table ip nm-shared-wlp2s0 {
chain nat_postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 10.42.0.0/24 ip daddr != 10.42.0.0/24 masquerade
}
chain filter_forward {
type filter hook forward priority filter; policy accept;
ip daddr 10.42.0.0/24 oifname "wlp2s0" ct state { established, related } accept
ip saddr 10.42.0.0/24 iifname "wlp2s0" accept
iifname "wlp2s0" oifname "wlp2s0" accept
iifname "wlp2s0" reject
oifname "wlp2s0" reject
}
}
답변1
이름으로 판단하면 시스템에는 방화벽 규칙을 적용하는 두 가지 도구가 있습니다. LXD(방해하지 않음: 아무것도 삭제되거나 거부되지 않음)와 선택한 이름에서 알아내야 하는 또 다른 도구인 table 입니다 nm-shared-wlp2s0
.
이것이 어떤 도구인지 파악하고 다른 LAN에서 프린터 네트워크에 액세스할 수 있도록 예외를 추가하도록 도구를 구성해야 합니다.
한편, 이에 상응하는 많은 옵션 중에서 이 작업을 수동으로 수행할 수도 있습니다. 예를 들어, 다른 LAN에서 이 LAN으로 들어오는 패킷을 활성화하려면 다음을 수행하십시오.
nft insert rule nm-shared-wlp2s0 filter_forward ip saddr 192.168.1.0/24 ip daddr 10.42.0.0/24 oifname "wlp2s0" ct state new accept
도구가 방화벽 규칙을 재구성할 때마다 이 작업을 수행해야 합니다(규칙이 "적극적으로" 삭제되지는 않기를 바랍니다).
또한 테이블(및 이를 생성한 도구)은 잘못된 패킷을 거부하기 전에 삭제하는 모범 사례를 따르지 않습니다. 잘못된 패킷을 거부(삭제하는 대신)하면 문제가 발생할 수 있으며, 특히 패킷 순서가 변경되면 문제가 발생할 수 있습니다. 이 인용문 뒤의 설명을 참조하세요.iptables(그러나 그것은 또한 영향을 미친다.nftables)세부:
경고: 연결 상태가 INVALID로 분류된 패킷에 REJECT 대상을 무분별하게 적용해서는 안 되며, 대신 이를 제거해야 합니다.
(선택 사항) 이전 명령 뒤에 다음도 추가해야 합니다.
nft insert rule nm-shared-wlp2s0 filter_forward index 2 ct state invalid drop
패킷이 재정렬될 때 발생할 수 있는 트래픽 중단을 방지하기 위해(Wi-Fi로 인해 발생할 수 있음)
테이블마다 있으니 참고하세요nftables패킷에 영향을 줄 수 있는 걸림 현상이 발생할 수 있는 기회를 제공합니다. 패킷이 테이블의 링크에 의해 승인되더라도 동일한 위치에 연결된 다른 체인으로 계속 삭제될 수 있습니다. 다음은 Netfilter의 필터/전달에 연결된 두 개의 링크입니다. inet lxd fwd.lxdbr0
및 ip nm-shared-wlp2s0 filter_forward
: 각 링크에는 패킷을 삭제할 기회가 있습니다.