|
|
打开端口转发的功能
" ]) x% r7 y* S7 X3 X7 y6 o" X0 H2 x9 J6 [: R1 ~; t \
1,首先开启IP转发功能,默认是关闭的。
8 C: M( i& ~9 ~0 z
1 `7 y) K& w# F9 Z+ c临时修改:
4 O. j! M3 C' d3 h9 O4 M, @9 j+ Y. Y: L( j# [4 t
1
& ?* c; r, j& ^7 ~2 W8 x2 P$ k[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward- B9 Y; X4 s3 W! l
修改过后就马上生效,但如果系统重启后则又恢复为默认值0。
+ A* T3 E! U. g6 Q4 y1 s: D! t5 Z
永久修改:
5 x s s6 M2 L) v( e1 x6 k S4 [9 i. V( A0 }+ _
19 K! B7 Y9 K8 P& ?* k0 c: \* o
2
$ |) w; r( Y2 w4 a9 [3
# `* ^7 S6 j+ m3 `2 a) ~44 E, s1 y& s% r. E, L
5
! |! x6 d. Z; vvi /etc/sysctl.conf2 m5 H' R) g- A
$ |& X2 u0 a$ f% y! r# G5 P# W/ G# 找到下面的值并将0改成1,如果没有该配置,直接添加 I+ G% \- b, E8 I6 p2 t2 y# p
& A& A, m T, A, ?
net.ipv4.ip_forward = 1
: j4 I7 c) l9 t) s# sysctl -p(使之立即生效)
* f: A C$ K8 q# Q1 p
9 ?1 B$ H; J: J1 B2 f, ]5 K' k默认值0是禁止ip转发,修改为1即开启ip转发功能。
2 q- X- m9 D# \6 o
( v. E i$ G1 j* k
. g# R2 p2 I( W. s1 h0 g
& g( e, l- O- W; r0 j端口转发0 f, ~0 Y5 m$ f
1 F8 s' ~" W# ^' ]) s
假设用户访问本机(10.1.1.5)的3306端口时我想让它转发到10.1.1.1:3306
* A: c' H4 D% t) h: \5 D+ b+ l8 x- L
( r& s2 a) B7 `+ f/ w9 Q( L$ ^1
& z1 V) B& ?& m* C) o) k) X2 z2
o6 g5 r" J: G5 t( ?& e" M. [# o33 [2 b& i4 N! }5 m' U: S' o; N- }
4
# N1 p' I' H R( [4 ^3 s5* _5 }! Z! S: _; z4 L- j# h# ]* |
[root@mongo iptables]# cat iptables-open.sh0 @# w5 ~' n3 w1 c" B7 d
#!/bin/bash
" `: J8 x: u$ n: ?
5 ~3 h2 [5 g1 F" ?% Ziptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to 10.1.1.1:33063 [, K( `4 O/ S) F- u+ i) _4 [) ]
iptables -t nat -A POSTROUTING -p tcp -d 10.1.1.1 --dport 3306 -j MASQUERADE, v( f) u1 }4 v% R
W2 c: l: G5 B$ q; U) j: f+ w' y% Z# |7 q: _" v% R/ E* W
查看规则
; u& @1 @8 O* [' W, U4 g! H/ K9 H( B% R
查看当前iptables的nat表内的规则( ]$ Z; L F* Z3 R6 t/ r) U
$ b9 J& o$ W" [$ s9 R4 v( ?18 Z! f S+ q j6 V% \; U
iptables -t nat -nL --line
0 m. o/ r( ]4 P4 C' X命令解释:
$ G' p* T4 j; {) H1 M/ [
+ N/ j5 }3 J) Z5 o8 C5 r$ L. k18 @! ]* P, x0 D
2
+ \# W- \( `: |# k2 e( M( m3. [6 x5 ]8 M8 a7 k! H. d8 r
4
7 s' [7 p1 L( l9 B6 u5+ N- ~$ t! Q, j* F
-t nat指定看nat表,不用-t默认为filter表7 x% S+ D5 c. m) s6 b
-L 列出表内所有规则,可以指定特定链* R. N( M1 V% K$ f: E2 Q+ b
-n 使输出中的IP地址和端口以数值的形式显示/ p( _- i9 g& b$ R# p" s! P7 G* ?
-v 输出详细化7 J. |5 p' m2 G# |2 R
--line 显示出每条规则在相应链中的序号+ v; j. Y" d, j8 B
4 h- C, s2 q: _0 K) d( q0 X6 ~5 v
5 L ]8 d$ n G3 n$ ?
; h3 l4 B! {. A) `% ]
6 ]- {2 s1 U7 C8 d 删除规则, ^9 }1 O$ A: J4 H; b
: F' d. B Z9 T+ i) x; f
如果要删除PREROUTING规则,命令为# i5 s& \# a# I0 s9 b. i' v
# z3 n0 v( E; X. `- J
1
0 y1 `7 u% \- `/ X3 diptables -t nat -D PREROUTING 1 # 1 代表前面的规则序号- O2 y# W/ G# N4 d6 o( ] Q8 G& z
如果要删除POSTROUTING规则,命令为; @: \( w, i3 e
" u& ]) Z X& d B7 f w
1
6 M/ x5 e0 l4 z: |+ l1 Jiptables -t nat -D POSTROUTING 5 # 5 代表前面的规则序号
' k+ Y1 ` X, ?# L5 I m6 L0 A5 U命令解释+ ^3 p2 G9 Y3 }; j/ K& _) `1 H
- [3 X2 G, R( X& R6 f6 D$ a f( i; b
1
: a/ p5 v: K+ q# N2& p; k, D+ y; ^. q" A0 J& D) q
3- b( @4 F; Q7 L6 B; {$ C6 P
4
' V; `0 B; \; ^* d i58 U" v0 s# g( Q$ J
6& _6 X; V1 k' Y5 o |4 b, ~
7
0 A* e: d. `; q9 r# Y83 a6 y0 t* ^! h
9
& R7 T5 X2 K; S109 k( Y4 v7 E2 e" v5 M
11 f5 R9 [9 ~/ T' Y
12
" u( v, ]/ s |9 J% t0 p' [/ D0 h13) a5 a/ H- E. e+ n/ d( [4 c: r8 b
-t 指定配置表' }. _$ G) ~( y& e2 j$ _# {8 l
-A, ––append 将规则添加到链中(最后)。
# p/ j/ ^' T5 K! m" K( d-I, ––insert 将规则添加到给定位置的链中。
; a5 V& r! i- j+ V5 J$ z: T-C, ––check 寻找符合链条要求的规则。7 \& b- j7 G: [ @" w9 b
-D, ––delete 从链中删除指定的规则。( I3 o% H+ U4 j% c3 x
-F, ––flush 删除对应表的所有规则,慎重使用。
3 D5 N& @. _0 P ?" u-L, ––list 连锁显示所有规则。 S7 r, T f4 z# j) h0 ~% X$ [
-v, ––verbose 使用列表选项时显示更多信息。
* L' a P( j' I7 z8 l1 u" S-P, --policy 设置链的默认策略(policy)
+ R2 \& `- G7 c3 X/ F-N, --new 创建用户自定义链
& A9 e# l) X8 K8 U-X, --delete-chain 删除用户自定义链
& H7 c. j7 }3 Y, \1 U- W-E, --rename-chain 重命名用户自定义链& x& c7 ~8 U0 p! G2 S
-j target 决定符合条件的包到何处去,target模式很多
* r) J: Y" H6 T, L, S |
|