Linux端口映射
Linux端口映射可以通过一系列步骤实现,让PC A的发源端口流量被转发到PC B的端口。首先,做端启用IP转发功能,口转口转通过修改`/etc/sysctl.conf`文件中的发源`net.ipv4.ip_forward`设置为1。接着,做端打卡挑战源码2020停止并清空iptables服务,口转口转然后添加NAT规则,发源包括PREROUTING阶段的做端DNAT(将外网请求定向到内网IP)和POSTROUTING阶段的SNAT(对外网响应进行源地址转换)。FORWARD规则确保内外网之间的口转口转双向通信。规则设置完成后,发源保存更改,做端eworker源码并重新启动iptables服务以应用新规则。口转口转
在`/proc/net/ip_conntrack`文件中,发源可以看到流量的做端流向,确认包的传输情况。总的来说,Linux端口映射的过程涉及配置文件、iptables服务管理和规则设置,以实现内外网络之间的端口映射和数据传输。
Linux系统如何使用iptables进行本地端口转发?
在工作环境中接触到iptables有时候需要进行端口转发功能,例如我本机不开放那些端口的,但可以使用它来进行转发到使用的forwardref 源码端口上。下面小编给大家介绍一下如何使用iptables进行本地端口转发。希望对大家有所帮助 。1、首先登陆我们的内网服务器,工作机不能随便拿来用的。
2、再查看一下我们系统里当前使用的端口情况
3、从上图可以查看到我们系统里边的端口和是使用的。
下面我开启一下系统的ip转发功能:echo 1 /proc/sys/net/ipv4/ip_forward
4、我们也可以通过编辑 /etc/sysctl.conf文件来启用ip转发,然后再使用sysctl命令生效。delayedwork源码
5、例如我们将连接服务器 端口的连接都转发到端口上面去,可以使用下面的命令
iptables -t nat -A PREROUTING -p tcp -i eth0 -d ... --dport -j DNAT --to ...:
6、这样就可以实现在外面也可以通过端口连接ssh了。其实我们的端口是在系统里没有开的,但通过转发就可以使用了。
7、以上只是使用了在外面的情况,但如果在服务器里边是使用不到端口的。
8、这里我们还可以在里边进行设置本地转发。ch源码
9、再从本地进行测试,也是可以连接了,虽然端口是没有开启的。
注意事项:
iptables转发功能需要系统的支持才行,如果系统不开启,即使设置了也没有用。
Iptables 端å£è½¬å port forward
Linux ä¸é ç½®iptables å®ç°ç«¯å£è½¬åãä»ç½å¡enp8s0 è¿ï¼ ä»ç½å¡enp8s0_priv_mac åºã
port -->...1:
ip_base="..."
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
sleep 1
ip=$(ip -f inet -o addr show enp8s0|cut -d\ -f 7 | cut -d/ -f 1 | head -n 1)
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -t nat -A POSTROUTING -o enp8s0_priv_mac -j MASQUERADE
iptables -A INPUT -i enp8s0 -j ACCEPT
iptables -A FORWARD -i enp8s0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -t nat -A PREROUTING -i enp8s0 -p tcp -d { ip_base}1:"
iptables -t nat -A PREROUTING -i enp8s0 -p udp -d { ip_base}1:"
iptables -t nat -A OUTPUT -o lo -p tcp -d { ip_base}1:"
iptables -t nat -A OUTPUT -o lo -p udp -d { ip_base}1:"
linux中nginx如何通过pany.com: oracle@host-c.prod.mycompany.com -N
现在解释一下上面的命令:
参数-L
表示在本地开启监听的端口,后面紧跟的参数格式为::,表示将本地的端口转发到远程主机D的端口。
orainst@host-c.prod.mycompany.com
这个参数指定要使用ssh登录的主机以及登录的用户名,这里使用的主机和前一个参数中的主机必须是在同一个网域当中,并且能相互访问,当然也可以是同一个机器。
参数-N
不执行远程的命令。这个参数在这里是可选的。
现在在主机A上面运行上面的命令之后输入正确的密码,然后我们先登录主机A查看一下当前端口的状态:
复制代码
代码如下:
oracle@host-a[orcl]:~$ netstat -natp|grep
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 .0.0.1: 0.0.0.0:* LISTEN /ssh
tcp 0 0 ::1: :::* LISTEN /ssh
可以看到在主机A上已经存在端口准备随时接受连接了,不过要注意的是这里监听的网络是.0.0.1(::1),也就是说这种连接仅限于本地操作。
接下来就是配置下TNSNAMES了,配置如下:
复制代码
代码如下:
orcl=
(DESCRIPTION=
(ENABLE=BROKEN)
(ADDRESS_LIST=
(FAILOVER=ON)
(LOAD_BALANCE=YES)
(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=))
)
(CONNECT_DATA=
(SID=orcl)
)
)
然后tnsping测试一下:
复制代码
代码如下:
oracle@host-a[orcl]:~$ tnsping orcl
TNS Ping Utility for Linux: Version .1.0.7.0 - Production on -JUL- ::
Copyright (c) , , Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (FAILOVER=ON) (LOAD_BALANCE=YES) (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=))) (CONNECT_DATA= (SID=orcl)))
OK ( msec)
大功告成。
top任务二:反向端口转发
因为网域Prod不能以任何的方式访问网域Office,假设这两个网域所处的物理位置完全的不同,那当那一天处于网域Prod的时候又想操作处于网域Office中的主机A,那怎么办呢?这就是要用到反向端口转发的时候了。
反向端口转发的基本思想就是从主机A建立到主机C的ssh连接的同时在主机C上打开一个端口可以反向连接到主机B上面的某一个端口,当然从主机控制上面来说连接到主机B的(ssh端口)是最实惠的了,现在要做的就是在主机A上面运行如下的命令:
复制代码
代码如下:
ssh -R :localhosthost-b.office.mycompany.com: oracle@host-c.prod.mycompany.com -N
同样的,先解释下上面的命令:
参数-R
创建一个反向的端口转发,后面紧跟的参数格式为 ::,这里监听的端口是,反向连接要到C主机原来根本无法访问的主机B的端口。
oracle@host-c.prod.mycompany.com
这个参数指定要使用ssh登录的主机以及登录的用户名,这里使用的主机和前一个参数中的主机必须是在同一个网域当中,并且能相互访问,当然也可以是同一个机器。
参数-N
不执行远程的命令。这个参数在这里是可选的。
在主机A上面执行上面的命令成功之后就可以登录到主机C检查一下效果了,首先是检查端口的开发状态:
复制代码
代码如下:
oracle@host-c:~$ netstat -natp |grep
(No info could be read for "-p": geteuid()= but you should be root.)
tcp 0 0 .0.0.1: 0.0.0.0:* LISTEN -
tcp6 0 0 ::1: :::* LISTEN -
然后就是测试下这个端口的可用性,执行如下的命令:
复制代码
代码如下:
oracle@host-c:~$ ssh -p oracle@localhost
Password:
Last login: Mon Jul 5 :: from ...
oracle@host-b.office$ hostname
host-b.office.mycompany.com
oracle@host-b.office$
至此现在已经成功的使用唯一开放的ssh端口建立了一个本来是完全不可能的连接。这种方法是非常有用的,具体在什么时候用就靠大家的发挥了。
top任务三:动态端口转发
动态端口转发实际上是建立一个ssh加密的SOCKS4/5代理通道,任何支持SOCKS4/5协议的程序都可以使用这个加密的通道来进行代理访问,现在这种方法最常用的地方就是**了,使用的方法也很简单,命令如下:
复制代码
代码如下:
ssh -D username@proxyhost.mycompany.com -N
命令解释:
参数-D
建立一个动态的SOCKS4/5的代理通道,紧接着的是本地监听的端口号。
username@proxyhost.mycompany.com
这个参数指定要使用ssh登录的主机以及登录的用户名,这里使用的主机和前一个参数中的主机必须是在同一个网域当中,并且能相互访问,当然也可以是同一个机器。
参数-N
不执行远程的命令。这个参数在这里是可选的。
因为这种方法对于办公方面没有什么帮助,所以也就不再多说。
延伸阅读
SSH Tutorial for Linux Secure Shell Port forwarding2024-12-23 23:56
2024-12-23 23:51
2024-12-23 22:25
2024-12-23 21:59
2024-12-23 21:44