refactor: 문서 개선 중
This commit is contained in:
+26
@@ -0,0 +1,26 @@
|
||||
digraph techviz {
|
||||
graph [rankdir=LR, splines=ortho, nodesep=0.55, ranksep=0.85];
|
||||
node [fontname=Helvetica, fontsize=11, margin="0.18,0.12", style="rounded,filled", fillcolor=white, color="#2d4357", penwidth=1.5];
|
||||
edge [fontname=Helvetica, fontsize=10, color="#364b5f", penwidth=1.4, arrowsize=0.75];
|
||||
subgraph cluster_0 {
|
||||
label="forward · priority filter - 10";
|
||||
style="rounded,dashed";
|
||||
color="#66788a";
|
||||
n1 [label="ct state new accept", shape=box, style="rounded,filled"];
|
||||
}
|
||||
subgraph cluster_1 {
|
||||
label="ip libvirt_network · guest_input";
|
||||
style="rounded,dashed";
|
||||
color="#66788a";
|
||||
n2 [label="inserted accept", shape=box, style="rounded,filled"];
|
||||
n3 [label="reject", shape=box, style="rounded,filled"];
|
||||
}
|
||||
n0 [label="inbound packet", shape=box, style="rounded,filled"];
|
||||
n4 [label="edge nginx", shape=box, style="rounded,filled"];
|
||||
n5 [label="connection refused", shape=box, style="rounded,filled"];
|
||||
n0 -> n1 [label="forward hook", style=solid];
|
||||
n1 -> n2 [label="after insert", style=solid];
|
||||
n1 -> n3 [label="before insert", style=solid];
|
||||
n2 -> n4 [label="accept", style=solid];
|
||||
n3 -> n5 [label="reject", style=solid];
|
||||
}
|
||||
+15
-4
@@ -2,10 +2,10 @@
|
||||
"harness_version": "0.2.0",
|
||||
"spec_id": "nftables-forward-hook-chain-order",
|
||||
"spec_version": "1.1",
|
||||
"spec_sha256": "7c412e3a6278b75551ce56f35693dd236d0b3bf0962c2788a87703123f009f9f",
|
||||
"spec_sha256": "a035a69d70e850cb32cb89258e9912fdcd4533a8d312be789b040a12b51b1225",
|
||||
"source_context": {
|
||||
"document": "docs/virtualization/final/document.md",
|
||||
"document_sha256": "60d902c7aed218ba637b48603a3bd0e6b193fea59c9de97ffdb8e05d5087aedd",
|
||||
"document_sha256": "8c4ecc64c8cea9a4450ed7131fdd9cb2048dc092b66cd969f6346ed77887c210",
|
||||
"anchor": {
|
||||
"kind": "heading",
|
||||
"value": "180. nftables 는 앞 체인의 `accept` 로 뒤 체인의 `reject` 를 막지 못한다",
|
||||
@@ -14,9 +14,10 @@
|
||||
},
|
||||
"outputs": [
|
||||
"nftables-forward-hook-chain-order.svg",
|
||||
"nftables-forward-hook-chain-order.drawio",
|
||||
"nftables-forward-hook-chain-order.mmd",
|
||||
"nftables-forward-hook-chain-order.d2",
|
||||
"nftables-forward-hook-chain-order.dot",
|
||||
"nftables-forward-hook-chain-order.drawio",
|
||||
"nftables-forward-hook-chain-order.excalidraw",
|
||||
"nftables-forward-hook-chain-order.alt.md"
|
||||
],
|
||||
@@ -27,5 +28,15 @@
|
||||
"reference_ids": [
|
||||
"payment-event-flow"
|
||||
],
|
||||
"diagram_only": true
|
||||
"diagram_only": true,
|
||||
"source_spec_file_sha256": "6ced898c845eb65e6dccc403fcadfbf82d3805f7fe089c75241132621201298e",
|
||||
"output_sha256": {
|
||||
"nftables-forward-hook-chain-order.svg": "f5cf1414171d34677a6e2e430b4269a8687a5968f50488f2257ddc3d3be808db",
|
||||
"nftables-forward-hook-chain-order.mmd": "a523ee8885b46bc40937b8992f9ebf65d273eaf378f980af1026bbf2cda84e83",
|
||||
"nftables-forward-hook-chain-order.d2": "117662bdc7955bb01ceb6a36136ee2d5d6da727301b5c0f2c24c75fc71454c87",
|
||||
"nftables-forward-hook-chain-order.dot": "e71e3d8dc4a0e7417e4ef8514b79ec52099609c50bf895d31888e3ed4add8166",
|
||||
"nftables-forward-hook-chain-order.drawio": "9a60b8116a117e18d83eb6ba78048f3400578dd62adb3247aa88f3d5bffb0e98",
|
||||
"nftables-forward-hook-chain-order.excalidraw": "efa24031fb83393e57aeebd824f3e839c97c5b55f61ae1922c6933a4f1e709b7",
|
||||
"nftables-forward-hook-chain-order.alt.md": "aa81f31c4403feadabb90846086ab5f29b821fd82712fcb275d8e8c0b92e17b2"
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1298" height="434" viewBox="0 0 1298 434" role="img" aria-labelledby="diagram-title diagram-description">
|
||||
<title id="diagram-title">같은 forward 훅에 붙은 base 체인 둘이 우선순위 순으로 이어서 평가되고, 앞 체인의 accept 는 뒤 체인의 reject 를 막지 못한다</title>
|
||||
<desc id="diagram-description">왼쪽에서 오른쪽으로 읽는다. 왼쪽 끝이 밖에서 친 curl 이 만든 inbound packet 이고 forward 훅으로 들어간다. 첫 점선 상자가 DNAT 파일에 둔 base 체인이다. priority filter - 10 이라 먼저 돌고, 그 안의 ct state new accept 가 이 packet 을 통과시킨다. 다음 점선 상자가 libvirt 가 만든 ip libvirt_network 테이블의 guest_input 체인이다. 앞 체인의 accept 는 평가를 끝내지 않으므로 같은 packet 이 이 체인으로 이어진다. 그 안의 상자 둘은 같은 체인의 맨 앞과 맨 끝이다. 구멍을 넣기 전에는 맨 앞이 비어 있어 packet 이 ct state established,related accept 에 걸리지 못한 채 체인 끝 reject 에 닿았고 connection refused 로 끝났다. 그 reject 규칙의 카운터가 4 패킷 240 바이트다. insert 로 구멍을 넣으면 그 규칙이 맨 앞에 서서 같은 packet 을 먼저 받아 192.168.122.10 의 엣지 nginx 로 보낸다. 실선이 구멍을 넣은 뒤의 경로이고 점선이 넣기 전의 경로다. 이 그림은 그 규칙이 libvirt 네트워크를 다시 세우면 사라진다는 것은 말하지 않는다.</desc>
|
||||
<metadata>{"techviz":{"spec_version":"1.1","id":"nftables-forward-hook-chain-order","profile":"component-flow"},"source_context":{"document":"docs/virtualization/final/document.md","document_sha256":"60d902c7aed218ba637b48603a3bd0e6b193fea59c9de97ffdb8e05d5087aedd","anchor":{"kind":"heading","value":"180. nftables 는 앞 체인의 `accept` 로 뒤 체인의 `reject` 를 막지 못한다","line":7805}},"evidence_policy":"Each factual element cites source lines or is marked assumption.","diagram_only":true}</metadata>
|
||||
<metadata>{"techviz":{"spec_version":"1.1","id":"nftables-forward-hook-chain-order","profile":"component-flow"},"source_context":{"document":"docs/virtualization/final/document.md","document_sha256":"8c4ecc64c8cea9a4450ed7131fdd9cb2048dc092b66cd969f6346ed77887c210","anchor":{"kind":"heading","value":"180. nftables 는 앞 체인의 `accept` 로 뒤 체인의 `reject` 를 막지 못한다","line":7805}},"evidence_policy":"Each factual element cites source lines or is marked assumption.","diagram_only":true}</metadata>
|
||||
<defs>
|
||||
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" />
|
||||
|
||||
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
Reference in New Issue
Block a user